無模式對話框和Windows通用對話框_第1頁
無模式對話框和Windows通用對話框_第2頁
無模式對話框和Windows通用對話框_第3頁
無模式對話框和Windows通用對話框_第4頁
無模式對話框和Windows通用對話框_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、無模式對話框和Windows通用對話框1、利用對話框編輯器創(chuàng)立一個對話框資源2、用ClassWizard來創(chuàng)立CEx07aDialog類3、添加變量到CEx07aDialog類中IDC_EDIT1- m_strEdit14、編輯CEx07aDialog.h增加視圖指針和函數(shù)原型private:CView* m_pView;public:CEx07aDialog(CView* pView);BOOL Create();5、編輯CEx07aDialog.h并在其中定義WMGOODBYE消息ID#define WM_GOODBYE WM_USER + 5 /常量WM_USER是用戶自定義消息中可利用

2、的第一個消息6、在文件CEx07aDialog.cpp中參加無模式對話框的構(gòu)造函數(shù)CEx07aDialog:CEx07aDialog(CView* pView) / modeless constructorm_pView = pView;BOOL CEx07aDialog:Create()return CDialog:Create(CEx07aDialog:IDD);8、編輯CEx07aDialog.cpp文件中的OnOK和OnCancel的單擊響應(yīng)函數(shù)void CEx07aDialog:OnCancel() / not really a message handlerif (m_pView

3、!= NULL) / modeless case - do not call base class OnCancelm_pView-PostMessage(WM_GOODBYE, IDCANCEL);else CDialog:OnCancel(); / modal casevoid CEx07aDialog:OnOK() / not really a message handlerif (m_pView != NULL) / modeless case - do not call base class OnOKUpdateData(TRUE);m_pView-PostMessage(WM_GO

4、ODBYE, IDOK);else CDialog:OnOK(); / modal caseclass CEx07aView : public CViewprivate:CEx07aDialog* m_pDlg;10、修改ex07aView.cpp文件中的CEx07aView類的構(gòu)造函數(shù)和析構(gòu)函數(shù)CEx07aView:CEx07aView()m_pDlg = new CEx07aDialog(this);11、CEx07aView:CEx07aView()delete m_pDlg; / destroys window if not already destroyed12、在ex07aView

5、.cpp文件的虛函數(shù)OnDraw中加進一些代碼void CEx07aView:OnDraw(CDC* pDC)pDC-TextOut(0, 0, Press the left mouse button here.);13、利用ClassWizard加進CEx07aView的鼠標消息處理函數(shù)。請加進WM _LBUTTONDOWN和 WM_RBOTTONDOWN消息的處理函數(shù),然后再按如下的代碼對 ex07aView.cpp文件中的這兩個消息處理函數(shù)分別進行編輯:void CEx07aView:OnLButtonDown(UINT nFlags, CPoint point) / creates t

6、he dialog if not created alreadyif (m_pDlg-GetSafeHwnd() = 0) m_pDlg-Create(); / displays the dialog windowvoid CEx07aView:OnRButtonDown(UINT nFlags, CPoint point) m_pDlg-DestroyWindow();/ no problem if window was already destroyed#include ex07aView.h#include ex07aDialog.h15、針對WM_GOODBYE消息加進自己的消息代碼在

7、ex07aView.cpp將以下語句行加在BECIN MESSAGE MAP I語句之后但必須將它加在AFX_MSG_MAP之外:BEGIN_MESSAGE_MAP(CEx07aView, CView)ON_MESSAGE(WM_GOODBYE, OnGoodbye)/AFX_MSG_MAP(CEx07aView)ON_WM_LBUTTONDOWN()ON_WM_RBUTTONDOWN()/AFX_MSG_MAPEND_MESSAGE_MAP()然后加進完整的消息處理函數(shù)LRESULT CEx07aView:OnGoodbye(WPARAM wParam, LPARAM lParam)/ me

8、ssage received in response to modeless dialog OK/ and Cancel buttonsm_pDlg-DestroyWindow();return 0L;16、在ex07aView.h中加人如下函數(shù)原型。將下面的語句加在DECLARE_MESSAGE_MAP()語句之前AFX_ MSC括弧對之外:/AFX_MSG(CEx07aView)afx_msg void OnLButtonDown(UINT nFlags, CPoint point);afx_msg void OnRButtonDown(UINT nFlags, CPoint point)

9、;/AFX_MSGafx_msg LRESULT OnGoodbye(WPARAM wParam, LPARAM lParam);DECLARE_MESSAGE_MAP()Windows通用對話框-CfileDialog1、用對話框編輯器創(chuàng)立對話框資源2、利用ClassWizard來創(chuàng)立CSpecialFileDialog類把名字更改相應(yīng)文件名為SpecFileDlg.h和SpecFileDlg.cpp手工將Base Class 改為CfileDialog在SpecFileDlg.h中將class CSpecialFileDialog : public CDialog改為class CSpec

10、ialFileDialog : public CFileDialog加人下面兩個公有數(shù)據(jù)成員public:CString m_strFilename;BOOL m_bDeleteAll;最后;編輯構(gòu)造函數(shù)聲明如下public:CSpecialFileDialog(BOOL bOpenFileDialog, / TRUE for FileOpen, FALSE for FileSaveAsLPCTSTR lpszDefExt = NULL,LPCTSTR lpszFileName = NULL,DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPRO

11、MPT,LPCTSTR lpszFilter = NULL,CWnd* pParentWnd = NULL);3、在SpecFileDlg.h中用CFileDialog替換CDialog4、在SpecFileDlg.CPP文件中CSpecialFileDialog構(gòu)造函數(shù)進行編輯CSpecialFileDialog:CSpecialFileDialog(BOOL bOpenFileDialog,LPCTSTR lpszDefExt, LPCTSTR lpszFileName, DWORD dwFlags,LPCTSTR lpszFilter, CWnd* pParentWnd): CFileD

12、ialog(bOpenFileDialog, lpszDefExt, lpszFileName,dwFlags, lpszFilter, pParentWnd)/AFX_DATA_INIT(CSpecialFileDialog)/ NOTE: the ClassWizard will add member initialization here/AFX_DATA_INITm_ofn.Flags |= OFN_ENABLETEMPLATE;m_ofn.lpTemplateName = MAKEINTRESOURCE(IDD_FILESPECIAL);m_ofn.lpstrTitle = Dele

13、te File;m_bDeleteAll = FALSE;5、在CSpecialFileDialog類中映射WM_INITDIALOG消息BOOL CSpecialFileDialog:OnInitDialog() BOOL bRet = CFileDialog:OnInitDialog();if (bRet = TRUE) GetParent()-GetDlgItem(IDOK)-SetWindowText(Delete);return bRet;6、在CSpecialFileDialog類中映射IDC_DELETE按鈕void CSpecialFileDialog:OnDelete() m

14、_bDeleteAll = TRUE;/ 0x480 is the child window ID of the File Name edit control/ (as determined by SPYXX)GetParent()-GetDlgItem(0x480)-GetWindowText(m_strFilename);GetParent()-SendMessage(WM_COMMAND, IDCANCEL);void CEx07aView:OnDraw(CDC* pDC)pDC-TextOut(0, 0, Press the left mouse button here.);8、利用C

15、lassWizard加進CEx07aView的鼠標消息處理函數(shù)。加進WM _LBUTTONDOWN消息的處理函數(shù)void CEx07bView:OnLButtonDown(UINT nFlags, CPoint point) CSpecialFileDialog dlgFile(TRUE, NULL, *.obj);CString strMessage;int nModal = dlgFile.DoModal();if (nModal = IDCANCEL) & (dlgFile.m_bDeleteAll) strMessage.Format(Are you sure you want to

16、delete all %s files?,dlgFile.m_strFilename);if (AfxMessageBox(strMessage, MB_YESNO) = IDYES) HANDLE h;WIN32_FIND_DATA fData;while(h = :FindFirstFile(dlgFile.m_strFilename, &fData) != (HANDLE) 0xFFFFFFFF) / no MFC equivalentif (:DeleteFile(fData.cFileName) = FALSE) strMessage.Format(Unable to delete file %sn,fData.cFileName);AfxMessageBox(strMessage);break;else if (nModal = IDOK) CString str

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論