![在CFileDialog對話框中添加控件_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/10/a16072aa-6d8b-43d3-ae05-1c7d74f5e07d/a16072aa-6d8b-43d3-ae05-1c7d74f5e07d1.gif)
![在CFileDialog對話框中添加控件_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/10/a16072aa-6d8b-43d3-ae05-1c7d74f5e07d/a16072aa-6d8b-43d3-ae05-1c7d74f5e07d2.gif)
![在CFileDialog對話框中添加控件_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/10/a16072aa-6d8b-43d3-ae05-1c7d74f5e07d/a16072aa-6d8b-43d3-ae05-1c7d74f5e07d3.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、在C對話框中添加控件關鍵字:C擴展類,OFNHookProc需求描述:昨天遇到一個用戶需求,在C對話框(SAVE )中加入一個 Check , 一個Edit ,一個Spin控件,dlg.Domodal()=IDOK返回時要同時獲得 Edit控件中的數(shù)據(jù).實現(xiàn)方法:如果只需要控制控件,用方法一即可,但如果需要獲取數(shù)據(jù),則只能用方法二。我最終用的就是方法二.方法一:首先查找MSDN關于C擴展的實現(xiàn)描述, 上網(wǎng)查到實現(xiàn)預覽圖片式的C的例子。按照其思路從C派生了一個新的類 C.在類中添加以下代碼#defi ne WM_CHECKZOOMIN WM_USER+1856public:BOOL bZooml
2、 n;UINT n Mul; 1100/前置聲明BOOL NEAR CALLBACK Han dleNotify(HWND hDlg, LPOFNOTIFY pofn);UINT_PTR CALLBACK OFNHookProc(HWND hDlg, UINT uMsg, WPARAM wParam,LPARAM lParam);/ CIMPLEMENT_DYNAMIC(C, C)C(BOOL bOpe n, LPCTSTR lpszDefExt, LPCTSTR lpsz,DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pPare ntWnd):C(bOpe
3、 n, lpszDefExt, lps z, dwFlags, lpszFilter, pPare ntWnd)/這個四個常用標識位m_ofn.Flags |= OFN_ENABLETEMPLATE |OFN_HIDEREADONLY|OFN_EXPLORER;OFN_EXPLORER | OFN_ENABLEHOOKm_ofn.lpstrTitle=_T(高級保存對話框);m_ofn.hl nsta nee = AfxGetl nsta nceHa ndle();m_ofn.lpstrFilter = _T(*bmpO*BMPO所有文件 0 *0 );m_ofn .l pTemplateNa
4、me = MAKEINTRESOURCE(IDD_);m_ofn .l pfnHook =(LPOFNHOOKPROC)OFNHookProc;/Hook function for the Comm Dlg/在這里處理我們感興趣的消息,想要哪個,截哪個 !UINT_PTR CALLBACK OFNHookProc(HWND hDlg, UINT uMsg, WPARAM wParam,LPARAM lParam)switch (uMsg)case WMNITDIALOG:/初始化對話框上的控件if(Se ndDlgltemMessage(hDlg, IDC_CHECK_ZOOMIN, BM_G
5、ETCHECK,0,0)=BST_UNCHECKED):E nableWi ndow(GetDlgltem(hDlg,IDC_EDIT_ZOOMNUM),FALSE);:E nableWi ndow(GetDlgltem(hDlg,IDC_SPIN_ZOOMNUM),FALSE);:SetWi ndowText(GetDlgltem(hDlg, IDC_EDIT_ZOOMNUM),_T(1);/ShowWin dow(butto n,SW_HIDE);break;case WM_DESTROY:/ 消毀對話框LPOPEN lpOFN = (LPOPEN)GetWi ndowL on g(hDl
6、g, DWL_USER);break;case WM_COMMAND:/ 這里處理,IDC_CHECK_ZOOMIN 命令if (HIWORD(wParam) = BN_CLICKED) & (LOWORD(wParam)=IDC_CHECK_ZOOMIN)BOOL bZoomln = TRUE;if(Se ndDlgltemMessage(hDlg, IDC_CHECK_ZOOMIN, BM_GETCHECK, 0, 0)=BST_CHECKED)bZoomIn = TRUE;:E nableWi ndow(GetDlgltem(hDlg,IDC_EDIT_ZOOMNUM),TRUE);:E
7、 nableWi ndow(GetDlgltem(hDlg,IDC_SPIN_ZOOMNUM),TRUE);elsebZoomIn = FALSE;/:SetWi ndowText(GetDlgltem(hDlg, IDC_EDIT_ZOOMNUM),);:E nableWi ndow(GetDlgltem(hDlg,IDC_EDIT_ZOOMNUM),FALSE);:E nableWi ndow(GetDlgltem(hDlg,IDC_SPIN_ZOOMNUM),FALSE);HWND hParent = GetParent(hDlg);/注意hDlg是新加的模板對話框句柄,它是C對話框的子
8、部分,要獲取 C對話框的句柄需要用GetParent 函數(shù)PostMessage(hPare nt,WM_CHECKZOOMIN,(WPARAM)bZooml n,(LPARAM)0);bZoomln = FALSE;break;case WM_NOTIFY:Han dleNotify(hDlg, (LPOFNOTIFY)lParam);break;return 0;/這里處理notify 消息BOOL NEAR CALLBACK Han dleNotify(HWND hDIg, LPOFNOTIFY pofn)C dlg(TRUE);switch (pof n-hdr.code)case C
9、DN_SELCHANGE:/char sz;/ Get the path of the selected file./if (CommDlg_Ope nSave_Get(GetPare nt(hDlg), szFile, sizeof(szFile) SetWi ndowText(buff);();6結(jié)果測試。C dlg(TRUE);dlg.DoModal();通過指定資源ID ,可以使用Wizard添加處理消息,OK這正是我想要的,按照它的方法,很快就實現(xiàn)了需求,調(diào)用如下.h/ Dialog DataAFX_DATA(C)en um IDD = IDD_ ;AFX_DATApublic:BO
10、OL bZooml n;UINT n Mui; 1100afx_msg void OnBn ClickedCheckZoomi n();afx_msg void On DeltaposSpi nZoom num(NMHDR *pNMHDR, LRESULT *pResult);virtual BOOL Onlni tDialog();afx_msg void OnEn Cha ngeEditZoo mn um();afx_msg void OnEn KillfocusEditZoo mn um();.cppC(BOOL bOpe n, LPCTSTR lpszDefExt, LPCTSTR l
11、psz,DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pPare ntWnd):C(bOpe n, lpszDefExt, lps z, dwFlags, lpszFilter, pPare ntWnd)/這個四個常用標識位m_ofn.Flags |= OFN_ENABLETEMPLATE |OFN_HIDEREADONLY|OFN_EXPLORER;OFN_EXPLORER | OFN_ENABLEHOOKm_ofn.lpstrTitle=_T(高級保存對話框);m_ofn.hI nsta nee = AfxGetI nsta nceHa ndle();m
12、_ofn.lpstrFilter = _T(*bmp0*BMP0所有文件 0 *.*0 );SetTemplate(0, IDD;BEGIN_MESSAGE_MAP(C, C)ON_COMMAND()ON_BN_CLICKED(IDC_CHECK_ZOOMIN, &C)ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_ZOOMNUM, &C)ON_EN_CHANGE(IDC_EDIT_ZOOMNUM, &C)ON_EN_KILLFOCUS(IDC_EDIT_ZOOMNUM, &C)END_MESSAGE_MAP()void C()/ TODO:在此添加控件通知處理程序代碼bZo
13、omln = !bZooml n;GetDlgltem(IDC_EDIT_ZOOMNUM)-E nableWi ndow(bZooml n);GetDlgltem(IDC_SPIN_ZOOMNUM)-E nableWi ndow(bZooml n);void C(NMHDR *pNMHDR, LRESULT *pResult)LPNMUPDOWN pNMUpDow n = re in terpret_cast(pNMHDR);/ TODO:在此添加控件通知處理程序代碼if (pNMUpDow n-iDelta 0)if (n Mul 1)n Mul-;elseif (n Mul SetWi n
14、dowText (I pstr); *pResult = 0;BOOL C()C();/ TODO:在此添加額外的初始化GetDlgItem(IDC_EDIT_ZOOMNUM)-E nableWi ndow(FALSE);GetDlgItem(IDC_SPIN_ZOOMNUM)-E nableWi ndow(FALSE);GetDlgItem(IDC_EDIT_ZOOMNUM)-SetWi ndowText(_T(1);bZoomIn = FALSE;n Mul = 1;return TRUE; / return TRUE unl ess you set the focus to a cont
15、rol/異常:OCX 屬性頁應返回FALSE void C()/ TODO:如果該控件是 RICHEDIT 控件,它將不/發(fā)送此通知,除非重寫C()/ 函數(shù)并調(diào)用 CRichEditCtrl().SetEve ntMask(),/同時將ENM_CHANGE 標志 或”運算到掩碼中。/ TODO:在此添加控件通知處理程序代碼CString strText;GetDlgItem(IDC_EDIT_ZOOMNUM)-GetWi ndowText(strText);nMul = _wtoi(strText);if ( (n Mul 100)if (n Mul 100) nMul = 100;wchar_t buff10;_itow( nMul, buff, 10 );LPCTSTR Ipstr = (LPCTSTR)buff;GetDlgltem(IDC_EDIT_ZOOMNUM)-SetWi ndowText(lpstr);void C()/ TODO:在此添加控件通知處理程序代碼CString strText;GetDlgItem(IDC_EDIT_ZOOMNUM)-GetWi ndowText(strText);nMul = _wtoi(strText)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年制動帶項目可行性研究報告
- 別墅房屋轉(zhuǎn)讓合同范本
- 產(chǎn)品訂購合同范本模板
- 凈化工程合同范本
- 企業(yè)食堂經(jīng)營合同范本
- 如何推動專家型校長的成長
- 農(nóng)村屋瓦收購合同范本
- 買汽車有合同范本
- 使用權(quán)銷售合同范例
- 2025年度智能農(nóng)業(yè)管理系統(tǒng)開發(fā)與應用合同
- 醫(yī)院緊急醫(yī)療救援管理制度
- 2024-2025學年新教材高中政治 第1單元 民事權(quán)利與義務 第1課 第1框 認真對待民事權(quán)利與義務教案 新人教版選擇性必修2
- 企業(yè)落實食品安全主體責任監(jiān)督管理制度
- 咨詢與評估管理制度
- 中醫(yī)辨證-八綱辨證(中醫(yī)學課件)
- CJT 313-2009 生活垃圾采樣和分析方法
- 2024年長沙市中考數(shù)學真題試卷及答案
- 江蘇省揚州市梅嶺教育集團2023-2024學年八年級下學期6月期末數(shù)學試題(解析版)
- 承德市承德縣2022-2023學年七年級上學期期末數(shù)學試題
- 《網(wǎng)絡安全防護項目教程》課件項目2 windows操作系統(tǒng)安全防護
- 肯德基用戶分析報告
評論
0/150
提交評論