我有一个使用 CAtlExeModuleT 的非常简单的 Win32 应用程序。该模块只是创建一个从 CWindowImpl 派生的类 CTestWindow。它只有一个用于 WM_PAINT 的消息处理程序。在我创建窗口并显示它之后,OnPaint 方法(WM_PAINT 消息)被无限调用,从而消耗 100% 的 CPU。
创建窗口的代码非常简单:
m_pMainWnd = new CTestWindow();
if(NULL == m_pMainWnd->Create(NULL, CWindow::rcDefault, _T("Test Window"), WS_OVERLAPPEDWINDOW, 0, hMenu)){
DWORD dwErr = GetLastError();
return E_FAIL;
}
m_pMainWnd->ShowWindow(nShowCmd);
OnPaint 消息处理程序也非常简单(它不做任何事情):
LRESULT CTestWindow::OnPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
// TODO: Add your message handler code here and/or call default
return 0;
}