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