⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lion-tutorial34.htm

📁 内有一些代码
💻 HTM
📖 第 1 页 / 共 4 页
字号:
includelib \masm32\lib\kernel32.libWinMain proto :DWORD,:DWORD,:DWORD,:DWORD.constIDR_MAINMENU                   equ 101IDM_OPEN                      equ  40001IDM_SAVE                       equ 40002IDM_CLOSE                      equ 40003IDM_SAVEAS                     equ 40004IDM_EXIT                       equ 40005IDM_COPY                      equ  40006IDM_CUT                       equ  40007IDM_PASTE                      equ 40008IDM_DELETE                     equ 40009IDM_SELECTALL                  equ 40010IDM_OPTION 			equ 40011IDM_UNDO			equ 40012IDM_REDO			equ 40013IDD_OPTIONDLG                  equ 101IDC_BACKCOLORBOX               equ 1000IDC_TEXTCOLORBOX               equ 1001IDR_MAINACCEL                 equ  105IDD_FINDDLG                    equ 102IDD_GOTODLG                    equ 103IDD_REPLACEDLG                 equ 104IDC_FINDEDIT                  equ  1000IDC_MATCHCASE                  equ 1001IDC_REPLACEEDIT                 equ 1001IDC_WHOLEWORD                  equ 1002IDC_DOWN                       equ 1003IDC_UP                       equ   1004IDC_LINENO                   equ   1005IDM_FIND                       equ 40014IDM_FINDNEXT                  equ  40015IDM_REPLACE                     equ 40016IDM_GOTOLINE                   equ 40017IDM_FINDPREV                  equ  40018RichEditID 			equ 300.dataClassName db "IczEditClass",0AppName  db "IczEdit version 2.0",0RichEditDLL db "riched20.dll",0RichEditClass db "RichEdit20A",0NoRichEdit db "Cannot find riched20.dll",0ASMFilterString 		db "ASM Source code (*.asm)",0,"*.asm",0				db "All Files (*.*)",0,"*.*",0,0OpenFileFail db "Cannot open the file",0WannaSave db "The data in the control is modified. Want to save it?",0FileOpened dd FALSEBackgroundColor dd 0FFFFFFh		<font color="#009999">; default to white</font>TextColor dd 0	<font color="#009999">	; default to black</font>hSearch dd ?	<font color="#006666">	; handle to the search/replace dialog box</font>hAccel dd ?.data?hInstance dd ?hRichEdit dd ?hwndRichEdit dd ?FileName db 256 dup(?)AlternateFileName db 256 dup(?)CustomColors dd 16 dup(?)FindBuffer db 256 dup(?)ReplaceBuffer db 256 dup(?)uFlags dd ?findtext FINDTEXTEX <>.codestart:	mov byte ptr [FindBuffer],0	mov byte ptr [ReplaceBuffer],0	invoke GetModuleHandle, NULL	mov    hInstance,eax	invoke LoadLibrary,addr RichEditDLL	.if eax!=0		mov hRichEdit,eax		invoke WinMain, hInstance,0,0, SW_SHOWDEFAULT		invoke FreeLibrary,hRichEdit	.else		invoke MessageBox,0,addr NoRichEdit,addr AppName,MB_OK or MB_ICONERROR	.endif	invoke ExitProcess,eax	WinMain proc hInst:DWORD,hPrevInst:DWORD,CmdLine:DWORD,CmdShow:DWORD	LOCAL wc:WNDCLASSEX	LOCAL msg:MSG	LOCAL hwnd:DWORD	mov   wc.cbSize,SIZEOF WNDCLASSEX	mov   wc.style, CS_HREDRAW or CS_VREDRAW	mov   wc.lpfnWndProc, OFFSET WndProc	mov   wc.cbClsExtra,NULL	mov   wc.cbWndExtra,NULL	push  hInst	pop   wc.hInstance	mov   wc.hbrBackground,COLOR_WINDOW+1	mov   wc.lpszMenuName,IDR_MAINMENU	mov   wc.lpszClassName,OFFSET ClassName	invoke LoadIcon,NULL,IDI_APPLICATION	mov   wc.hIcon,eax	mov   wc.hIconSm,eax	invoke LoadCursor,NULL,IDC_ARROW	mov   wc.hCursor,eax	invoke RegisterClassEx, addr wc	INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\           WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\           CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\           hInst,NULL	mov   hwnd,eax	invoke ShowWindow, hwnd,SW_SHOWNORMAL	invoke UpdateWindow, hwnd	invoke LoadAccelerators,hInstance,IDR_MAINACCEL	mov hAccel,eax	.while TRUE		invoke GetMessage, ADDR msg,0,0,0		.break .if (!eax)		invoke IsDialogMessage,hSearch,addr msg		.if eax==FALSE			invoke TranslateAccelerator,hwnd,hAccel,addr msg			.if eax==0				invoke TranslateMessage, ADDR msg				invoke DispatchMessage, ADDR msg			.endif		.endif	.endw	mov   eax,msg.wParam	retWinMain endpStreamInProc proc hFile:DWORD,pBuffer:DWORD, NumBytes:DWORD, pBytesRead:DWORD	invoke ReadFile,hFile,pBuffer,NumBytes,pBytesRead,0	xor eax,1	retStreamInProc endpStreamOutProc proc hFile:DWORD,pBuffer:DWORD, NumBytes:DWORD, pBytesWritten:DWORD	invoke WriteFile,hFile,pBuffer,NumBytes,pBytesWritten,0	xor eax,1	retStreamOutProc endpCheckModifyState proc hWnd:DWORD	invoke SendMessage,hwndRichEdit,EM_GETMODIFY,0,0	.if eax!=0		invoke MessageBox,hWnd,addr WannaSave,addr AppName,MB_YESNOCANCEL		.if eax==IDYES			invoke SendMessage,hWnd,WM_COMMAND,IDM_SAVE,0		.elseif eax==IDCANCEL			mov eax,FALSE			ret		.endif	.endif	mov eax,TRUE	retCheckModifyState endpSetColor proc	LOCAL cfm:CHARFORMAT	invoke SendMessage,hwndRichEdit,EM_SETBKGNDCOLOR,0,BackgroundColor	invoke RtlZeroMemory,addr cfm,sizeof cfm	mov cfm.cbSize,sizeof cfm	mov cfm.dwMask,CFM_COLOR	push TextColor	pop cfm.crTextColor	invoke SendMessage,hwndRichEdit,EM_SETCHARFORMAT,SCF_ALL,addr cfm	retSetColor endpOptionProc proc hWnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD	LOCAL clr:CHOOSECOLOR	.if uMsg==WM_INITDIALOG	.elseif uMsg==WM_COMMAND		mov eax,wParam		shr eax,16		.if ax==BN_CLICKED			mov eax,wParam			.if ax==IDCANCEL				invoke SendMessage,hWnd,WM_CLOSE,0,0			.elseif ax==IDC_BACKCOLORBOX				invoke RtlZeroMemory,addr clr,sizeof clr				mov clr.lStructSize,sizeof clr				push hWnd				pop clr.hwndOwner				push hInstance				pop clr.hInstance				push BackgroundColor				pop clr.rgbResult				mov clr.lpCustColors,offset CustomColors				mov clr.Flags,CC_ANYCOLOR or CC_RGBINIT				invoke ChooseColor,addr clr				.if eax!=0					push clr.rgbResult					pop BackgroundColor					invoke GetDlgItem,hWnd,IDC_BACKCOLORBOX					invoke InvalidateRect,eax,0,TRUE				.endif			.elseif ax==IDC_TEXTCOLORBOX				invoke RtlZeroMemory,addr clr,sizeof clr				mov clr.lStructSize,sizeof clr				push hWnd				pop clr.hwndOwner				push hInstance				pop clr.hInstance				push TextColor				pop clr.rgbResult				mov clr.lpCustColors,offset CustomColors				mov clr.Flags,CC_ANYCOLOR or CC_RGBINIT				invoke ChooseColor,addr clr				.if eax!=0					push clr.rgbResult					pop TextColor					invoke GetDlgItem,hWnd,IDC_TEXTCOLORBOX					invoke InvalidateRect,eax,0,TRUE				.endif			.elseif ax==IDOK				invoke SendMessage,hwndRichEdit,EM_GETMODIFY,0,0				push eax				invoke SetColor				pop eax				invoke SendMessage,hwndRichEdit,EM_SETMODIFY,eax,0				invoke EndDialog,hWnd,0			.endif		.endif	.elseif uMsg==WM_CTLCOLORSTATIC		invoke GetDlgItem,hWnd,IDC_BACKCOLORBOX		.if eax==lParam			invoke CreateSolidBrush,BackgroundColor						ret		.else			invoke GetDlgItem,hWnd,IDC_TEXTCOLORBOX			.if eax==lParam				invoke CreateSolidBrush,TextColor				ret			.endif		.endif		mov eax,FALSE		ret	.elseif uMsg==WM_CLOSE		invoke EndDialog,hWnd,0	.else		mov eax,FALSE		ret	.endif	mov eax,TRUE	retOptionProc endpSearchProc proc hWnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD	.if uMsg==WM_INITDIALOG		push hWnd		pop hSearch		invoke CheckRadioButton,hWnd,IDC_DOWN,IDC_UP,IDC_DOWN		invoke SendDlgItemMessage,hWnd,IDC_FINDEDIT,WM_SETTEXT,0,addr FindBuffer	.elseif uMsg==WM_COMMAND		mov eax,wParam		shr eax,16		.if ax==BN_CLICKED			mov eax,wParam			.if ax==IDOK				mov uFlags,0				invoke SendMessage,hwndRichEdit,EM_EXGETSEL,0,addr findtext.chrg				invoke GetDlgItemText,hWnd,IDC_FINDEDIT,addr FindBuffer,sizeof FindBuffer				.if eax!=0					invoke IsDlgButtonChecked,hWnd,IDC_DOWN					.if eax==BST_CHECKED						or uFlags,FR_DOWN						mov eax,findtext.chrg.cpMin						.if eax!=findtext.chrg.cpMax							push findtext.chrg.cpMax							pop findtext.chrg.cpMin						.endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -