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

SetBkMode( ) (HBRUSH)GetStockObject( )

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

お礼率 59% (194/328)

 case WM_PAINT:
  hDC = BeginPaint(hWnd, &ps);
  SetBkMode(hDC, LTGRAY_BRUSH);
  TextOut(hDC,0,0,szHello,strlen(szHello));
  EndPaint(hWnd, &ps);
 break;


これは、int WINAPI WinMain( ) で
wc.hbrBackground= (HBRUSH)GetStockObject(LTGRAY_BRUSH);
としてないと、SetBkMode( ) が無効になりました。
GetStockObject( ) の意味を知らないけど、これによって
LTGRAY という色が特別なものになるんだと思いました。
窓の背景色を
wc.hbrBackground= (HBRUSH)GetStockObject(BLACK_BRUSH);
で黒にした場合に、TextOut( ) の背景色を灰色にするには
どう書けばいいんですか?
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル6

ベストアンサー率 37% (3/8)

まず、SetBkModeという関数は

背景を透けさせるかどうかを決める関数で

LTGRAY_BRUSHのところをTRANSPARENTとすると 

SetBkMode(hDC,TRANSPARENT);

背景を透けさせることができるので試してみてください。

それで、本題の背景の色を変えるということですが

それはSetBkColor(hDC,COLORREF型変数)という関数で変えられます。

SetBkColor( hDC,RGB(120,120,120) );

とすれば文字の背景が灰色になると思います。

もし、ちがったら教えてください。
お礼コメント
A__

お礼率 59% (194/328)

ありがとうございます。
SetBkMode( ) の意味と引数を勘違いしていたのに
気付きました。
それを消して
SetBkColor( hDC,RGB(120,120,120) );
に書き替えて、wc.hbrBackground の指定に無関係で
文字の背景が灰色にできることを確認しました。
投稿日時 - 2002-02-12 02:04:56
-PR-
-PR-
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

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

特集


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

-PR-

ピックアップ

-PR-
ページ先頭へ