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

📄 lion-tutorial33.htm

📁 内有一些代码
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<font color="#003399">StreamOutProc</font> proc hFile:DWORD,pBuffer:DWORD, NumBytes:DWORD, pBytesWritten:DWORD	invoke WriteFile,hFile,pBuffer,NumBytes,pBytesWritten,0	xor eax,1	ret<font color="#003399">StreamOutProc</font> endp<font color="#003399">CheckModifyState</font> 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	ret<font color="#003399">CheckModifyState</font> endp<font color="#003399">SetColor</font> 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	ret<font color="#003399">SetColor</font> endp<font color="#003399">OptionProc</font> 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				;==================================================================================				; Save the modify state of the richedit control because changing the text color changes the				; modify state of the richedit control.				;==================================================================================				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 endpWndProc proc hWnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD	LOCAL chrg:CHARRANGE	LOCAL ofn:OPENFILENAME	LOCAL buffer[256]:BYTE	LOCAL editstream:EDITSTREAM	LOCAL hFile:DWORD	.if uMsg==WM_CREATE		invoke CreateWindowEx,WS_EX_CLIENTEDGE,addr RichEditClass,0,WS_CHILD or WS_VISIBLE or ES_MULTILINE or WS_VSCROLL or WS_HSCROLL or ES_NOHIDESEL,\				CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,hWnd,RichEditID,hInstance,0		mov hwndRichEdit,eax		;=============================================================		; Set the text limit. The default is 64K		;=============================================================		invoke SendMessage,hwndRichEdit,EM_LIMITTEXT,-1,0		;=============================================================		; Set the default text/background color		;=============================================================		invoke SetColor		invoke SendMessage,hwndRichEdit,EM_SETMODIFY,FALSE,0		invoke SendMessage,hwndRichEdit,EM_EMPTYUNDOBUFFER,0,0	.elseif uMsg==WM_INITMENUPOPUP		mov eax,lParam		.if ax==0		; file menu						.if FileOpened==TRUE	; a file is already opened				invoke EnableMenuItem,wParam,IDM_OPEN,MF_GRAYED				invoke EnableMenuItem,wParam,IDM_CLOSE,MF_ENABLED				invoke EnableMenuItem,wParam,IDM_SAVE,MF_ENABLED				invoke EnableMenuItem,wParam,IDM_SAVEAS,MF_ENABLED			.else				invoke EnableMenuItem,wParam,IDM_OPEN,MF_ENABLED				invoke EnableMenuItem,wParam,IDM_CLOSE,MF_GRAYED				invoke EnableMenuItem,wParam,IDM_SAVE,MF_GRAYED				invoke EnableMenuItem,wParam,IDM_SAVEAS,MF_GRAYED			.endif		.elseif ax==1	; edit menu			;=============================================================================			; Check whether there is some text in the clipboard. If so, we enable the paste menuitem			;=============================================================================			invoke SendMessage,hwndRichEdit,EM_CANPASTE,CF_TEXT,0			.if eax==0		; no text in the clipboard				invoke EnableMenuItem,wParam,IDM_PASTE,MF_GRAYED			.else				invoke EnableMenuItem,wParam,IDM_PASTE,MF_ENABLED			.endif			;==========================================================			; check whether the undo queue is empty			;==========================================================			invoke SendMessage,hwndRichEdit,EM_CANUNDO,0,0			.if eax==0				invoke EnableMenuItem,wParam,IDM_UNDO,MF_GRAYED			.else				invoke EnableMenuItem,wParam,IDM_UNDO,MF_ENABLED			.endif			;=========================================================			; check whether the redo queue is empty			;=========================================================			invoke SendMessage,hwndRichEdit,EM_CANREDO,0,0			.if eax==0				invoke EnableMenuItem,wParam,IDM_REDO,MF_GRAYED			.else				invoke EnableMenuItem,wParam,IDM_REDO,MF_ENABLED			.endif			;=========================================================			; check whether there is a current selection in the richedit control.			; If there is, we enable the cut/copy/delete menuitem			;=========================================================			invoke SendMessage,hwndRichEdit,EM_EXGETSEL,0,addr chrg			mov eax,chrg.cpMin			.if eax==chrg.cpMax		; no current selection				invoke EnableMenuItem,wParam,IDM_COPY,MF_GRAYED				invoke EnableMenuItem,wParam,IDM_CUT,MF_GRAYED				invoke EnableMenuItem,wParam,IDM_DELETE,MF_GRAYED			.else				invoke EnableMenuItem,wParam,IDM_COPY,MF_ENABLED				invoke EnableMenuItem,wParam,IDM_CUT,MF_ENABLED				invoke EnableMenuItem,wParam,IDM_DELETE,MF_ENABLED			.endif		.endif	.elseif uMsg==WM_COMMAND		.if lParam==0		; menu commands			mov eax,wParam			.if ax==IDM_OPEN				invoke RtlZeroMemory,addr ofn,sizeof ofn				mov ofn.lStructSize,sizeof ofn				push hWnd				pop ofn.hwndOwner				push hInstance				pop ofn.hInstance				mov ofn.lpstrFilter,offset ASMFilterString				mov ofn.lpstrFile,offset FileName				mov byte ptr [FileName],0				mov ofn.nMaxFile,sizeof FileName				mov ofn.Flags,OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_PATHMUSTEXIST				invoke GetOpenFileName,addr ofn				.if eax!=0					invoke CreateFile,addr FileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0					.if eax!=INVALID_HANDLE_VALUE						mov hFile,eax						;================================================================						; stream the text into the richedit control						;================================================================												mov editstream.dwCookie,eax						mov editstream.pfnCallback,offset StreamInProc						invoke SendMessage,hwndRichEdit,EM_STREAMIN,SF_TEXT,addr editstream						;==========================================================						; Initialize the modify state to false						;==========================================================						invoke SendMessage,hwndRichEdit,EM_SETMODIFY,FALSE,0						invoke CloseHandle,hFile						mov FileOpened,TRUE					.else						invoke MessageBox,hWnd,addr OpenFileFail,addr AppName,MB_OK or MB_ICONERROR					.endif				.endif			.elseif ax==IDM_CLOSE				invoke CheckModifyState,hWnd				.if eax==TRUE					invoke SetWindowText,hwndRichEdit,0					mov FileOpened,FALSE				.endif			.elseif ax==IDM_SAVE				invoke CreateFile,addr FileName,GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0				.if eax!=INVALID_HANDLE_VALUE@@:									mov hFile,eax					;================================================================					; stream the text to the file					;================================================================											mov editstream.dwCookie,eax					mov editstream.pfnCallback,offset StreamOutProc					invoke SendMessage,hwndRichEdit,EM_STREAMOUT,SF_TEXT,addr editstream					;==========================================================					; Initialize the modify state to false					;==========================================================					invoke SendMessage,hwndRichEdit,EM_SETMODIFY,FALSE,0					invoke CloseHandle,hFile				.else					invoke MessageBox,hWnd,addr OpenFileFail,addr AppName,MB_OK or MB_ICONERROR				.endif			.elseif ax==IDM_COPY				invoke SendMessage,hwndRichEdit,WM_COPY,0,0			.elseif ax==IDM_CUT				invoke SendMessage,hwndRichEdit,WM_CUT,0,0			.elseif ax==IDM_PASTE				invoke SendMessage,hwndRichEdit,WM_PASTE,0,0			.elseif ax==IDM_DELETE				invoke SendMessage,hwndRichEdit,EM_REPLACESEL,TRUE,0			.elseif ax==IDM_SELECTALL				mov chrg.cpMin,0				mov chrg.cpMax,-1				invoke SendMessage,hwndRichEdit,EM_EXSETSEL,0,addr chrg			.elseif ax==IDM_UNDO				invoke SendMessage,hwndRichEdit,EM_UNDO,0,0			.elseif ax==IDM_REDO				invoke SendMessage,hwndRichEdit,EM_REDO,0,0

⌨️ 快捷键说明

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