WIN32汇编语言教程:第08章 通用对话框 · 8.1 通用对话框简介(3)

                      mov     stFind.Flags,FR_DOWN
                      mov       stFind.lpstrFindWhat,offset szFindText
                      mov     stFind.wFindWhatLen,sizeof szFindText
                       mov      stFind.lpstrReplaceWith,offset szReplaceText
                          mov       stFind.wReplaceWithLen,sizeof szReplaceText
                      invoke    RegisterWindowMessage,addr FINDMSGSTRING
                      mov     idFindMessage,eax
              .elseif eax==   WM_COMMAND
                      mov     eax,wParam
                      .if     ax ==  IDM_EXIT
                               invoke EndDialog,hWnd,NULL
                      .elseif ax==   IDM_OPEN
                               invoke _OpenFile
                      .elseif ax ==  IDM_SAVEAS
                               invoke _SaveAs
                      .elseif ax ==  IDM_PAGESETUP
                               invoke _PageSetup
                      .elseif ax ==  IDM_FIND
                              and    stFind.Flags,not FR_DIALOGTERM
                               invoke FindText,addr stFind
                      .elseif ax ==  IDM_REPLACE
                              and    stFind.Flags,not FR_DIALOGTERM
                               invoke ReplaceText,addr stFind
                      .elseif ax ==  IDM_SELFONT
                               invoke _ChooseFont
                      .elseif ax ==  IDM_SELCOLOR
                               invoke _ChooseColor
                      .endif
;********************************************************************
              .elseif eax ==  idFindMessage
                      xor     ecx,ecx
                      .if     stFind.Flags & FR_FINDNEXT
                               mov    ecx,offset szFindNext
                      .elseif stFind.Flags & FR_REPLACE
                               mov    ecx,offset szReplace
                     .elseif stFind.Flags & FR_REPLACEALL
                               mov    ecx,offset szReplaceAll
                      .endif
                      .if     ecx
                               invoke wsprintf,addr szBuffer,\
                                      addr szFormatFind,\
                                     ecx,addr szFindText,addr szReplaceText
                               invoke MessageBox,hWinMain,addr szBuffer,\
                                      addr szCaption,MB_OK
                 .endif
;********************************************************************
              .else
                     mov      eax,FALSE
                     ret
              .endif
              mov   eax,TRUE
              ret
 
_ProcDlgMain  endp
;####################################################################
start:
              invoke GetModuleHandle,NULL
              mov    hInstance,eax
              invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,\
                      offset _ProcDlgMain,NULL
              invoke ExitProcess,NULL
;####################################################################
              end    start

资源脚本文件CommDlg.rc的内容如下:

//##################################################################
#include                 <resource.h>
//##################################################################
#define           ICO_MAIN    1000
#define           DLG_MAIN    1000
#define           IDM_MAIN    1000
#define           IDM_OPEN    1101
#define           IDM_SAVEAS  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
//##################################################################
ICO_MAIN          ICON    "Main.ico"
//##################################################################
DLG_MAIN DIALOG 193, 180, 310, 134
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
//##################################################################

在资源脚本文件中定义了一个对话框用做主窗口,同时定义了一个菜单用来选择各种通用对话框。下面结合这个例子说明各种通用对话框的用法。

上页:第08章 通用对话框 · 8.1 通用对话框简介(2) 下页:第08章 通用对话框 · 8.2 使用通用对话框(1)

第08章 通用对话框

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