按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
ret
_FindText endp
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
; 根据情况改变菜单项状态
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
_SetStatus proc
local @stRange:CHARRANGE
invoke SendMessage;hWinEdit;EM_EXGETSEL;0;addr @stRange
;********************************************************************
mov eax;@stRange。cpMin
。if eax @stRange。cpMax
invoke EnableMenuItem;hMenu;IDM_COPY;MF_GRAYED
invoke EnableMenuItem;hMenu;IDM_CUT;MF_GRAYED
。else
invoke EnableMenuItem;hMenu;IDM_COPY;MF_ENABLED
invoke EnableMenuItem;hMenu;IDM_CUT;MF_ENABLED
。endif
;********************************************************************
invoke SendMessage;hWinEdit;EM_CANPASTE;0;0
。if eax
invoke EnableMenuItem;hMenu;IDM_PASTE;MF_ENABLED
。else
invoke EnableMenuItem;hMenu;IDM_PASTE;MF_GRAYED
。endif
;********************************************************************
invoke SendMessage;hWinEdit;EM_CANREDO;0;0
。if eax
invoke EnableMenuItem;hMenu;IDM_REDO;MF_ENABLED
。else
invoke EnableMenuItem;hMenu;IDM_REDO;MF_GRAYED
。endif
;********************************************************************
invoke SendMessage;hWinEdit;EM_CANUNDO;0;0
。if eax
invoke EnableMenuItem;hMenu;IDM_UNDO;MF_ENABLED
。else
invoke EnableMenuItem;hMenu;IDM_UNDO;MF_GRAYED
。endif
;********************************************************************
invoke GetWindowTextLength;hWinEdit
。if eax
invoke EnableMenuItem;hMenu;IDM_SELALL;MF_ENABLED
。else
invoke EnableMenuItem;hMenu;IDM_SELALL;MF_GRAYED
。endif
;********************************************************************
invoke SendMessage;hWinEdit;EM_GETMODIFY;0;0
。if eax && hFile
invoke EnableMenuItem;hMenu;IDM_SAVE;MF_ENABLED
。else
invoke EnableMenuItem;hMenu;IDM_SAVE;MF_GRAYED
。endif
;********************************************************************
。if szFindText
invoke EnableMenuItem;hMenu;IDM_FINDNEXT;MF_ENABLED
invoke EnableMenuItem;hMenu;IDM_FINDPREV;MF_ENABLED
。else
invoke EnableMenuItem;hMenu;IDM_FINDNEXT;MF_GRAYED
invoke EnableMenuItem;hMenu;IDM_FINDPREV;MF_GRAYED
。endif
;********************************************************************
ret
_SetStatus endp
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
_Init proc
local @stCf:CHARFORMAT
;********************************************************************
; 注册“查找”对话框消息,初始化“查找”对话框的结构
;********************************************************************
push hWinMain
pop stFind。hwndOwner
invoke RegisterWindowMessage;addr FINDMSGSTRING
mov idFindMessage;eax
;********************************************************************
; 建立输出文本窗口
;********************************************************************
invoke CreateWindowEx;WS_EX_CLIENTEDGE;offset szClassEdit;
NULL;WS_CHILD OR WS_VISIBLE OR WS_VSCROLL
OR WS_HSCROLL OR ES_MULTILINE or ES_NOHIDESEL;
0;0;0;0;hWinMain;0;hInstance;NULL
mov hWinEdit;eax
invoke SendMessage;hWinEdit;EM_SETTEXTMODE;TM_PLAINTEXT;0
invoke RtlZeroMemory;addr @stCf;sizeof @stCf
mov @stCf。cbSize;sizeof @stCf
mov @stCf。yHeight;9 * 20
mov @stCf。dwMask;CFM_FACE or CFM_SIZE or CFM_BOLD
invoke lstrcpy;addr @stCf。szFaceName;addr szFont
invoke SendMessage;hWinEdit;EM_SETCHARFORMAT;0;addr @stCf
invoke SendMessage;hWinEdit;EM_EXLIMITTEXT;0;…1
ret
_Init endp
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
_Quit proc
invoke _CheckModify
。if eax
invoke DestroyWindow;hWinMain
invoke PostQuitMessage;NULL
。if hFile
来源:电子工业出版社 作者:罗云彬 上一页 回书目 下一页
上一页 回书目 下一页
第9章 通用控件
9。4 使用Richedit控件(4)
invoke CloseHandle;hFile
。endif
。endif
ret
_Quit endp
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
_ProcWinMain proc uses ebx edi esi hWnd;uMsg;wParam;lParam
local @stRange:CHARRANGE
local @stRect:RECT
mov eax;uMsg
。if eax WM_SIZE
invoke GetClientRect;hWinMain;addr @stRect
invoke MoveWindow;hWinEdit;0;0;
@stRect。right;@stRect。bottom;TRUE
;********************************************************************
; 处理菜单、加速键及工具栏消息
;********************************************************************
。elseif eax WM_MAND
mov eax;wParam
movzx eax;ax
。if eax IDM_OPEN
invoke _CheckModify
。if eax
call _OpenFile
。endif
。elseif eax IDM_SAVE
call _SaveFile
。elseif eax IDM_EXIT
invoke _Quit
。elseif eax IDM_UNDO
invoke SendMessage;hWinEdit;EM_UNDO;0;0
。elseif eax IDM_REDO
invoke