プロが教えるわが家の防犯対策術!

 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( ) の背景色を灰色にするには
どう書けばいいんですか?

A 回答 (1件)

まず、SetBkModeという関数は



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

LTGRAY_BRUSHのところをTRANSPARENTとすると 

SetBkMode(hDC,TRANSPARENT);

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

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

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

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

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

もし、ちがったら教えてください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
SetBkMode( ) の意味と引数を勘違いしていたのに
気付きました。
それを消して
SetBkColor( hDC,RGB(120,120,120) );
に書き替えて、wc.hbrBackground の指定に無関係で
文字の背景が灰色にできることを確認しました。

お礼日時:2002/02/12 02:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!