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

📄 lion-tutorial35.htm

📁 内有一些代码
💻 HTM
📖 第 1 页 / 共 4 页
字号:
						.if eax!=findtext.chrg.cpMax							push findtext.chrg.cpMax							pop findtext.chrg.cpMin						.endif						mov findtext.chrg.cpMax,-1					.else						mov findtext.chrg.cpMax,0					.endif					invoke IsDlgButtonChecked,hWnd,IDC_MATCHCASE					.if eax==BST_CHECKED						or uFlags,FR_MATCHCASE					.endif					invoke IsDlgButtonChecked,hWnd,IDC_WHOLEWORD					.if eax==BST_CHECKED						or uFlags,FR_WHOLEWORD					.endif					mov findtext.lpstrText,offset FindBuffer					invoke SendMessage,hwndRichEdit,EM_FINDTEXTEX,uFlags,addr findtext					.if eax!=-1						invoke SendMessage,hwndRichEdit,EM_EXSETSEL,0,addr findtext.chrgText					.endif				.endif			.elseif ax==IDCANCEL				invoke SendMessage,hWnd,WM_CLOSE,0,0			.else				mov eax,FALSE				ret			.endif		.endif	.elseif uMsg==WM_CLOSE		mov hSearch,0		invoke EndDialog,hWnd,0	.else		mov eax,FALSE		ret	.endif	mov eax,TRUE	retSearchProc endpReplaceProc proc hWnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD	LOCAL settext:SETTEXTEX	.if uMsg==WM_INITDIALOG		push hWnd		pop hSearch		invoke SetDlgItemText,hWnd,IDC_FINDEDIT,addr FindBuffer		invoke SetDlgItemText,hWnd,IDC_REPLACEEDIT,addr ReplaceBuffer	.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==IDOK				invoke GetDlgItemText,hWnd,IDC_FINDEDIT,addr FindBuffer,sizeof FindBuffer				invoke GetDlgItemText,hWnd,IDC_REPLACEEDIT,addr ReplaceBuffer,sizeof ReplaceBuffer				mov findtext.chrg.cpMin,0				mov findtext.chrg.cpMax,-1				mov findtext.lpstrText,offset FindBuffer				mov settext.flags,ST_SELECTION				mov settext.codepage,CP_ACP				.while TRUE					invoke SendMessage,hwndRichEdit,EM_FINDTEXTEX,FR_DOWN,addr findtext					.if eax==-1						.break					.else						invoke SendMessage,hwndRichEdit,EM_EXSETSEL,0,addr findtext.chrgText						invoke SendMessage,hwndRichEdit,EM_SETTEXTEX,addr settext,addr ReplaceBuffer					.endif				.endw			.endif		.endif	.elseif uMsg==WM_CLOSE		mov hSearch,0		invoke EndDialog,hWnd,0	.else		mov eax,FALSE		ret	.endif	mov eax,TRUE	retReplaceProc endpGoToProc proc hWnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD	LOCAL LineNo:DWORD	LOCAL chrg:CHARRANGE	.if uMsg==WM_INITDIALOG		push hWnd		pop hSearch	.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==IDOK				invoke GetDlgItemInt,hWnd,IDC_LINENO,NULL,FALSE				mov LineNo,eax				invoke SendMessage,hwndRichEdit,EM_GETLINECOUNT,0,0				.if eax>LineNo					invoke SendMessage,hwndRichEdit,EM_LINEINDEX,LineNo,0					invoke SendMessage,hwndRichEdit,EM_SETSEL,eax,eax					invoke SetFocus,hwndRichEdit				.endif			.endif		.endif	.elseif uMsg==WM_CLOSE		mov hSearch,0		invoke EndDialog,hWnd,0	.else		mov eax,FALSE		ret	.endif	mov eax,TRUE	retGoToProc endpPrepareEditMenu proc hSubMenu:DWORD	LOCAL chrg:CHARRANGE	invoke SendMessage,hwndRichEdit,EM_CANPASTE,CF_TEXT,0	.if eax==0		; no text in the clipboard		invoke EnableMenuItem,hSubMenu,IDM_PASTE,MF_GRAYED	.else		invoke EnableMenuItem,hSubMenu,IDM_PASTE,MF_ENABLED	.endif	invoke SendMessage,hwndRichEdit,EM_CANUNDO,0,0	.if eax==0		invoke EnableMenuItem,hSubMenu,IDM_UNDO,MF_GRAYED	.else		invoke EnableMenuItem,hSubMenu,IDM_UNDO,MF_ENABLED	.endif	invoke SendMessage,hwndRichEdit,EM_CANREDO,0,0	.if eax==0		invoke EnableMenuItem,hSubMenu,IDM_REDO,MF_GRAYED	.else		invoke EnableMenuItem,hSubMenu,IDM_REDO,MF_ENABLED	.endif	invoke SendMessage,hwndRichEdit,EM_EXGETSEL,0,addr chrg	mov eax,chrg.cpMin	.if eax==chrg.cpMax		; no current selection		invoke EnableMenuItem,hSubMenu,IDM_COPY,MF_GRAYED		invoke EnableMenuItem,hSubMenu,IDM_CUT,MF_GRAYED		invoke EnableMenuItem,hSubMenu,IDM_DELETE,MF_GRAYED	.else		invoke EnableMenuItem,hSubMenu,IDM_COPY,MF_ENABLED		invoke EnableMenuItem,hSubMenu,IDM_CUT,MF_ENABLED		invoke EnableMenuItem,hSubMenu,IDM_DELETE,MF_ENABLED	.endif	retPrepareEditMenu endpParseBuffer proc uses edi esi hHeap:DWORD,pBuffer:DWORD, nSize:DWORD, ArrayOffset:DWORD,pArray:DWORD	LOCAL buffer[128]:BYTE	LOCAL InProgress:DWORD	mov InProgress,FALSE	lea esi,buffer	mov edi,pBuffer	invoke CharLower,edi	mov ecx,nSizeSearchLoop:	or ecx,ecx	jz Finished	cmp byte ptr [edi]," "	je EndOfWord	cmp byte ptr [edi],9 	; tab	je EndOfWord	mov InProgress,TRUE	mov al,byte ptr [edi]	mov byte ptr [esi],al	inc esiSkipIt:	inc edi	dec ecx	jmp SearchLoopEndOfWord:	cmp InProgress,TRUE	je WordFound	jmp SkipItWordFound:	mov byte ptr [esi],0	push ecx	invoke HeapAlloc,hHeap,HEAP_ZERO_MEMORY,sizeof WORDINFO	push esi	mov esi,eax	assume esi:ptr WORDINFO	invoke lstrlen,addr buffer	mov [esi].WordLen,eax	push ArrayOffset	pop [esi].pColor	inc eax	invoke HeapAlloc,hHeap,HEAP_ZERO_MEMORY,eax	mov [esi].pszWord,eax	mov edx,eax	invoke lstrcpy,edx,addr buffer	mov eax,pArray	movzx edx,byte ptr [buffer]	shl edx,2		; multiply by 4	add eax,edx	.if dword ptr [eax]==0		mov dword ptr [eax],esi	.else		push dword ptr [eax]		pop [esi].NextLink		mov dword ptr [eax],esi	.endif	pop esi	pop ecx	lea esi,buffer	mov InProgress,FALSE	jmp SkipItFinished:	.if InProgress==TRUE		invoke HeapAlloc,hHeap,HEAP_ZERO_MEMORY,sizeof WORDINFO		push esi		mov esi,eax		assume esi:ptr WORDINFO		invoke lstrlen,addr buffer		mov [esi].WordLen,eax		push ArrayOffset		pop [esi].pColor		inc eax		invoke HeapAlloc,hHeap,HEAP_ZERO_MEMORY,eax		mov [esi].pszWord,eax		mov edx,eax		invoke lstrcpy,edx,addr buffer		mov eax,pArray		movzx edx,byte ptr [buffer]		shl edx,2		; multiply by 4		add eax,edx		.if dword ptr [eax]==0			mov dword ptr [eax],esi		.else			push dword ptr [eax]			pop [esi].NextLink			mov dword ptr [eax],esi		.endif		pop esi	.endif	retParseBuffer endpFillHiliteInfo proc uses edi	LOCAL buffer[1024]:BYTE	LOCAL pTemp:DWORD	LOCAL BlockSize:DWORD	invoke RtlZeroMemory,addr ASMSyntaxArray,sizeof ASMSyntaxArray	invoke GetModuleFileName,hInstance,addr buffer,sizeof buffer	invoke lstrlen,addr buffer	mov ecx,eax	dec ecx	lea edi,buffer	add edi,ecx	std	mov al,"\"	repne scasb	cld	inc edi	mov byte ptr [edi],0	invoke lstrcat,addr buffer,addr WordFileName	invoke GetFileAttributes,addr buffer	.if eax!=-1		mov BlockSize,1024*10		invoke HeapAlloc,hMainHeap,0,BlockSize		mov pTemp,eax@@:				invoke GetPrivateProfileString,addr ASMSection,addr C1Key,addr ZeroString,pTemp,BlockSize,addr buffer		.if eax!=0			inc eax			.if eax==BlockSize	; the buffer is too small				add BlockSize,1024*10				invoke HeapReAlloc,hMainHeap,0,pTemp,BlockSize				mov pTemp,eax				jmp @B			.endif			mov edx,offset ASMColorArray			invoke ParseBuffer,hMainHeap,pTemp,eax,edx,addr ASMSyntaxArray		.endif@@:				invoke GetPrivateProfileString,addr ASMSection,addr C2Key,addr ZeroString,pTemp,BlockSize,addr buffer		.if eax!=0			inc eax			.if eax==BlockSize	; the buffer is too small				add BlockSize,1024*10				invoke HeapReAlloc,hMainHeap,0,pTemp,BlockSize				mov pTemp,eax				jmp @B			.endif			mov edx,offset ASMColorArray			add edx,4			invoke ParseBuffer,hMainHeap,pTemp,eax,edx,addr ASMSyntaxArray		.endif@@:				invoke GetPrivateProfileString,addr ASMSection,addr C3Key,addr ZeroString,pTemp,BlockSize,addr buffer		.if eax!=0			inc eax			.if eax==BlockSize	; the buffer is too small				add BlockSize,1024*10				invoke HeapReAlloc,hMainHeap,0,pTemp,BlockSize				mov pTemp,eax				jmp @B			.endif			mov edx,offset ASMColorArray			add edx,8			invoke ParseBuffer,hMainHeap,pTemp,eax,edx,addr ASMSyntaxArray		.endif@@:				invoke GetPrivateProfileString,addr ASMSection,addr C4Key,addr ZeroString,pTemp,BlockSize,addr buffer		.if eax!=0			inc eax			.if eax==BlockSize	; the buffer is too small				add BlockSize,1024*10				invoke HeapReAlloc,hMainHeap,0,pTemp,BlockSize				mov pTemp,eax				jmp @B			.endif			mov edx,offset ASMColorArray			add edx,12			invoke ParseBuffer,hMainHeap,pTemp,eax,edx,addr ASMSyntaxArray		.endif@@:				invoke GetPrivateProfileString,addr ASMSection,addr C5Key,addr ZeroString,pTemp,BlockSize,addr buffer		.if eax!=0			inc eax			.if eax==BlockSize	; the buffer is too small				add BlockSize,1024*10				invoke HeapReAlloc,hMainHeap,0,pTemp,BlockSize				mov pTemp,eax				jmp @B			.endif			mov edx,offset ASMColorArray			add edx,16			invoke ParseBuffer,hMainHeap,pTemp,eax,edx,addr ASMSyntaxArray		.endif@@:				invoke GetPrivateProfileString,addr ASMSection,addr C6Key,addr ZeroString,pTemp,BlockSize,addr buffer		.if eax!=0			inc eax			.if eax==BlockSize	; the buffer is too small				add BlockSize,1024*10				invoke HeapReAlloc,hMainHeap,0,pTemp,BlockSize				mov pTemp,eax				jmp @B			.endif			mov edx,offset ASMColorArray			add edx,20			invoke ParseBuffer,hMainHeap,pTemp,eax,edx,addr ASMSyntaxArray		.endif@@:				invoke GetPrivateProfileString,addr ASMSection,addr C7Key,addr ZeroString,pTemp,BlockSize,addr buffer		.if eax!=0			inc eax			.if eax==BlockSize	; the buffer is too small				add BlockSize,1024*10				invoke HeapReAlloc,hMainHeap,0,pTemp,BlockSize				mov pTemp,eax				jmp @B			.endif			mov edx,offset ASMColorArray			add edx,24			invoke ParseBuffer,hMainHeap,pTemp,eax,edx,addr ASMSyntaxArray		.endif@@:				invoke GetPrivateProfileString,addr ASMSection,addr C8Key,addr ZeroString,pTemp,BlockSize,addr buffer		.if eax!=0			inc eax			.if eax==BlockSize	; the buffer is too small				add BlockSize,1024*10				invoke HeapReAlloc,hMainHeap,0,pTemp,BlockSize				mov pTemp,eax				jmp @B			.endif			mov edx,offset ASMColorArray			add edx,28			invoke ParseBuffer,hMainHeap,pTemp,eax,edx,addr ASMSyntaxArray		.endif@@:				invoke GetPrivateProfileString,addr ASMSection,addr C9Key,addr ZeroString,pTemp,BlockSize,addr buffer		.if eax!=0			inc eax			.if eax==BlockSize	; the buffer is too small				add BlockSize,1024*10				invoke HeapReAlloc,hMainHeap,0,pTemp,BlockSize				mov pTemp,eax				jmp @B			.endif			mov edx,offset ASMColorArray			add edx,32			invoke ParseBuffer,hMainHeap,pTemp,eax,edx,addr ASMSyntaxArray		.endif@@:				invoke GetPrivateProfileString,addr ASMSection,addr C10Key,addr ZeroString,pTemp,BlockSize,addr buffer		.if eax!=0			inc eax			.if eax==BlockSize	; the buffer is too small				add BlockSize,1024*10				invoke HeapReAlloc,hMainHeap,0,pTemp,BlockSize				mov pTemp,eax				jmp @B			.endif			mov edx,offset ASMColorArray			add edx,36			invoke ParseBuffer,hMainHeap,pTemp,eax,edx,addr ASMSyntaxArray		.endif		invoke HeapFree,hMainHeap,0,pTemp	.endif	retFillHiliteInfo endpNewRichEditProc proc hWnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD	LOCAL hdc:DWORD	LOCAL hOldFont:DWORD	LOCAL FirstChar:DWORD	LOCAL rect:RECT	LOCAL txtrange:TEXTRANGE	LOCAL buffer[1024*10]:BYTE	LOCAL hRgn:DWORD

⌨️ 快捷键说明

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