以下のコードで使用するSetBkMode(hdc, TRANSPARENT);
と、メイン ウィンドウのサイズを変更すると (したがって、子が WM_PAINT メッセージを受信すると)、次の効果が得られます。
問題は、メイン ウィンドウのサイズを変更すると、「Find:」の古い領域が消去されてしまうことです。しかし、それはただそこにとどまります。
を使用しなければSetBkMode(hdc, TRANSPARENT);
、この問題はありません。次のようになります。
、つまり、背景が白です。さらに、 を使用するSetBkMode(hdc, TRANSPARENT);
と、メイン ウィンドウのサイズを変更する前と同じように見えます。SetBkMode(hdc, TRANSPARENT);
だから私はここで働くとは思わない。
これhwnd
は style を持つ静的な子ですSS_BITMAP
。
この問題が発生する理由を知っていますか?
switch (message) {
case WM_PAINT:
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
SelectObject(hdc, gDefaultGuiFont);
SetBkMode(hdc, TRANSPARENT);
RECT rc;
GetClientRect(hwnd, &rc);
DrawText(hdc, _TR("Find:"), -1, &rc, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hwnd, &ps);
return 0;
.............
}