软件注册站
热情软件屋

 
为什么创建无模式对话框一定要用指针呢
编号: QA004806    
建立日期: 2003年12月22日 最后修改日期: 2003年12月22日
所属类别: C/C++ - 窗体与菜单
   
    操作系统: 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

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio