1

我正在构建一个 C++ MFC 应用程序,它一次创建一个模式对话框,同时隐藏父对话框。我希望在 Visual Studio 中调试时遇到断点时查看新创建的模式对话框。但是,只要遇到断点,对话框的内容就不再呈现。盒子只是变白,或者保留在它上面施加的任何图像。程序恢复时对话框正常显示,但我需要能够在断点被命中时查看对话框,而程序被 Visual Studio 调试器“暂停”。

4

2 回答 2

9

你不能这样做:重绘对话框的内容需要程序正在运行。如果它在断点处停止,则它没有运行。

这可能是因为您拥有 Visual Studio 和您的程序共享屏幕空间,因此 Visual Studio 出现在您的程序上方。当您将程序置于最前面时,它需要重新绘制(但不能因为它处于断点处)。

首先想到的是获得另一个监视器,并确保 Visual Studio 和您的程序在不同的监视器上运行——这样,您的程序不需要重新绘制自己,并且您应该看到以前的内容在对话框上。

或者,让两台计算机从一台计算机远程调试到另一台计算机——同样,您的程序不需要重新绘制自己,因此您应该仍然可以看到之前的内容。

于 2009-01-16T19:03:41.080 回答
0

您还可以做一件事,暂时放在dialog.Invalidate(); dialog.SendMessage(WM_PAINT);断点之后,确保 Visual Studio 和对话框没有重叠,然后跳过绘制消息。如果对话框是空白的,它应该填充。

设置远程调试有很多陷阱,但一旦掌握了它,它就会变得非常宝贵。它肯定会照顾您当前的情况,一旦您准备好环境,您将更快地解决未来的错误。很多时候我遇到一个问题说,“如果我只有一个好的远程调试环境,我会做 A,但我会先尝试劣质的解决方案 B……”

于 2009-01-17T01:16:50.063 回答