在单文档中显示我的第一个对话框
在單文檔中顯示我的第一個對話框
?(2010-04-19 21:19:50) 轉載▼標簽:? it | ? |
今天編寫了在單文檔中創建對話框以及調用對話框的代碼,收獲很多;
1:OnInitDialog函數的加載問題尤其是在VS上的加載;(這一點花了很長時間才查到資料)
OnInitDialog()函數是個virtual(虛函數),在它的類中用添加虛
函數的方法,會發現添加的虛函數里面沒有這個函數,而這個
OnInitDialog函數是很有用的,在一般的添加進去的對話框的類中
是不會有這個函數的,必須手工增加進去,當然不用手工寫代碼,手
動添加時可能會出錯.可以通過VC加進去,而要加的這個函數的名
字不是OnInitDialog,所以很難找到.其原因是因為要加的函數是
WM_INITDIALOG.
這個函數的添加方法是這樣的,選擇要加入函數的對話框,右鍵-
>ClassWiZard(類向導)->Message Maps(消息映射),對象里面選擇
對話框,Messages(消息)里面選擇WM_INITDIALOG,然后點Add
Function(增加函數),這樣就映射到類中去了,它的函數名稱是
OnInitDialog,而不是WM_INITDIALOG.這時可以點Edit Fuction,
編輯函數了.
??????Visual studio???沒有舊風格class wizard了。所以無
法像VC6.0那樣添加oninitdialog函數。其方法是:首先添加
CDialog對話框的類,方法是可以在對話框上點右鍵,在右鍵菜
單里點Add Class,然后打開剛才添加的類的頭文件,在頭文
件的類的聲明區里按F4調出屬性窗口,在屬性窗口的工具欄里
找到Overrides點擊它會切換到重寫方法列表界面,在這個列
表里找到OnInitDialog,點后面的下拉組合框就有添加
OnInitDialog了,點一下就可以把這個方法重寫到你的程序里
了。
還有兩個要注意的問題是:
一個是:子對話框添加類后,打開此類的頭文件,注意了:一定
要確認鼠標光標處于類聲明的區域,這個時候再打開屬性窗口,
點擊工具欄上的Overrides(重寫),里面可以找到
OnInitDialog.
如果鼠標沒處在類聲明的區域,屬性窗口就顯示的是當前頭文件
的屬性,工具欄是不會有Overrides(重寫)這一項的。
?
另一個是:
ADD Class后 要在左邊文件列表上面選擇 show all files (顯示所有文件)后 再打
開添加的類的頭文件 ....這樣才行的 .......
?
就是你為子對話框添加完類后,在vs的左邊文件列表上選擇show all files。 然后點擊進去你添加的類的頭文件。這時在(一般)右邊的屬性窗口里 會有一個圖標(Overrides)點擊它?
2:由“在程序中調用對話框”所學習到的;
不同的域對應不同的頭文件以及執行文件,eg:菜單中測試對話框對應的頭文件就是MainFrm.h對應的執行文件是MainFrm.cpp而對于對話框中的控件對應的就是FirstDlg.h以及FirstDlg.cpp.
3:連接包含問題
當主菜單要與對話框進行連接時,在OnTestDlg函數的實現文件MainFrm.cpp的前面添加CFirstDlg類的包含語句:#include "FirstDlg.h"進行連接;
?
代碼:
##include "FirstDlg.h"
void CMainFrame::OnTestDlg()
{
?// TODO: 在此添加命令處理程序代碼
?CFirstDlg dlg;??//定義對話框類對象;
?dlg.DoModal();//顯示對話框;
}
BOOL CFirstDlg::OnInitDialog()
{
?CDialog::OnInitDialog();
?// TODO:??在此添加額外的初始化
????CStatic *pWnd=(CStatic*)GetDlgItem(IDC_STATIC1);
?pWnd->SetWindowTextW(_T("這是我的第一個對話框"));
?return TRUE;??// return TRUE unless you set the focus to a control
?// 異常: OCX 屬性頁應返回 FALSE
}
轉載于:https://www.cnblogs.com/jack-jia-moonew/p/4256414.html
總結
以上是生活随笔為你收集整理的在单文档中显示我的第一个对话框的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机号码格式等判断
- 下一篇: Word2Vec小心得