 |
操作系统: windows2000
编程工具: VC
问题: 无模式对话框显示问题??
为什么创建无模式对话框一定要用指针呢!直接用对象怎么不行呢?
直接用对象能创建但不能显示出来,再加上一个MessageBox后却能显示出来,但一关掉那个MessageBox这个窗体也消失了!
用下面这个代码能正常显示:
CAboutDlg *aboutDlg=new CAboutDlg;
aboutDlg->Create(IDD_ABOUTBOX);
但是用下面的却不行:
AboutDlg aboutDlg;
aboutDlg.Create(IDD_ABOUTBOX,this);
一个是指针,一个是对象直接创建,怎么会有问题?不是一样的吗?(Turelies)
|
| |
|
 |
关键不在于是否一定要指针,关键在于你把aboutDlg定义在哪里?我估计你的程序是这样的:
CXXXDlg::OnOK()
{
AboutDlg aboutDlg;
aboutDlg.Create(IDD_ABOUTBOX,this);
}
如果你这样定义aboutDlg,那么当程序退出OnOK函数的时候,aboutDlg变量就被自动清除,所以创建的对话框就不存在了。如果你一定要使用对象直接创建,那么aboutDlg必须是CXXXDlg类的成员或者全局变量,也就是说必须保证在退出OnOK时,aboutDlg仍然存在。这样做显然很麻烦,所以在大多数情况下都使用指针来创建无模式对话框。
此问题由李海回答。
附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, 窗体与菜单, form, window, tform。
|
| |
|
| |
|
| |
|
|