08/05/23 18:17:10
InvalidateRect(hWnd, NULL, FALSE);
UpdateWindow(hWnd);
RedrawWindow(hWnd, NULL, NULL, RDW_UPDATENOW);
これらを投げても駄目でした。
画像のみを表示するソースはウィンドウを透過すれば(SetLayeredWindowAttributes)特に何もしなくても表示されました。
透過しないとやはり何も表示されません。
CreateWindowExでボタン、ステータスバー、ツールチップを追加している問題のソースではこれらコントロールは再描画されるのに画像が表示される場所はまるで非表示にしたかのように背景色のみになっています。
もう訳が分からないですo...rz。
もしかしたらウィンドウプロシージャの書き方に問題があるのかも知れませんが、以下の各caseのbreak;をreturn 0;に書き換えると何故かウィンドウの挙動も表示もおかしくなり、CPU使用率も100%になってしまいます。
因みに今回の場合はreturn 0;に書き換えても症状は改善しません。
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch (msg)
{
(中略)
case WM_PAINT:
SetStretchBltMode(hDC, STRETCH_DELETESCANS);
StretchBlt(hDC, 10, 10, 256, 192, hCompatDC, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
break;
(中略)
}
return DefWindowProc(hWnd, msg, wp, lp);
}