首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

问一个 关于 CDialog:OnInitDialog()有关问题,请进

2012-01-22 
问一个 关于 CDialog::OnInitDialog()问题,请进在基于对话框的应用程序中OnInitDialog()函数里面的CDialog

问一个 关于 CDialog::OnInitDialog()问题,请进
在基于对话框的应用程序中OnInitDialog()函数里面的CDialog::OnInitDialog();作用是什么?在哪种情况下可以不要呢?
如下:
BOOL   CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
}
改为:
BOOL   CTestDlg::OnInitDialog()
{
//CDialog::OnInitDialog();
}


[解决办法]
BOOL CDialog::OnInitDialog()
{
// execute dialog RT_DLGINIT resource
BOOL bDlgInit;
if (m_lpDialogInit != NULL)
bDlgInit = ExecuteDlgInit(m_lpDialogInit);
else
bDlgInit = ExecuteDlgInit(m_lpszTemplateName);

if (!bDlgInit)
{
TRACE0( "Warning: ExecuteDlgInit failed during dialog init.\n ");
EndDialog(-1);
return FALSE;
}

// transfer data into the dialog from member variables
if (!UpdateData(FALSE))
{
TRACE0( "Warning: UpdateData failed during dialog init.\n ");
EndDialog(-1);
return FALSE;
}

// enable/disable help button automatically
CWnd* pHelpButton = GetDlgItem(ID_HELP);
if (pHelpButton != NULL)
pHelpButton-> ShowWindow(AfxHelpEnabled() ? SW_SHOW : SW_HIDE);

return TRUE; // set focus to first one
},我现在还没有完全看完,一起看
[解决办法]
其实主要执行了三项操作:1、资源初始化;2、通过member数据初始化CEdit等,UpdateData(FLASE)3、就是Help按钮的处理,有此按钮就显示
[解决办法]
肯定不行,以上三个操作,第一个操作时绝对不能少的
[解决办法]
BOOL CTestDlg::OnInitDialog()
{
//CDialog::OnInitDialog();
}
这个屏蔽掉似乎没有意义啊....真的改成你这样好象也没什么大问题
[解决办法]
你不在OnInitDialog()里写其他代码做其他事情...屏蔽掉没关系

如果有其他操作就不行了
[解决办法]
如果屏蔽掉,并且你也不执行任何操作,与不屏蔽掉还是有一定区别的,只是你感觉不到而已
[解决办法]
BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
}
表示CTestDlg这个类调用的是CDialog类的OnInitDialog()函数(初始化函数)。
主应用程序必须有这个初始化函数,不然没法运行。如果是主应用程序调用的对话框程序
可以不要这个初始化函数。

[解决办法]
了解了类的 封装 ,继承,多态性就不会再问这个问题了。

热点排行