比如说新建一个窗口:
NEWDLG *dlg=new NEWDLG;      //NEWDLG是新窗口类 
dlg->Create(IDD_DIALOG1,NULL);
dlg->ShowWindow(SW_SHOW);上面的代码可以弹出一个窗口中,如果我使用下面的代码,建立一个对象

NEWDLG d1;
d1.Create(IDD_DIALOG1,NULL);
d1.ShowWindow(SW_SHOW);为什么这样就没有反应?为什么一定要用指针?请老大们指点下

解决方案 »

  1.   

    这和MFC没关系。 这是一个基本的C/C++变量作用域的问题。 
      

  2.   

    上面的代码可以弹出一个窗口中,如果我使用下面的代码,建立一个对象NEWDLG d1;
    d1.Create(IDD_DIALOG1,NULL);
    d1.ShowWindow(SW_SHOW);为什么这样就没有反应?为什么一定要用指针?请老大们指点下
    =============
    不是没有反应,而是对话框闪了一下就没了,这是因为NEWDLG d1;是一个局部变量,而你用Create和ShowWindow产生的是一个非模态对话框,执行到ShowWindow之后,这个函数就结束了,此时局部变量d1就被释放了,所以对话框就被关闭了。
    如果定义成指针,那么指针new出来以后是分配在堆上的,即使函数结束,指针所指的也不会被释放。所以就可以了。
    其实你上面的代码,如果将d1定义为全局变量同样也可以。