OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

コントロール内の文字の背景色

  • 暇なときにでも
  • 質問No.219342
  • 閲覧数1109
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 59% (194/328)

 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 の あいう の文字の
背景色が白です。
その白の部分を赤にするソースを教えてください。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル8

ベストアンサー率 60% (21/35)

WM_CTLCOLORSTATICのところで下記を追加すればいいはずです。

SetBkMode((HDC)wParam, TRANSPARENT);//背景を透過にする
補足コメント
A__

お礼率 59% (194/328)

ありがとうございます。
できました。

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);
はだめなんですか?
投稿日時 - 2002-02-18 22:21:33
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル8

ベストアンサー率 60% (21/35)

#1のakinori_sです。 >どうして >  hDC = GetDC(hSWnd); >  SetBkMode(hDC, TRANSPARENT); >  ReleaseDC(hSWnd, hDC); >はだめなんですか? GetDCで取得したデバイスコンテキストに対してSetBkModeを行っても これが有効なのはこの時だけで属性が保持さ ...続きを読む
#1のakinori_sです。

>どうして
>  hDC = GetDC(hSWnd);
>  SetBkMode(hDC, TRANSPARENT);
>  ReleaseDC(hSWnd, hDC);
>はだめなんですか?

GetDCで取得したデバイスコンテキストに対してSetBkModeを行っても
これが有効なのはこの時だけで属性が保持されるわけじゃないからです。
ですので描画処理が走った場合にWM_PAINT等で描画が行われると思いますが
この時に使用されるデバイスコンテキストに対して属性を設定した訳じゃないので
前の塗りつぶしモードで文字が上書きされてしまうんじゃないでしょうか。
お礼コメント
A__

お礼率 59% (194/328)

ReleaseDC(hSWnd, hDC);
までしか透過になっていなかったんですね。
ありがとうございました。
投稿日時 - 2002-02-20 06:54:30


このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ