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章 通用对话框
版权所有 © 云南伯恩科技 证书:粤ICP备09170368号