CAtlExeModuleTを使用する非常に単純なWin32アプリケーションがあります。このモジュールはCWindowImplから派生したCTestWindowクラスを作成するだけです。 WM_PAINT用の単一のメッセージハンドラを持つだけです。ウィンドウを作成して表示した後、OnPaintメソッド(WM_PAINTメッセージ)は無限に呼び出され、そこで100%CPUを消費します。ATL CWindowImplでWM_PAINTループを終了しない
ウィンドウを作成するコードは非常に簡単です:
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;
}