winapi - Win32 应用程序窗口最终停止在 Windows 7 上绘制

标签 winapi user-interface windows-7 interface paint

我有一个用 C++(没有 MFC 或 .NET)编写的大型复杂应用程序。最积极地使用该软件的客户端将在启动它的一个小时左右内进入所有窗口停止绘制的状态。我们收到有关应用程序“挂起”的报告,因为据他们所知,没有任何事情发生。实际上,应用程序正在运行,只是没有显示任何内容。

我尝试了很多不同的东西都无济于事。我没主意了...

最佳答案

你可能已经预感它是什么——你在第一句话中就给出了它

... large, complex application ...



听起来您在某处有 GDI 资源泄漏。要确认这一点,请尝试在任务管理器中为您的进程查看 GDI 对象。在某些时候,您的应用程序的大多数 GDI 操作都会失败。

确保正确释放所有 handle 。请注意,不同的 GDI 对象需要不同的释放对象的方法。例如 GetDCReleaseDC 释放, 但是 CreateDCDeleteDC 释放.

这就是为什么建议将 RAII 智能对象(如智能指针)用于 C++ 中的资源管理(其中释放由智能对象管理以减少泄漏和错误的可能性)。

关于winapi - Win32 应用程序窗口最终停止在 Windows 7 上绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12459213/

相关文章:

c++ - 如何在选择文件夹对话框中为静态控件的背景着色?

c - WinAPI 消息队列示例

c++ - 使用 SDL 旋转图像的最佳方法?

wpf - 在重建复杂的 WPF UI 期间防止卡住?

c++ - 为什么我不能使用 MinGW 编译 GTK+?

windows - 如何以编程方式检索区域和语言设置中显示的 "Location"?

delphi - 为什么 DEP 不会停止执行从外部文件加载的部分代码?

windows - 如何在 Rad Studio xe3 中调试第二个应用程序?

user-interface - 您是否使用与私有(private)变量相同的约定来命名表单上的控件?

python - 创建类似 MS Office 文档的文件格式以公开文档属性