WIN32汇编语言教程:第09章 通用控件 · 9.2 使用状态栏(2)
mov hWinEdit,eax call _Resize invoke SetTimer,hWnd,1,300,NULL ;******************************************************************** .elseif eax == WM_COMMAND mov eax,wParam .if ax == IDM_EXIT invoke EndDialog,hWnd,NULL .elseif ax == ID_EDIT invoke GetWindowTextLength,hWinEdit invoke wsprintf,addr @szBuffer,\ addr szFormat1,eax invoke SendMessage,hWinStatus,SB_SETTEXT,\ 1,addr @szBuffer .endif ;******************************************************************** .elseif eax == WM_MENUSELECT invoke MenuHelp,WM_MENUSELECT,wParam,lParam,\ lParam,hInstance,hWinStatus,offset dwMenuHelp .elseif eax == WM_SIZE call _Resize ;******************************************************************** ; 检测用户在第3栏的按鼠标动作并将文字在“插入”和“改写”之间切换 ;******************************************************************** .elseif eax == WM_NOTIFY .if wParam == ID_STATUSBAR mov eax,lParam mov eax,[eax + NMHDR.code] .if eax == NM_CLICK ;******************************************************************** invoke GetCursorPos,addr @stPoint invoke GetWindowRect,hWinStatus,addr @stRect mov eax,@stRect.left mov ecx,eax add eax,140 add ecx,172 .if (@stPoint.x >= eax) && (@stPoint.x <= ecx) mov eax,lpsz1 xchg eax,lpsz2 mov lpsz1,eax invoke SendMessage,hWinStatus,SB_SETTEXT,2,lpsz1 .endif ;******************************************************************** .endif .endif .else mov eax,FALSE ret .endif mov eax,TRUE ret _ProcDlgMain endp ;#################################################################### start: invoke InitCommonControls invoke GetModuleHandle,NULL mov hInstance,eax invoke DialogBoxParam,hInstance,DLG_MAIN,\ NULL,offset _ProcDlgMain,NULL invoke ExitProcess,NULL ;#################################################################### end start
资源脚本文件StatusBar.rc的内容如下:
//################################################################## #include <resource.h> //################################################################## #define ICO_MAIN 1000 #define DLG_MAIN 1000 #define IDM_MAIN 1000 #define IDM_OPEN 1101 #define IDM_SAVE AS 1102 #define IDM_PAGESETUP 1103 #define IDM_EXIT 1104 #define IDM_FIND 1201 #define IDM_REPLACE 1202 #define IDM_SELFONT 1203 #define IDM_SELCOLOR 1204 #define IDM_MENUHELP 1300 //################################################################## ICO_MAIN ICON "Main.ico" //################################################################## DLG_MAIN DIALOG 150, 180, 250, 130 MENU IDM_MAIN STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "状态栏示例" FONT 9, "宋体" { } //################################################################## IDM_MAIN menu discardable BEGIN popup "文件(&F)" BEGIN menuitem "打开文件(&O)...",IDM_OPEN menuitem "文件另存为(&C)...",IDM_SAVEAS menuitem separator menuitem "页面设置(&P)...",IDM_PAGESETUP menuitem separator menuitem "退出(&X)",IDM_EXIT END popup "查看(&V)" BEGIN menuitem "查找字符串(&S)...",IDM_FIND menuitem "替换字符串(&R)...",IDM_REPLACE menuitem separator menuitem "选择字体(&F)...",IDM_SELFONT menuitem "选择颜色(&B)...",IDM_SELCOLOR END END //################################################################## stringtable discardable BEGIN IDM_MENUHELP "包含文件操作的命令" IDM_MENUHELP+1 "包含操作视图的命令" IDM_OPEN "打开需要编辑的文件" IDM_SAVEAS "以另外一个文件名保存文件" IDM_PAGESETUP "选择打印机以及设置页边距、纸张大小等打印参数" IDM_EXIT "退出本程序" IDM_FIND "在窗口中搜索文字" IDM_REPLACE "在窗口中搜索文字并替换" IDM_SELFONT "选择窗口中文字使用的字体" IDM_SELCOLOR "选择窗口的背景颜色" END //##################################################################
第09章 通用控件
版权所有 © 云南伯恩科技 证书:粤ICP备09170368号