一个简单的文本编辑器。(是在DEV C++下写的)//头文件//h#define CM_FILE_SAVEAS 9072#define CM_FILE_EXIT 9071#define CM_FILE_OPEN 9070#define CM_ABOUT 9069//主程序文件///*****************************************************/#include #pragma hdrstop#include "Mh"static char g_szClassName[] = "MyWindowClass";static HINSTANCE g_hInst = NULL;#define IDC_MAIN_TEXT 1001BOOL LoadFile(HWND hEdit, LPSTR pszFileName){ HANDLE hFile; BOOL bSuccess = FALSE; hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0); if(hFile != INVALID_HANDLE_VALUE) { DWORD dwFileSize; dwFileSize = GetFileSize(hFile, NULL); if(dwFileSize != 0xFFFFFFFF) { LPSTR pszFileText; pszFileText = (LPSTR)GlobalAlloc(GPTR, dwFileSize + 1); if(pszFileText != NULL) { DWORD dwRead; if(ReadFile(hFile, pszFileText, dwFileSize, &dwRead, NULL)) { pszFileText[dwFileSize] = 0; // Null terminator if(SetWindowText(hEdit, pszFileText)) bSuccess = TRUE; // It worked! } GlobalFree(pszFileText); } } CloseHandle(hFile); } return bSuccess;}BOOL SaveFile(HWND hEdit, LPSTR pszFileName){ HANDLE hFile; BOOL bSuccess = FALSE; hFile = CreateFile(pszFileName, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if(hFile != INVALID_HANDLE_VALUE) { DWORD dwTextLength; dwTextLength = GetWindowTextLength(hEdit); if(dwTextLength > 0)// No need to bother if there's no { LPSTR pszText; pszText = (LPSTR)GlobalAlloc(GPTR, dwTextLength + 1); if(pszText != NULL) { if(GetWindowText(hEdit, pszText, dwTextLength + 1)) { DWORD dwWritten; if(WriteFile(hFile, pszText, dwTextLength, &dwWritten, NULL)) bSuccess = TRUE; } GlobalFree(pszText); } } CloseHandle(hFile); } return bSuccess;}BOOL DoFileOpenSave(HWND hwnd, BOOL bSave){ OPENFILENAME ofn; char szFileName[MAX_PATH]; ZeroMemory(&ofn, sizeof(ofn)); szFileName[0] = 0; lStructSize = sizeof(ofn); hwndOwner = hwnd; lpstrFilter = "Text Files (*xt)\0*xt\0All Files (**)\0**\0\0"; lpstrFile = szFileName; MaxFile = MAX_PATH; lpstrDefExt = "txt"; if(bSave) { Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT; if(GetSaveFileName(&ofn)) { if(!SaveFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName)) { MessageBox(hwnd, "Save file ", "Error", MB_OK | MB_ICONEXCLAMATION); return FALSE; } } } else { Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; if(GetOpenFileName(&ofn)) { if(!LoadFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName)) { MessageBox(hwnd, "Load of file ", "Error", MB_OK | MB_ICONEXCLAMATION); return FALSE; } } } return TRUE;}LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam){ switch(Message) { case WM_CREATE: CreateWindow("EDIT", "", WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE | ES_WANTRETURN, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_MAIN_TEXT, g_hInst, NULL); SendDlgItemMessage(hwnd, IDC_MAIN_TEXT, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0)); break; case WM_SIZE: if(wParam != SIZE_MINIMIZED) MoveWindow(GetDlgItem(hwnd, IDC_MAIN_TEXT), 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE); break; case WM_SETFOCUS: SetFocus(GetDlgItem(hwnd, IDC_MAIN_TEXT)); break; case WM_COMMAND: switch(LOWORD(wParam)) { case CM_FILE_OPEN: DoFileOpenSave(hwnd, FALSE); break; case CM_FILE_SAVEAS: DoFileOpenSave(hwnd, TRUE); break; case CM_FILE_EXIT: PostMessage(hwnd, WM_CLOSE, 0, 0); break; case CM_ABOUT: MessageBox (NULL, "File Editor for Windows !\n Using the Win32 API" , "A", 0); } break; case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, Message, wParam, lParam); } return 0;}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ WNDCLASSEX WndClass; HWND hwnd; MSG Msg; g_hInst = hInstance; WndCbSize = sizeof(WNDCLASSEX); WndCstyle = 0; WndClpfnWndProc = WndProc; WndCbClsExtra = 0; WndCbWndExtra = 0; WndChInstance = g_hInst; WndChIcon = LoadIcon(NULL, IDI_APPLICATION); WndChCursor = LoadCursor(NULL, IDC_ARROW); WndChbrBackground = (HBRUSH)(COLOR_WINDOW+1); WndClpszMenuName = "MAINMENU"; WndClpszClassName = g_szClassName; WndChIconSm = LoadIcon(NULL, IDI_APPLICATION); if(!RegisterClassEx(&WndClass)) { MessageBox(0, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL); return 0; } hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, g_szClassName, "A File Program", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 320, 240, NULL, NULL, g_hInst, NULL); if(hwnd == NULL) { MessageBox(0, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL); return 0; } ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); while(GetMessage(&Msg, NULL, 0, 0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } return MwParam;}
新手路过
求一个简单的文本编辑器
一个简单的文本编辑器。(是在DEV C++下写的)//头文件//h#define CM_FILE_SAVEAS 9072#define CM_FILE_EXIT 9071#define CM_FILE_OPEN 9070#define CM_ABOUT 9069//主程序文件///*****************************************************/#include #pragma hdrstop#include "Mh"static char g_szClassName[] = "MyWindowClass";static HINSTANCE g_hInst = NULL;#define IDC_MAIN_TEXT 1001BOOL LoadFile(HWND hEdit, LPSTR pszFileName){ HANDLE hFile; BOOL bSuccess = FALSE; hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0); if(hFile != INVALID_HANDLE_VALUE) { DWORD dwFileSize; dwFileSize = GetFileSize(hFile, NULL); if(dwFileSize != 0xFFFFFFFF) { LPSTR pszFileText; pszFileText = (LPSTR)GlobalAlloc(GPTR, dwFileSize + 1); if(pszFileText != NULL) { DWORD dwRead; if(ReadFile(hFile, pszFileText, dwFileSize, &dwRead, NULL)) { pszFileText[dwFileSize] = 0; // Null terminator if(SetWindowText(hEdit, pszFileText)) bSuccess = TRUE; // It worked! } GlobalFree(pszFileText); } } CloseHandle(hFile); } return bSuccess;}BOOL SaveFile(HWND hEdit, LPSTR pszFileName){ HANDLE hFile; BOOL bSuccess = FALSE; hFile = CreateFile(pszFileName, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if(hFile != INVALID_HANDLE_VALUE) { DWORD dwTextLength; dwTextLength = GetWindowTextLength(hEdit); if(dwTextLength > 0)// No need to bother if there's no { LPSTR pszText; pszText = (LPSTR)GlobalAlloc(GPTR, dwTextLength + 1); if(pszText != NULL) { if(GetWindowText(hEdit, pszText, dwTextLength + 1)) { DWORD dwWritten; if(WriteFile(hFile, pszText, dwTextLength, &dwWritten, NULL)) bSuccess = TRUE; } GlobalFree(pszText); } } CloseHandle(hFile); } return bSuccess;}BOOL DoFileOpenSave(HWND hwnd, BOOL bSave){ OPENFILENAME ofn; char szFileName[MAX_PATH]; ZeroMemory(&ofn, sizeof(ofn)); szFileName[0] = 0; lStructSize = sizeof(ofn); hwndOwner = hwnd; lpstrFilter = "Text Files (*xt)\0*xt\0All Files (**)\0**\0\0"; lpstrFile = szFileName; MaxFile = MAX_PATH; lpstrDefExt = "txt"; if(bSave) { Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT; if(GetSaveFileName(&ofn)) { if(!SaveFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName)) { MessageBox(hwnd, "Save file ", "Error", MB_OK | MB_ICONEXCLAMATION); return FALSE; } } } else { Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; if(GetOpenFileName(&ofn)) { if(!LoadFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName)) { MessageBox(hwnd, "Load of file ", "Error", MB_OK | MB_ICONEXCLAMATION); return FALSE; } } } return TRUE;}LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam){ switch(Message) { case WM_CREATE: CreateWindow("EDIT", "", WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE | ES_WANTRETURN, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_MAIN_TEXT, g_hInst, NULL); SendDlgItemMessage(hwnd, IDC_MAIN_TEXT, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0)); break; case WM_SIZE: if(wParam != SIZE_MINIMIZED) MoveWindow(GetDlgItem(hwnd, IDC_MAIN_TEXT), 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE); break; case WM_SETFOCUS: SetFocus(GetDlgItem(hwnd, IDC_MAIN_TEXT)); break; case WM_COMMAND: switch(LOWORD(wParam)) { case CM_FILE_OPEN: DoFileOpenSave(hwnd, FALSE); break; case CM_FILE_SAVEAS: DoFileOpenSave(hwnd, TRUE); break; case CM_FILE_EXIT: PostMessage(hwnd, WM_CLOSE, 0, 0); break; case CM_ABOUT: MessageBox (NULL, "File Editor for Windows !\n Using the Win32 API" , "A", 0); } break; case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, Message, wParam, lParam); } return 0;}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ WNDCLASSEX WndClass; HWND hwnd; MSG Msg; g_hInst = hInstance; WndCbSize = sizeof(WNDCLASSEX); WndCstyle = 0; WndClpfnWndProc = WndProc; WndCbClsExtra = 0; WndCbWndExtra = 0; WndChInstance = g_hInst; WndChIcon = LoadIcon(NULL, IDI_APPLICATION); WndChCursor = LoadCursor(NULL, IDC_ARROW); WndChbrBackground = (HBRUSH)(COLOR_WINDOW+1); WndClpszMenuName = "MAINMENU"; WndClpszClassName = g_szClassName; WndChIconSm = LoadIcon(NULL, IDI_APPLICATION); if(!RegisterClassEx(&WndClass)) { MessageBox(0, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL); return 0; } hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, g_szClassName, "A File Program", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 320, 240, NULL, NULL, g_hInst, NULL); if(hwnd == NULL) { MessageBox(0, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL); return 0; } ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); while(GetMessage(&Msg, NULL, 0, 0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } return MwParam;}
这是一个文本编辑器的源码:自己用MASM编译一下,肯定能用red_chr macro ;读取字符宏定义 mov ah,0 int 16hendmstring macro p1 ;输入字符光标 mov ah,9 lea dx,p1 int 21hendmwin macro opr1,opr2,opr3,opr4,opr5,opr6 ;建立窗口 mov ah,06h mov al,opr1 mov bh,opr2 mov ch,opr3 mov cl,opr4 mov dh,opr5 mov dl,opr6 int 10hendmpos_curse macro op1,op2,op3 ;定义光标位置 mov ah,2 mov bh,op1 mov dh,op2 mov dl,op3 int 10hendmpos_get macro ;显示光标位置 mov ah,03h mov bh,0 int 10hendmdata segment ;定义数据段 menu db 'File Edit Help $' mass_1 db 'F1 Active file F10 Active help','$' manu_1 db ' New ',13,10,'$' manu_2 db ' Open ',13,10,'$' manu_3 db ' Save ',13,10,'$' manu_4 db ' Save as ',13,10,'$' manu_5 db ' Exit ','$' handle dw ? message1 db ' Please input file name:','$' message2 db ' Please input save file name:','$' message3 db ' Please input open file name:','$' message4 db ' ***The file is not save! Save it now? (Y/N)***: ','$' path db 50 dup(0),'$' buffer db 2000 dup(?) bak db 3850 dup(0) line db ? row db ? char db ? help_mas1 db ' welcome use editor! $' ;帮助内容 help_mas2 db 'please the first active help! $' help_mas3 db 'good lucky!! $' help_mas4 db '==========================================================$' help_mas5 db 'Press F1 to active $' help_mas6 db 'You can use DOWN cursor key to choose the fuction $' help_mas7 db 'Press F10 to show the help Press Esc To Quit$' date db 'today ??/??/','$' ;调用日期 hanglie db '???//???','$' ;行//列data endscode segment main proc far ;主程序 assume cs:code,ds:datastart: push ds sub ax,ax push ax mov ax,data mov ds,ax call wind call edit retmain endpwind proc near ;创建窗口子程序 win 0,3eh,1,0,24,79 ;定义窗口背景 win 1,1fh,0,0,0,79 win 0,1fh,24,0,24,79show: ;显示菜单位置及内容 pos_curse 0,0,1 mov ah,9 lea dx,menu int 21hshow_2: ;显示状态栏位置及内容 pos_curse 0,24,1 mov ah,9 lea dx,mass_1 int 21h call win3 call win4 pos_curse 0,1,0 mov row,dh mov line,dlwind endpedit proc nearchar_get: ;读字符 call comcom proc near ;定义功能键 pos_get mov row,dh mov line,dlfirst: pos_curse 0,row,linej00: mov ah,0 int 16h ;从键盘读字符 ah=扫描码 al=字符码 push ax lea dx,buffer mov buffer[bx],al inc bx cmp ah,48h ;上 jz up_1 cmp ah,50h ;下 jz down_1 cmp ah,4bh ;左 jz left cmp ah,4dh ;右 jz right cmp ah,1ch ;回车 jz enter_1 call fuc_key mov ah,2 mov dl,al int 21h pop ax call menu_show jmp j6down_1: jmp downenter_1: jmp enter_2up_1: jmp upleft: ;光标左移 pos_get mov row,dh mov dl,line cmp line,0 jnz direct mov line,79 dec row cmp row,0 je stop2 jmp firststop2: mov row,1 jmp firstdirect: dec line call win4 ;显示光标位置 jmp firstright: ;光标右移 pos_get mov row,dh mov dl,line cmp line,79 jnz direct2 mov line,0 inc row cmp row,24 je returns1 jmp firstdirect2: inc line call win4 jmp firstenter_2: jmp enterup: ;上移光标 pos_get mov row,dh mov dl,line dec row cmp row,0 je stop1 call win4 jmp firststop1: mov row,1 jmp firstdown: ;下移光标 pos_get mov row,dh mov dl,line inc row cmp row,24 je stop3 call win4 jmp firststop3: mov row,23 jmp firstreturns1: jmp returnsenter: ;回车换行 pos_get mov row,dh mov line,dl inc row cmp row,24 je returns mov line,0 call win4 jmp firstreturns: mov row,24 mov line,0 jmp firstj6: retcom endpfuc_key proc near ;功能键子程序 next: cmp ah,47h ;home jz home cmp ah,4fh ;end jz _end cmp ah,0eh ;backspace jz bak_sp cmp ah,53h jz del cmp ah,44h ;F10 jz help_0 rethelp_0: call helphome: ;HOME键的功能 pos_get mov row,dh mov line,0 call win4 jmp first _end: ;END键的功能 pos_get mov row,dh mov line,79 call win4 jmp firstbak_sp: ;退格键的功能 pos_get mov row,dh mov line,dl cmp line,0 je stop dec line jmp abstop: mov line,0 ab: pos_get 0,row,line mov ah,2 mov dl,00 int 21h call win4 jmp firstdel: ;DEL删除 pos_get mov row,dh mov line,dl dec line pos_get 0,row,line mov ah,2 mov dl,00 int 21h inc line call win4 jmp firstcm: cmp line,00 jz pos_cmpos_cm: pos_curse 0,0,0 jmp firsthelp proc near ;显示帮助信息 call savedisplay ;显示帮助信息每行的位置 pos_get push dx win 0,57h,4,5,21,70 pos_curse 0,6,25 string help_mas1 pos_curse 0,8,11 string help_mas2 pos_curse 0,10,11 string help_mas3 pos_curse 0,12,11 string help_mas4 pos_curse 0,14,11 string help_mas5 pos_curse 0,16,11 string help_mas6 pos_curse 0,18,11 string help_mas7 pop dx pos_curse 0,dh,dl mov ah,0 int 16h cmp ah,36h ;F10 active help jnz cls call helpcls: win 0,1eh,9,10,13,70 ;清屏 call backdisplayhelp endp fuc_key endpmenu_show proc near ;显示菜单 call savedisplay push cx cmp ah,3bh ;F1功能 jz menu_sh jmp char_getmenu_sh: ;定义菜单的背景字体颜色 pos_get push dx win 0,06h,2,1,7,11 win 0,65h,1,0,6,10 pos_curse 0,1,0 string manu_1 string manu_2 string manu_3 string manu_4 string manu_5 pop dx dec dl pos_curse 0,dh,dlcopmar: red_chr cmp ah,50h jz manu_n jmp manu_hidmanu_hid: ;菜单隐藏 win 0,1eh,1,1,7,11 call backdisplay jmp char_getmanu_n: ;开始定义各个菜单项 win 0,65h,5,1,5,8 pos_curse 0,5,0 string manu_5 win 0,15h,1,1,1,8 pos_curse 0,1,0 string manu_1 red_chr cmp ah,48h je manu_n cmp al,0dh jz new_1 cmp ah,50h je manu_o jmp manu_hidmanu_n0: jmp manu_nmanu_o: win 0,65h,1,1,1,8 pos_curse 0,1,0 string manu_1 win 0,15h,2,1,2,8 pos_curse 0,2,0 string manu_2 red_chr cmp ah,48h je manu_o cmp al,0dh jz open_1 cmp ah,50h je manu_s jmp manu_hidnew_1: jmp new_2manu_s: win 0,65h,2,1,2,8 pos_curse 0,2,0 string manu_2 win 0,15h,3,1,3,8 pos_curse 0,3,0 string manu_3 red_chr cmp al,0dh jz save_1 cmp ah,48h je manu_s cmp ah,50h je manu_a jmp manu_hidopen_1: jmp open_2manu_n1: jmp manu_nmanu_a: win 0,65h,3,1,3,8 pos_curse 0,3,0 string manu_3 win 0,15h,4,1,4,8 pos_curse 0,4,0 string manu_4 red_chr cmp ah,1ch jz save_2 cmp ah,48h je manu_a cmp ah,50h je manu_e jmp manu_hidmanu_n2: jmp manu_n1new_2: jmp newsave_1: call savesave_2: call saveasmanu_e: win 0,65h,4,1,4,8 pos_curse 0,4,0 string manu_4 win 0,15h,5,1,5,8 pos_curse 0,5,0 string manu_5 red_chr cmp ah,50h je manu_n2 cmp ah,48h je manu_e cmp ah,1ch je exit jmp manu_hidexit: call backdisplay win 0,07h,15,10,17,61 win 0,24h,14,9,16,60 mov dh,15 mov dl,9 mov bh,0 mov ah,2 int 10h lea dx,message4 mov ah,9 int 21h mov ah,1 int 21h cmp al,79h jnz q call quittq: cmp al,6eh jz quitquit: win 0,07h,0,0,24,79 pos_curse 0,0,0 mov ah,4ch int 21h retmenu_show endpnew proc near ;新建文件 pos_get push dx call backdisplay win 0,07h,15,10,17,61 win 0,24h,14,9,16,60, mov dh,15 mov dl,9 mov bh,0 mov ah,2 int 10h lea dx,message1 cmp al,0dh mov ah,9 int 21h mov bx,0all: mov ah,1 int 21h cmp al,0dh je alll mov path[bx],al inc bx jmp allalll: win 0,3eh,15,9,17,61 pop dx pos_curse 0,dh,dl lea dx,path mov ah,3ch mov cx,00 int 21h mov handle,ax mov bx,ax mov ah,3eh int 21h win 0,3eh,1,0,23,79 mov dh,1 mov dl,0 mov bh,0 mov ah,2 int 10h jmp char_getnew endpopen_2: jmp opensaveas proc near ;另存为文件 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; win 0,3eh,1,0,6,10 call backdisplay win 0,07h,15,10,17,61 win 0,24h,14,9,16,60, mov dh,15 mov dl,9 mov bh,0 mov ah,2 int 10h lea dx,message2 mov ah,9 int 21h mov bx,0bll: mov ah,1 int 21h cmp al,0dh je blll mov path[bx],al inc bx jmp bllblll: pos_get push dx win 0,3eh,1,0,23,79 call backdisplay pop dx pos_curse 0,dh,dl lea dx,path mov ah,3ch mov cx,00 int 21h mov handle,ax lea dx,buffer mov bx,handle mov cx,2000 mov ah,40h int 21h mov bx,handle mov ah,3eh int 21h call backdisplay jmp char_getsaveas endpopen proc near ;打开文件 call backdisplay win 0,07h,15,10,17,61 win 0,24h,14,9,16,60 mov dh,15 mov dl,9 mov bh,0 mov ah,2 int 10h lea dx,message3 mov ah,9 int 21h mov bx,0cll: mov ah,1 int 21h cmp al,13 je clll mov path[bx],al inc bx jmp cllclll: win 0,3eh,1,0,23,79 lea dx,path mov ah,3dh mov al,0 int 21h mov handle,ax lea dx,buffer mov bx,handle mov cx,2000 mov ah,3fh int 21h win 0,3eh,1,23,1,79 mov dh,1 mov dl,0 mov bh,0 mov ah,2 int 10h mov cx,1000 sub bx,bxreplay: mov dl,buffer[bx] inc bx mov ah,2 int 21h loop replay mov bx,handle mov ah,3eh int 21h mov dh,1 mov dl,0 mov bh,0 mov ah,2 int 10h mov cx,10 mov bx,0cleapath_3: mov bl,0 mov path[bx],bl loop cleapath_3 jmp char_getopen endpsave proc near ;保存文件 pos_get push dx win 0,3eh,1,0,6,10 call backdisplay mov ah,path cmp ah,21h jl j_3 jmp j_4j_3: win 0,07h,15,10,17,61 win 0,24h,14,9,16,60, mov dh,15 mov dl,9 mov bh,0 mov ah,2 int 10h lea dx,message2 mov ah,9 int 21h mov bx,0dll: mov ah,1 int 21h cmp al,0dh je dlll mov path[bx],al inc bx jmp dlldlll: win 0,3eh,1,0,23,79 pop dx pos_curse 0,dh,dl j_4: lea dx,path mov ah,3ch mov cx,00 int 21h mov handle,ax lea dx,buffer mov bx,handle mov cx,2000 mov ah,40h int 21h mov bx,handle mov ah,3eh int 21h call backdisplay jmp char_getsave endpsavedisplay proc near push ax push bx push cx push dx push ds mov ax,0002h int 33h mov bx,0d mov cx,3840dloop1: mov ax,0b800h mov ds,ax mov dl,ds:[bx] mov ax,data mov ds,ax mov bak[bx],dl inc bx loop loop1 mov ax,0001h int 33h pop ds pop dx pop cx pop bx pop axsavedisplay endpbackdisplay proc near push ax push bx push cx push dx push ds mov bx,0d mov cx,3840dloop11: mov ax,data mov ds,ax mov dl,bak[bx] mov ax,0b800h mov ds,ax mov ds:[bx],dl inc bx loop loop11 pop ds pop dx pop cx pop bx pop ax retbackdisplay endpquitt proc near ;退出 call backdisplay win 0,07h,15,10,17,61 win 0,24h,14,9,16,60, mov dh,15 mov dl,9 mov bh,0 mov ah,2 int 10h lea dx,message2 mov ah,9 int 21h mov bx,0qll: mov ah,1 int 21h cmp al,0dh je qlll mov path[bx],al inc bx jmp qllqlll: win 0,07h,15,10,17,61 win 0,3eh,14,9,16,60 call backdisplay lea dx,path mov ah,3ch mov cx,00 int 21h mov handle,ax lea dx,buffer mov bx,handle mov cx,2000 mov ah,40h int 21h mov bx,handle mov ah,3eh int 21h call backdisplay win 0,07h,0,0,24,79 mov ah,4ch int 21h retquitt endpedit endp win3 proc near ;显示日期 mov ah,2ah int 21h mov bl,10d mov ax,0 mov al,dh div bl add ax,3030h mov [date+6],al mov [date+7],ah mov ax,0 mov al,dl div bl add ax,3030h mov [date+9],al mov [date+10],ah win 0,1dh,0,67,0,79 pos_curse 0,0,67 mov dx,offset date mov ah,09h int 21h retwin3 endpwin4 proc near ;显示行//列 mov ah,03h mov bh,0 int 10h mov bl,100d mov bh,10d mov ax,0 mov al,dh div bl add al,30h mov [hanglie+0],al mov al,ah mov ah,0 div bh add ax,3030h mov [hanglie+1],al mov [hanglie+2],ah mov ax,0 mov al,dl div bl add al,30h mov [hanglie+5],al mov al,ah mov ah,0 div bh add ax,3030h mov [hanglie+6],al mov [hanglie+7],ah win 0,1dh,24,60,24,70 pos_curse 0,24,61 mov dx,offset hanglie mov ah,09h int 21h retwin4 endpcode ends end start ;结束 文档我也不会写,不好意思还是你自己搞定吧
有,,不少呢。。。
呵呵,老师的吧,自己不会编写抄到答案可惜不知道怎么用。。。笨蛋你不会看源代码啊??getchar()什么意思你不会不知道吧???
什么叫C语言 请问一下 有那些语言 请告诉我好吗 ?我急着要看 需要的话传的我的QQ空间里面 我的QQ是59578578谢谢 你
一个简单的文本编辑器。(是在DEV C++下写的)//头文件//h#define CM_FILE_SAVEAS 9072#define CM_FILE_EXIT 9071#define CM_FILE_OPEN 9070#define CM_ABOUT 9069//主程序文件///*****************************************************/#include #pragma hdrstop#include "Mh"static char g_szClassName[] = "MyWindowClass";static HINSTANCE g_hInst = NULL;#define IDC_MAIN_TEXT 1001BOOL LoadFile(HWND hEdit, LPSTR pszFileName){ HANDLE hFile; BOOL bSuccess = FALSE; hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0); if(hFile != INVALID_HANDLE_VALUE) { DWORD dwFileSize; dwFileSize = GetFileSize(hFile, NULL); if(dwFileSize != 0xFFFFFFFF) { LPSTR pszFileText; pszFileText = (LPSTR)GlobalAlloc(GPTR, dwFileSize + 1); if(pszFileText != NULL) { DWORD dwRead; if(ReadFile(hFile, pszFileText, dwFileSize, &dwRead, NULL)) { pszFileText[dwFileSize] = 0; // Null terminator if(SetWindowText(hEdit, pszFileText)) bSuccess = TRUE; // It worked! } GlobalFree(pszFileText); } } CloseHandle(hFile); } return bSuccess;}BOOL SaveFile(HWND hEdit, LPSTR pszFileName){ HANDLE hFile; BOOL bSuccess = FALSE; hFile = CreateFile(pszFileName, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if(hFile != INVALID_HANDLE_VALUE) { DWORD dwTextLength; dwTextLength = GetWindowTextLength(hEdit); if(dwTextLength > 0)// No need to bother if there's no { LPSTR pszText; pszText = (LPSTR)GlobalAlloc(GPTR, dwTextLength + 1); if(pszText != NULL) { if(GetWindowText(hEdit, pszText, dwTextLength + 1)) { DWORD dwWritten; if(WriteFile(hFile, pszText, dwTextLength, &dwWritten, NULL)) bSuccess = TRUE; } GlobalFree(pszText); } } CloseHandle(hFile); } return bSuccess;}BOOL DoFileOpenSave(HWND hwnd, BOOL bSave){ OPENFILENAME ofn; char szFileName[MAX_PATH]; ZeroMemory(&ofn, sizeof(ofn)); szFileName[0] = 0; lStructSize = sizeof(ofn); hwndOwner = hwnd; lpstrFilter = "Text Files (*xt)\0*xt\0All Files (**)\0**\0\0"; lpstrFile = szFileName; MaxFile = MAX_PATH; lpstrDefExt = "txt"; if(bSave) { Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT; if(GetSaveFileName(&ofn)) { if(!SaveFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName)) { MessageBox(hwnd, "Save file ", "Error", MB_OK | MB_ICONEXCLAMATION); return FALSE; } } } else { Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; if(GetOpenFileName(&ofn)) { if(!LoadFile(GetDlgItem(hwnd, IDC_MAIN_TEXT), szFileName)) { MessageBox(hwnd, "Load of file ", "Error", MB_OK | MB_ICONEXCLAMATION); return FALSE; } } } return TRUE;}LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam){ switch(Message) { case WM_CREATE: CreateWindow("EDIT", "", WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE | ES_WANTRETURN, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hwnd, (HMENU)IDC_MAIN_TEXT, g_hInst, NULL); SendDlgItemMessage(hwnd, IDC_MAIN_TEXT, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(TRUE, 0)); break; case WM_SIZE: if(wParam != SIZE_MINIMIZED) MoveWindow(GetDlgItem(hwnd, IDC_MAIN_TEXT), 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE); break; case WM_SETFOCUS: SetFocus(GetDlgItem(hwnd, IDC_MAIN_TEXT)); break; case WM_COMMAND: switch(LOWORD(wParam)) { case CM_FILE_OPEN: DoFileOpenSave(hwnd, FALSE); break; case CM_FILE_SAVEAS: DoFileOpenSave(hwnd, TRUE); break; case CM_FILE_EXIT: PostMessage(hwnd, WM_CLOSE, 0, 0); break; case CM_ABOUT: MessageBox (NULL, "File Editor for Windows !\n Using the Win32 API" , "A", 0); } break; case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, Message, wParam, lParam); } return 0;}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ WNDCLASSEX WndClass; HWND hwnd; MSG Msg; g_hInst = hInstance; WndCbSize = sizeof(WNDCLASSEX); WndCstyle = 0; WndClpfnWndProc = WndProc; WndCbClsExtra = 0; WndCbWndExtra = 0; WndChInstance = g_hInst; WndChIcon = LoadIcon(NULL, IDI_APPLICATION); WndChCursor = LoadCursor(NULL, IDC_ARROW); WndChbrBackground = (HBRUSH)(COLOR_WINDOW+1); WndClpszMenuName = "MAINMENU"; WndClpszClassName = g_szClassName; WndChIconSm = LoadIcon(NULL, IDI_APPLICATION); if(!RegisterClassEx(&WndClass)) { MessageBox(0, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL); return 0; } hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, g_szClassName, "A File Program", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 320, 240, NULL, NULL, g_hInst, NULL); if(hwnd == NULL) { MessageBox(0, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK | MB_SYSTEMMODAL); return 0; } ShowWindow(hwnd, nCmdShow); UpdateWindow(hwnd); while(GetMessage(&Msg, NULL, 0, 0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } return MwParam;}
添加commondialogue和imagelist控件,以下是代码Private Sub form_load()MHeight = 6000MWidth = 9000End SubPrivate Sub Form_Resize()On Error Resume Next '出错处理RichTextBTop = 400RichTextBLeft = 20RichTextBHeight = ScaleHeight - 40RichTextBWidth = ScaleWidth - 40End SubPrivate Sub mnuNew_Click()RichTextBText = "" '清空文本框FileName = "未命名"MCaption = FileNameEnd SubPrivate Sub mnuOpen_Click()CommonDFilter = "文本文档(*xt)|*xt|RTF文档(*f)|*f|所有文件(**)|**"CommonDShowOpenRichTextBText = "" '清空文本框FileName = CommonDFileNameRichTextBLoadFile FileNameMCaption = "文本编辑器:" & FileNameEnd SubPrivate Sub mnuSave_Click()CommonDFilter = "文本文档(*xt)|*xt|RTF文档(*f)|*f|所有文件(**)|**"CommonDShowSaveFileType = CommonDFileTitleFiType = LCase(Right(FileType, 3))FileName = CommonDFileNameSelect Case FiTypeCase "txt"RichTextBSaveFile FileName, rtfTextCase "rtf"RichTextBSaveFile FileName, rtfRTFCase "**"RichTextBSaveFile FileNameEnd SelectMCaption = "文本编辑器:" & FileNameEnd SubPrivate Sub mnuExit_Click()EndEnd SubPrivate Sub mnuCopy_Click()CClearCSetText RichTextBSelTextEnd SubPrivate Sub mnuCut_Click()CClearCSetText RichTextBSelTextRichTextBSelText = ""End SubPrivate Sub mnuPaste_Click()RichTextBSelText = CGetTextEnd SubPrivate Sub mnufont_Click() CommonDFlags = cdlCFBoth '显示设置字体对话框 CommonDShowFont '将选中部分文字的字体设为选择的字体 RichTextBSelFontName = CommonDFontName RichTextBSelFontSize = CommonDFontSize RichTextBSelBold = CommonDFontBold RichTextBSelItalic = CommonDFontItalicEnd SubPrivate Sub ToolBar1_ButtonClick(ByVal Button As MSComctlLButton)On Error Resume NextSelect Case BKeyCase "新建"mnuNew_ClickCase "打开"mnuOpen_ClickCase "保存"mnuSave_ClickCase "复制"mnuCopy_Click
开始-所有程序-附件-画图
ACDSEE PHOTO EDIT
ps大家可能都知道一点吧,ps的全面叫做photoshop是一款专门用于修改照片和制作图片的软件,Photoshop的功能是非常强大的,一些ps的大神更是神乎其技,他们可以把丑的给变成美的,把不存在的事物在ps的帮助下呈现在照片上,而且你还看不出来。当然这只是一小部分人才能做到的高端操作,而且ps一款软件价格是非常的高的,一年大概要三千块左右,而且软件所占空间还非常的大,小编今天就来给大家介绍一款免费的在线图片编辑器,就是迅捷在线图片编辑。我们把需要修改或是制作的图片先保存到电脑上,搜索迅捷在线图片编辑,打开网页就可以编辑修改自己的图片了。点击网页左上角的文件按钮,点击打开按钮,在图片保存的文件夹,选择需要修改的文件添加进网页中。也可以ctrl+o,这是打开文件的快捷键。使用快捷键也可以选择图片添加进网页。图片添加进网页之后,网页的左侧有工具栏,根据自己的需要选择编辑工具,这里我们选择笔刷工具。笔刷工具选择完成后就可以在图片上涂抹想要遮挡的文字或者是其他的内容了。如果只是想要把图片给涂抹一下,到了这一步我们就可以结束了,点击左上角的文件按钮,选择导出为,会出现文件格式。文件可是选择完成之后点击保存就可以选择文件的保存位置,然后就可以把编辑后的图片下载到电脑上了。
自带的编辑器就是画图。莫非你的意思是双击后弹出画图程序?默认应该弹出图片和传真查看器。如果和我猜测相符,这说明是文件关联问题。请查阅资料,将图片与查看器关联即可。