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

                  invoke RtlZeroMemory,addr @stPS,sizeof @stPS
                  mov   @stPS.lStructSize,sizeof @stPS
                  push  hWinMain
                  pop   @stPS.hwndOwner
                  invoke PageSetupDlg,addr @stPS
                  .if   eax && @stPS.hDevMode
                         mov  eax,@stPS.hDevMode
                         mov  eax,[eax]
                        invoke wsprintf,addr szBuffer,addr szFormatPrt,eax
                         invoke MessageBox,hWinMain,addr szBuffer,\
                               addr szCaption,MB_OK
                  .endif
                  ret
 
_PageSetup        endp
;####################################################################
; 显示“保存”文件对话框
;####################################################################
_SaveAs           proc
                  local @stOF:OPENFILENAME
 
                  invoke RtlZeroMemory,addr @stOF,sizeof @stOF
                  mov   @stOF.lStructSize,sizeof @stOF
                  push  hWinMain
                  pop   @stOF.hwndOwner
                  mov   @stOF.lpstrFilter,offset szFilter
                  mov   @stOF.lpstrFile,offset szFileName
                  mov   @stOF.nMaxFile,MAX_PATH
                  mov   @stOF.Flags,OFN_PATHMUSTEXIST
                  mov   @stOF.lpstrDefExt,offset szDefExt
                  mov   @stOF.lpstrTitle,offset szSaveCaption
                  invoke GetSaveFileName,addr @stOF
                  .if   eax
                        invoke  MessageBox,hWinMain,addr szFileName,\
                                addr szCaption,MB_OK
                  .endif
                  ret
 
_SaveAs           endp
;####################################################################
; 显示“打开”文件对话框
;####################################################################
_OpenFile         proc
                  local @stOF:OPENFILENAME
 
                  invoke RtlZeroMemory,addr @stOF,sizeof @stOF
                  mov   @stOF.lStructSize,sizeof @stOF
                  push  hWinMain
                  pop   @stOF.hwndOwner
                  mov   @stOF.lpstrFilter,offset szFilter
                  mov   @stOF.lpstrFile,offset szFileName
                  mov   @stOF.nMaxFile,MAX_PATH
                  mov   @stOF.Flags,OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST
                  invoke GetOpenFileName,addr @stOF
                  .if   eax
                         invoke   MessageBox,hWinMain,addr szFileName,\
                                   addr szCaption,MB_OK
                  .endif
                  ret
 
_OpenFile         endp
;####################################################################
; 选择颜色
;####################################################################
_ChooseColor      proc
                  local @stCC:CHOOSECOLOR
 
                  invoke RtlZeroMemory,addr @stCC,sizeof @stCC
                  mov   @stCC.lStructSize,sizeof @stCC
                  push  hWinMain
                  pop   @stCC.hwndOwner
                  push  dwBackColor
                  pop   @stCC.rgbResult
                  mov   @stCC.Flags,CC_RGBINIT or CC_FULLOPEN
                  mov   @stCC.lpCustColors,offset dwCustColors
                  invoke ChooseColor,addr @stCC
                  .if   eax
                         push @stCC.rgbResult
                         pop  dwBackColor
                         invoke wsprintf,addr szBuffer,addr szFormatColor,\
                               dwBackColor
                         invoke MessageBox,hWinMain,addr szBuffer,\
                               addr szCaption,MB_OK
                  .endif
                  ret
 
_ChooseColor      endp
;####################################################################
; 选择字体
;####################################################################
_ChooseFont       proc
                  local @stCF:CHOOSEFONT
 
                  invoke RtlZeroMemory,addr @stCF,sizeof @stCF
                  mov   @stCF.lStructSize,sizeof @stCF
                  push  hWinMain
                  pop   @stCF.hwndOwner
                  mov   @stCF.lpLogFont,offset stLogFont
                  push  dwFontColor
                  pop   @stCF.rgbColors
                  mov    @stCF.Flags,CF_SCREENFONTS or CF_INITTOLOGFONTSTRUCT\
                         or CF_EFFECTS
                  invoke ChooseFont,addr @stCF
                  .if   eax
                         push @stCF.rgbColors
                         pop  dwFontColor
                         mov  eax,@stCF.iPointSize
                         shl  eax,1
                             invoke wsprintf,addr szBuffer,addr szFormatFont,\
                               addr stLogFont.lfFaceName,\
                               dwFontColor,eax
                         invoke MessageBox,hWinMain,addr szBuffer,\
                               addr szCaption,MB_OK
                  .endif
                  ret
 
_ChooseFont       endp
;####################################################################
_ProcDlgMain      proc   uses ebx edi esi hWnd,wMsg,wParam,lParam
                  local  @szBuffer[128]:byte
 
                  mov    eax,wMsg
                  .if    eax==   WM_CLOSE
                          invoke  EndDialog,hWnd,NULL
                  .elseif eax==   WM_INITDIALOG
;********************************************************************
; 注册“查找”对话框消息,初始化“查找”对话框的结构
;********************************************************************
                         mov  eax,hWnd
                         mov  hWinMain,eax
                         mov  stFind.hwndOwner,eax
                         mov  stFind.lStructSize,sizeof stFind

上页:第08章 通用对话框 · 8.1 通用对话框简介 下页:第08章 通用对话框 · 8.1 通用对话框简介(3)

第08章 通用对话框

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