打开非模态对话框报错0xC0000005: 读取位置 0x00000020 时发生访问冲突
我想在A(主)对话框中初始化非模态B(子)对话框,但是不打开B,所以在A的OnInitDialog()中添加CBDlg*bdlg=newCBDlg;bdlg->Creat...
我想在A(主)对话框中初始化非模态B(子)对话框,但是不打开B,所以在A的OnInitDialog()中添加
CBDlg* bdlg=new CBDlg;
bdlg->Create(IDD_DIALOGb,NULL);
其他操作完后,在A中点击一个按钮 bdlg->ShowWIndow(SW_SHOW);打开B对话框,但是这样就报了上面的错误,请问我哪出问题了,应该如何调整。 展开
CBDlg* bdlg=new CBDlg;
bdlg->Create(IDD_DIALOGb,NULL);
其他操作完后,在A中点击一个按钮 bdlg->ShowWIndow(SW_SHOW);打开B对话框,但是这样就报了上面的错误,请问我哪出问题了,应该如何调整。 展开
1个回答
展开全部
你在OnInitDialog中bdlg是临时变量么?如果是,按钮响应中如何获取的bdlg指针?
建议方案:将bdlg作为A类成员变量,或者在按钮响应函数中声明和Create对话框bdlg
建议方案:将bdlg作为A类成员变量,或者在按钮响应函数中声明和Create对话框bdlg
追问
谢谢,之前我把dlg声明为静态变量在类外初始化为空,就报错了,不知道什么原因,然后直接初始化为new CBDlg就好了。想请教一下这是什么原因。
追答
这样的描述没法准确确定问题原因。
猜测一下吧。静态变量的初始化一般是在全局类之后,如果你的对话框是主对话框或者静态变量和对话框一起声明,那么在初始化对话框的时候new的指针,会被静态变量初始化覆盖,也就是再次调用的时候,会是一个空指针在Show,就出问题了。
建议你单步调试看看,应该是这个问题。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询