●未入门生手问:为什么MFC有很多地方必须使用指针,而不能用对象

●●未入门新手问:为什么MFC有很多地方必须使用指针,而不能用对象?
比如说新建一个窗口:
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);

为什么这样就没有反应?为什么一定要用指针?请老大们指点下

------解决方案--------------------
上面的代码可以弹出一个窗口中,如果我使用下面的代码,建立一个对象

NEWDLG d1;
d1.Create(IDD_DIALOG1,NULL);
d1.ShowWindow(SW_SHOW);

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