视图类初始化中无法创建对话框
在CView类中建议一个对话框的指针:
CMyDlg * pdlg;
然后在OninitialUpdate()函数中创建此对话框:
pDlg = new CMyDlg();
pDlg->Create(IDD_MyDlg, this); //到这一步就编译不通过, 我意识到是指针指向了视图类指针,但是去掉this后仍然编译不通过, 不知道怎么样才能创建此对话框?
也就是此对话框的父类应该写成什么?
在view类中的其他不是初始化的函数中都可以运行, 但是就是在初始化的函数中不能运行,例如 oninintialupdate() onshowwindow() oncreate() precreatewindow() 等等函数中都不能运行, 不知道是什么原因阿?
我的视图类是基于formview的。
是不是在视图类还没有创建的时候不能加载其它对话框啊?
有很多初始化都不能完成不知道是什么原因啊?
问题点数:50、回复次数:7Top
1 楼hlidea()回复于 2006-03-28 12:02:35 得分 0
刚试了一下,没有任何问题,在View里面CMyDlg头文件加了吗Top
2 楼hlidea()回复于 2006-03-28 12:04:47 得分 20
我的代码如下
void CXXXView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
pdlg=new CMyDlg();
pdlg->Create(IDD_DIALOG1);
pdlg->ShowWindow(SW_SHOW);
}Top
3 楼hlidea()回复于 2006-03-28 12:06:04 得分 0
还有,你pdlg还是pDlg啊。搞清楚点Top
4 楼ydfivy(我就是一送外卖的)回复于 2006-03-28 12:13:00 得分 10
加以创建的.
你的错误是什么?能贴出来了吗?
Top
5 楼xbgs(delphifan)回复于 2006-03-28 13:07:50 得分 0
我的错误是: windows产生了错误,你需要给微软发送错误报告。
我认为就是视图类没有创建的问题。
因为我重新写了一下,写了一个消息, 用sendmessage()发送就错误。
而用postmessage()发送就可以。
基本上可以证明是视图类还没有创建就开始create(IDD_dlg,this); 因为这个this是指向view类的,而此时view类还没有创建完成。
我想就是这个原因吧。
我回去再好好检查一下代码吧。
我是在view类的头文件中声明: #incldue “mydlg.h”
然后定义:CMydlg * pDlg;
然后再实现文件中:
pDlg = new CMydlg();
pDlg->Create(IDD_Mydlg, this);
pDlg->showwindow(rect);
Top
6 楼cai114(硬鸡常空(KingKong归来))回复于 2006-03-30 01:57:51 得分 0
帮你UPTop
7 楼jiangsheng(蒋晟.Net[MVP])回复于 2006-03-30 06:25:39 得分 20
http://www.codeguru.com/Cpp/controls/propertysheet/article.php/c591/Top




