按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
。elseif eax IDM_REDO
invoke SendMessage;hWinEdit;EM_REDO;0;0
。elseif eax IDM_SELALL
mov @stRange。cpMin;0
mov @stRange。cpMax;…1
invoke SendMessage;hWinEdit;EM_EXSETSEL;
0;addr @stRange
。elseif eax IDM_COPY
invoke SendMessage;hWinEdit;WM_COPY;0;0
。elseif eax IDM_CUT
invoke SendMessage;hWinEdit;WM_CUT;0;0
。elseif eax IDM_PASTE
invoke SendMessage;hWinEdit;WM_PASTE;0;0
。elseif eax IDM_FIND
and stFind。Flags;not FR_DIALOGTERM
invoke FindText;addr stFind
。if eax
mov hFindDialog;eax
。endif
。elseif eax IDM_FINDPREV
and stFind。Flags;not FR_DOWN
invoke _FindText
。elseif eax IDM_FINDNEXT
or stFind。Flags;FR_DOWN
invoke _FindText
。endif
;********************************************************************
。elseif eax WM_INITMENU
call _SetStatus
。elseif eax idFindMessage
。if stFind。Flags & FR_DIALOGTERM
mov hFindDialog;0
。else
invoke _FindText
。endif
;********************************************************************
。elseif eax WM_ACTIVATE
mov eax;wParam
。if (ax WA_CLICKACTIVE ) || (ax WA_ACTIVE)
invoke SetFocus;hWinEdit
。endif
;********************************************************************
。elseif eax WM_CREATE
push hWnd
pop hWinMain
invoke _Init
;********************************************************************
。elseif eax WM_CLOSE
call _Quit
;********************************************************************
。else
invoke DefWindowProc;hWnd;uMsg;wParam;lParam
ret
。endif
;********************************************************************
xor eax;eax
ret
_ProcWinMain endp
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
_WinMain proc
local @stWndClass:WNDCLASSEX
local @stMsg:MSG
local @hAccelerator;@hRichEdit
invoke LoadLibrary;offset szDllEdit
mov @hRichEdit;eax
invoke GetModuleHandle;NULL
mov hInstance;eax
invoke LoadMenu;hInstance;IDM_MAIN
mov hMenu;eax
invoke LoadAccelerators;hInstance;IDA_MAIN
mov @hAccelerator;eax
;********************************************************************
; 注册窗口类
;********************************************************************
invoke RtlZeroMemory;addr @stWndClass;sizeof @stWndClass
invoke LoadIcon;hInstance;ICO_MAIN
mov @stWndClass。hIcon;eax
mov @stWndClass。hIconSm;eax
invoke LoadCursor;0;IDC_ARROW
mov @stWndClass。hCursor;eax
push hInstance
pop @stWndClass。hInstance
mov @stWndClass。cbSize;sizeof WNDCLASSEX
mov @stWndClass。style;CS_HREDRAW or CS_VREDRAW
mov @stWndClass。lpfnWndProc;offset _ProcWinMain
mov @stWndClass。hbrBackground;COLOR_BTNFACE+1
mov @stWndClass。lpszClassName;offset szClassName
invoke RegisterClassEx;addr @stWndClass
;********************************************************************
; 建立并显示窗口
;********************************************************************
invoke CreateWindowEx;NULL;
offset szClassName;offset szCaptionMain;
WS_OVERLAPPEDWINDOW;
CW_USEDEFAULT;CW_USEDEFAULT;700;500;
NULL;hMenu;hInstance;NULL
mov hWinMain;eax
来源:电子工业出版社 作者:罗云彬 上一页 回书目 下一页
上一页 回书目 下一页
第9章 通用控件
9。4 使用Richedit控件(5)
invoke ShowWindow;hWinMain;SW_SHOWNORMAL
invoke UpdateWindow;hWinMain
;********************************************************************
; 消息循环
;********************************************************************
。while TRUE
invoke GetMessage;addr @stMsg;NULL;0;0
。break 。if eax 0
invoke TranslateAccelerator;hWinMain;
@hAccelerator;addr @stMsg
。if eax 0
invoke TranslateMessage;addr @stMsg
invoke DispatchMessage;addr @stMsg
。endif
。endw
invoke FreeLibrary;@hRichEdit
ret
_WinMain endp
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
start:
call _WinMain
invoke ExitProcess;NULL
;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
end start
程序的资源脚本文件Richedit。rc的内容如下:
//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
#include
//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
#define ICO_MAIN 1000
#define IDA_MAIN 2000
//》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
#define IDM_MAIN 2000
#define IDM_OPEN 2101
#define IDM_SAVE 2102
#define IDM_EXIT 2103
#define IDM_UNDO 2201
#define IDM_REDO 2202
#define IDM_SELALL 2203
#define IDM_COPY