【问题标题】:Making a CDialog visible使 CDialog 可见
【发布时间】:2009-08-27 01:53:23
【问题描述】:

我正在尝试获取一个带有复选框的对话框。我将它添加到资源文件中,创建了对话框模板,并为对话框添加了类和事件处理程序。据我了解,现在我只需要创建该类的一个实例并调用 DoModal()。


所以,我回去做了一些调查并使用了一些代码,这就是我现在所拥有的 使用MSPSK PSKDialog; 如果(PSKDialog.DoModal()== IDOK) { } 别的 { AfxMessageBox("不是 IDOK"); } CTempoDialog 时间对话框; 如果(TempoDialog.DoModal()== IDOK) { }

当我运行它时,我没有从 PSLDialog.DoModal() 调用中得到任何对话框,但是我得到了 AfxMessageBox,然后出现了 TempoDialog。我在调试器中单步执行了 DoModal() 调用,它似乎可以正常运行和返回,所以我不知道我的对话框要去哪里。

刚刚又看了一遍DoModal()调用的返回值,好像马上就退出了,怎么解决?

【问题讨论】:

    标签: visual-studio visual-c++ modal-dialog


    【解决方案1】:

    它应该可以使对话框可见 - 假设对话框模板具有 WS_VISIBLE 样式等等。也许对话框初始化失败? “DoModal”对话框调用是否立即退出?这表示创建窗口失败。

    您使用的是什么版本的 Visual Studio?版本 6 过去不允许您在尚未加载的代码上设置断点。或者,确保已加载符号。在“模块”窗口中,右键单击包含您的代码的 dll,然后选择“加载符号”。您是使用符号信息进行调试构建还是发布构建?确保它是一个调试版本,以获得最简单的调试体验。

    【讨论】:

      【解决方案2】:

      我不知道为什么会这样,但我添加的复选框是一个 ActiveX 控件,它破坏了我的对话框。当我发现工具箱窗格并从那里拖动一个复选框时,它工作正常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-18
        相关资源
        最近更新 更多