我正在尝试使用带有复选框的DialogBox。我将它添加到资源文件,创建了对话框模板,并为对话框添加了类和事件处理程序。据我了解,现在我只需要创建一个类的实例并调用DoModal()。
<小时/> 所以,我已经回去做了一些调查,然后玩了一些代码,这就是我现在所拥有的
UsingMSPSK PSKDialog; if( PSKDialog.DoModal() == IDOK) { } else { AfxMessageBox("Not IDOK"); } CTempoDialog TempoDialog; if(TempoDialog.DoModal() == IDOK) { }
当我运行它时,我没有从PSLDialog.DoModal()调用中获得任何对话框,但是我得到了AfxMessageBox,然后出现了TempoDialog。我在调试器中逐步执行DoModal()调用,它似乎运行并正确返回,所以我无法弄清楚对话框的位置。
我只是再次查看DoModal()调用的返回值,它似乎立即退出,我该如何解决?
答案 0 :(得分:2)
它应该可以使对话框可见 - 假设对话框模板具有WS_VISIBLE样式,依此类推。也许对话框初始化失败了? “DoModal”对话框是否立即调用退出?这表示无法创建窗口。
您使用的是哪个版本的Visual Studio?版本6过去不允许您在尚未加载的代码上设置断点。或者,确保已加载符号。在“模块”窗口中,右键单击包含代码的dll,然后选择“加载符号”。您是使用符号信息还是发布版本进行调试构建?确保它是最简单的调试体验的调试版本。
答案 1 :(得分:0)
我不确定为什么会这样,但我添加的复选框是一个ActiveX控件,它打破了我的对话框。当我发现工具箱窗格,并从那里拖动一个复选框时,它工作正常。