【问题标题】:Why is call to CDialog::OnShowWindow hanging my application?为什么调用 CDialog::OnShowWindow 会挂起我的应用程序?
【发布时间】:2014-04-27 20:45:20
【问题描述】:

在我对 OnShowWindow 的覆盖中调用 CDialog::OnShowWindow 时,我的应用程序挂起。它仅在对话框中的编辑框当前具有焦点时挂起。当 bShow 和 nStatus 都为 0 时,它会挂起,这意味着对话框正在隐藏。

我还有其他类似的对话框,当编辑框获得焦点时,对 CDialog::OnShowWindow() 的调用不会挂在其中。

我真的不知道如何调试这个......

【问题讨论】:

  • 调试器在挂起期间说它在做什么?如果我们有堆栈爬网,肯定会更容易诊断。
  • 我如何给你一个堆栈爬取?我在 OnShowWindow 上方看到了一个带有 int nMsg=24 的 DefWindowProcA 调用。上面是一堆 user32.dll 条目。然后上面有一个 AfxWndProcBase,AfxWndProc 调用,nMsg=135 在这些条目中。
  • nMsg=135 显然是 WM_GETDLGCODE。不确定这是否有帮助。

标签: c++ mfc


【解决方案1】:

我需要为对话框设置 DS_CONTROL 样式。这修复了导致挂起的无限循环。

这些文章有帮助:

http://blogs.msdn.com/b/oldnewthing/archive/2004/07/30/201988.aspx http://support.microsoft.com/kb/149501

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    相关资源
    最近更新 更多