- ベストアンサー
コントロールの色の変更
- コントロールの色を変更する方法について教えてください。
- ボタンとスタティックの色を変更する方法はありますか?
- MFCを使用せずにボタンとスタティックの色を変更したいです。
- みんなの回答 (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)
ブラシハンドルを返すのでしたら return (LRESULT)GetStockObject(WHITE_PEN); return (LRESULT)GetStockObject(BLACK_PEN); を return (LRESULT)GetStockObject(WHITE_BRUSH); return (LRESULT)GetStockObject(BLACK_BRUSH); にかえればいいと思います。