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章 通用控件 · 9.2 使用状态栏(1) 下页:第09章 通用控件 · 9.2 使用状态栏(3)

第09章 通用控件

版权所有 © 云南伯恩科技 证书:粤ICP备09170368号