【问题标题】:Doing extra initialisations on a MFC Dialog in Visual Studio C++ 2008 Pro在 Visual Studio C++ 2008 Pro 中的 MFC 对话框上进行额外的初始化
【发布时间】:2025-12-16 01:20:07
【问题描述】:

如何在调用 DoModal(); 之前对模态对话框进行额外的初始化; ?

整个应用程序是使用 VS 向导创建的。 我有一个主对话框(当我在 Visual Studio 2008 Professional 中选择新的 MFC 应用程序时自动创建的那个)。
当我单击此对话框上的按钮时,我想打开另一个对话框并将 CString 值设置到 CEdit 控件中。

我的代码:

...
void MainDlg::OnClickedButtonX(){
   SecondDialogClass Dlg2;
   Dlg2.asocVar2Cedit.SetWindowTextW(L"my text");
   Dlg2.DoModal();
}
//asocVar2Cedit is the associeted control variable to the 
//CEdit control on the second Dialog (Right Click > Add Variable..  in VSC++)
...

此代码在运行时在 winocc 中生成“Debug Assertion”错误...

有什么想法吗?
提前谢谢你。

【问题讨论】:

    标签: c++ mfc


    【解决方案1】:

    OnInitDialog (WM_INITDIALOG) 处理程序添加到您的 CDialog 派生类并让它自行初始化。

    【讨论】:

    • 实际上这可能会有所帮助..但我不明白你到底是什么意思..方法原型是什么?我如何让它自己初始化?