电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

在CFileDialog对话框中添加控件VIP专享VIP免费

在CFileDialog对话框中添加控件_第1页
在CFileDialog对话框中添加控件_第2页
在CFileDialog对话框中添加控件_第3页
在CFileDialog对话框中添加控件关键字:CFileDialog扩展类,OFNHookProc需求描述:昨天遇到一个用户需求,在CFileDialog对话框(SAVE)中加入一个Check,一个Edit,一个Spin控件,dlg.Domodal()==IDOK返回时要同时获得Edit控件中的数据.实现方法:如果只需要控制控件,用方法一即可,但如果需要获取数据,则只能用方法二。我最终用的就是方法二.方法一:首先查找MSDN关于CFileDialog扩展的实现描述,上网查到实现预览图片式的CFILEDIALOG的例子。按照其思路从CFileDialog派生了一个新的类CFileDialogEX.在类中添加以下代码#defineWM_CHECKZOOMINWM_USER+1856public:BOOLbZoomIn;UINTnMul;//[1~100]//前置声明---------------BOOLNEARCALLBACKHandleNotify(HWNDhDlg,LPOFNOTIFYpofn);UINT_PTRCALLBACKOFNHookProc(HWNDhDlg,UINTuMsg,WPARAMwParam,LPARAMlParam);//CFileDialogExIMPLEMENT_DYNAMIC(CFileDialogEx,CFileDialog)CFileDialogEx::CFileDialogEx(BOOLbOpenFileDialog,LPCTSTRlpszDefExt,LPCTSTRlpszFileName,DWORDdwFlags,LPCTSTRlpszFilter,CWnd*pParentWnd):CFileDialog(bOpenFileDialog,lpszDefExt,lpszFileName,dwFlags,lpszFilter,pParentWnd){//这个四个常用标识位m_ofn.Flags|=OFN_ENABLETEMPLATE|OFN_HIDEREADONLY|OFN_EXPLORER;//OFN_EXPLORER|OFN_ENABLEHOOKm_ofn.lpstrTitle=_T("高级保存对话框");m_ofn.hInstance=AfxGetInstanceHandle();m_ofn.lpstrFilter=_T("*.bmp\0*.BMP\0所有文件\0*.*\0");m_ofn.lpTemplateName=MAKEINTRESOURCE(IDD_FILEDIALOG_EX);m_ofn.lpfnHook=(LPOFNHOOKPROC)OFNHookProc;}//HookfunctionfortheCommDlg//在这里处理我们感兴趣的消息,想要哪个,截哪个!UINT_PTRCALLBACKOFNHookProc(HWNDhDlg,UINTuMsg,WPARAMwParam,LPARAMlParam){switch(uMsg){caseWM_INITDIALOG://初始化对话框上的控件if(SendDlgItemMessage(hDlg,IDC_CHECK_ZOOMIN,BM_GETCHECK,0,0)==BST_UNCHECKED){::EnableWindow(GetDlgItem(hDlg,IDC_EDIT_ZOOMNUM),FALSE);::EnableWindow(GetDlgItem(hDlg,IDC_SPIN_ZOOMNUM),FALSE);::SetWindowText(GetDlgItem(hDlg,IDC_EDIT_ZOOMNUM),_T("1"));//ShowWindow(button,SW_HIDE);}break;caseWM_DESTROY://消毁对话框{LPOPENFILENAMElpOFN=(LPOPENFILENAME)GetWindowLong(hDlg,DWL_USER);}break;caseWM_COMMAND://这里处理,IDC_CHECK_ZOOMIN命令{if((HIWORD(wParam)==BN_CLICKED)&&(LOWORD(wParam)==IDC_CHECK_ZOOMIN)){BOOLbZoomIn=TRUE;if(SendDlgItemMessage(hDlg,IDC_CHECK_ZOOMIN,BM_GETCHECK,0,0)==BST_CHECKED){bZoomIn=TRUE;::EnableWindow(GetDlgItem(hDlg,IDC_EDIT_ZOOMNUM),TRUE);::EnableWindow(GetDlgItem(hDlg,IDC_SPIN_ZOOMNUM),TRUE);}else{bZoomIn=FALSE;//::SetWindowText(GetDlgItem(hDlg,IDC_EDIT_ZOOMNUM),"");::EnableWindow(GetDlgItem(hDlg,IDC_EDIT_ZOOMNUM),FALSE);::EnableWindow(GetDlgItem(hDlg,IDC_SPIN_ZOOMNUM),FALSE);}HWNDhParent=GetParent(hDlg);//注意hDlg是新加的模板对话框句柄,它是CFileDialog对话框的子部分,要获取CFileDialog对话框的句柄需要用GetParent函数PostMessage(hParent,WM_CHECKZOOMIN,(WPARAM)bZoomIn,(LPARAM)0);bZoomIn=FALSE;}break;caseWM_NOTIFY:HandleNotify(hDlg,(LPOFNOTIFY)lParam);break;}return0;}//这里处理notify消息BOOLNEARCALLBACKHandleNotify(HWNDhDlg,LPOFNOTIFYpofn){CFileDialogExdlg(TRUE);switch(pofn->hdr.code){caseCDN_SELCHANGE:{//charszFile[MAX_PATH];////Getthepathoftheselectedfile.//if(CommDlg_OpenSave_GetFilePath(GetParent(hDlg),szFile,sizeof(szFile))<=sizeof(szFile))//{//if(GetFileAttributes(szFile)!=FILE_ATTRIBUTE_DIRECTORY)//{////ShouldweloadthePic//if(SendDlgItemMessage(hDlg,IDC_CHECK1,BM_GETCHECK,0,0)==BST_UNCHECKED)//dlg.ShowImagepreview(hDlg,szFile);//}//}}break;caseCDN_FILEOK:{intnum;GetDlgItemInt(hDlg,IDC_EDIT_ZOOMNUM,&num,FALSE);if(SendDlgItemMessage(hDlg,IDC_CHECK_ZOOMIN,BM_GET...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

文章天下+ 关注
实名认证
内容提供者

各种文档应有尽有

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部