• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コントロールの色の変更)

コントロールの色の変更

このQ&Aのポイント
  • コントロールの色を変更する方法について教えてください。
  • ボタンとスタティックの色を変更する方法はありますか?
  • MFCを使用せずにボタンとスタティックの色を変更したいです。

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

  • ベストアンサー
  • A__
  • ベストアンサー率47% (22/46)
回答No.2

ボタンはオーナードローしか知りません。 オーナードローなら、コントロールのスタイルでBS_OWNERDRAWを加えれば 描画のたびにWM_DRAWITEMが来るようになります。 そうでなく、指定した時だけなら、PostMessage(xx, xx, SBT_OWNERDRAW, xx); でWM_DRAWITEMが来ます。 オーナードローすると最初に定義したボタンの文字が消えます。 LPDRAWITEMSTRUCT lpDI; RECT rect; case WM_DRAWITEM:  lpDI = (LPDRAWITEMSTRUCT)lParam;  CopyRect(&rect, &lpDI->rcItem);  FillRect(lpDI->hDC, &rect, (HBRUSH)GetStockObject(WHITE_BRUSH));  SetBkMode(lpDI->hDC, TRANSPARENT);//普通は灰色の文字の地に透過を指定  TextOut(lpDI->hDC, rect.left, rect.top, "ボタンの文字", 12);  return 0L; スタティックは文字の地の指定を追加しました。 case WM_CTLCOLORSTATIC:  SetTextColor((HDC)wParam, RGB(255, 255, 255));//テキスト自体の色。  SetBkColor((HDC)wParam, RGB(0, 0, 0));//普通は白の文字の地に黒を指定。  //↑は、代わりにSetBkMode((HDC)wParam, TRANSPARENT);で透過を指定してもいい。  return (LRESULT)GetStockObject(BLACK_BRUSH);

その他の回答 (1)

  • akinori_s
  • ベストアンサー率60% (21/35)
回答No.1

ブラシハンドルを返すのでしたら  return (LRESULT)GetStockObject(WHITE_PEN);  return (LRESULT)GetStockObject(BLACK_PEN); を  return (LRESULT)GetStockObject(WHITE_BRUSH);  return (LRESULT)GetStockObject(BLACK_BRUSH); にかえればいいと思います。

関連するQ&A