
hSWnd = CreateWindow("STATIC","あいう",WS_CHILD | WS_VISIBLE,
0,0,320,240,hWnd,NULL,hInst,NULL);
に対して、
case WM_CTLCOLORSTATIC:
hBrush = CreateSolidBrush(RGB(0, 255, 0));
return (LRESULT)hBrush;
break;
とすると、hSWnd は緑になるけど、hSWnd の あいう の文字の
背景色が白です。
その白の部分を赤にするソースを教えてください。
No.1ベストアンサー
- 回答日時:
WM_CTLCOLORSTATICのところで下記を追加すればいいはずです。
SetBkMode((HDC)wParam, TRANSPARENT);//背景を透過にする
この回答への補足
ありがとうございます。
できました。
hBrush = CreateSolidBrush(RGB(0, 255, 0));
case WM_CTLCOLORSTATIC:
hDC = GetDC(hSWnd);
SetBkMode(hDC, TRANSPARENT);
ReleaseDC(hSWnd, hDC);
return (LRESULT)hBrush;
break;
こなんのを試したこともあって、やってることは
SetBkMode((HDC)wParam, TRANSPARENT);
と同じだと思ったのに、
SetBkMode((HDC)wParam, TRANSPARENT);
じゃないとだめだったんですねー。
どうして
hDC = GetDC(hSWnd);
SetBkMode(hDC, TRANSPARENT);
ReleaseDC(hSWnd, hDC);
はだめなんですか?
No.2
- 回答日時:
#1のakinori_sです。
>どうして
> hDC = GetDC(hSWnd);
> SetBkMode(hDC, TRANSPARENT);
> ReleaseDC(hSWnd, hDC);
>はだめなんですか?
GetDCで取得したデバイスコンテキストに対してSetBkModeを行っても
これが有効なのはこの時だけで属性が保持されるわけじゃないからです。
ですので描画処理が走った場合にWM_PAINT等で描画が行われると思いますが
この時に使用されるデバイスコンテキストに対して属性を設定した訳じゃないので
前の塗りつぶしモードで文字が上書きされてしまうんじゃないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VisualStudioでC++クラスを追加...
-
DLLファイルの逆コンパイラにつ...
-
VisualStudio2022でC言語プログ...
-
C言語について。
-
C言語の質問です。バイナリ形...
-
visual studio 2022でのC#プロ...
-
C言語について(初心者)
-
CPUが16bitでも32bitOSでコンパ...
-
Notepad++の関数リスト表示の変...
-
C言語 バッファについて。
-
C言語 バッファについて。
-
C言語について。
-
スタックフレームの消滅
-
大量のデータを読み込んで表示...
-
C言語の関数のextern宣言
-
プログラマー達は何故、プログ...
-
PIC12F1822でLED調光器を作りたい
-
最初に聞かれたこと
-
C言語 関数、変数の宣言について
-
プログラミングc++を全く分か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コンテキスト依存とは?
-
メモリデバイスコンテキストを...
-
画面がチカチカする
-
Rectangleで、リソースが解放さ...
-
Windowsプログラミング 画面描...
-
ダイアログにビットマップを貼...
-
VBでデスクトップアクセサリを...
-
VC++でopenGLを利用したい...。
-
ちらつきについて
-
画像処理 ビットマップ ダブ...
-
C 多角形を半透明に塗る方法
-
SetWindowRgn()関数について。
-
ハードコピーをプログラムから...
-
WindowsAPIでの画像表示について
-
ダブルバッファの作り方
-
ビットマップの表示について
-
usbデバイスとの通信
-
VC++のTextOutの再描画の仕方
-
WinAPIでスクリーン画像を映し...
-
BitBlt関数について教えてください
おすすめ情報