![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
初歩的な質問で申し訳ありません。
色々なHPを徘徊して調べているのですが、どうしてもうまくいきません。
コードはメッセージループに次のように記述しています。
---------------------------------------------------------
case WM_CTLCOLORBTN:
// 白色のブラシハンドルを返す
return (LRESULT)GetStockObject(WHITE_PEN);
case WM_CTLCOLORSTATIC:
SetTextColor((HDC)wParam, RGB(255, 255, 255));
// 黒色のブラシハンドルを返す
return (LRESULT)GetStockObject(BLACK_PEN);
---------------------------------------------------------
これでボタンは白、スタティックは黒地に白文字で表示されると思ったのですが、
ボタンは色が何も変わらず、スタティックは文字の周りを囲むように黒くなり、
肝心の文字の地は白のままでした。
解決策を知っている方、どうか教えていただけませんか?
ちなみに、MFCは諸事情により使用できません。
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);
No.1
- 回答日時:
ブラシハンドルを返すのでしたら
return (LRESULT)GetStockObject(WHITE_PEN);
return (LRESULT)GetStockObject(BLACK_PEN);
を
return (LRESULT)GetStockObject(WHITE_BRUSH);
return (LRESULT)GetStockObject(BLACK_BRUSH);
にかえればいいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(クラウドサービス・オンラインストレージ) Googleカレンダーの予定の色を変えたい、文字色を変えたい。 1 2022/10/18 21:43
- HTML・CSS htmlです。 上のところには黒文字でピカチュウで、ピカチュウの文字には影をすべてにつけてください周 1 2023/01/02 12:48
- Instagram Instagramでバグが起きました。Androidです。 画像は左がストーリーにあげた後です。右が 1 2022/08/18 11:55
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- スキンケア・エイジングケア 肌が黒いのかくすんでるのかわからない。 私は小さい頃から周りから黒い黒いと言われ続けていたので地黒だ 1 2022/11/20 10:00
- Visual Basic(VBA) エクセルから、パワーポイントのスライドを複数作成する。 1 2022/07/08 09:40
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- Safari(サファリ) iPhoneでgooや各種ウェブサイトの文字色を濃くできますか? 1 2023/04/25 10:18
- マウス・キーボード キーボード、キートップに貼れる文字シール 4 2022/08/14 09:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MFC ポップアップメニューのチ...
-
ダイアログボックスで指定した...
-
C# ボタンコントロール内で文字...
-
'int' から 'LPCSTR' に変換で...
-
confirmダイアログの表示文字に...
-
ダイアログのボタンが押せない
-
MFCダイアログボックスを最前面...
-
ボタンの表示の色、フォントを...
-
メッセージボックスを大きくす...
-
コンボボックスのドロップダウ...
-
VC(Ver6.0)でダイアログサイズ...
-
リソースファイルとは・・・
-
ダイアログの一部を半透明化す...
-
【MFC】sleep関数を用いたモー...
-
vbscriptで、ファイル選択ダイ...
-
ダイアログにプレビュー表示
-
SetWindowLong()でタイトルバー...
-
エディットコントロールの色の...
-
タスクバーのメニュー表示
-
VC++で「手のひらカーソル」を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メッセージボックスを大きくす...
-
ボタンの表示の色、フォントを...
-
コンボボックスのドロップダウ...
-
ダイアログの上のテキストボッ...
-
メッセージボックスのボタン文...
-
confirmダイアログの表示文字に...
-
ボタンの配置を変更したい
-
フォーム上のリストボックスに...
-
リソースファイルとは・・・
-
ツールチップの表示
-
MFCダイアログボックスを最前面...
-
ダイアログの表示位置の保存
-
'int' から 'LPCSTR' に変換で...
-
【VC++2005(CLR)】ダイアログ右...
-
vbscriptで、ファイル選択ダイ...
-
エディットボックスの処理で画...
-
ダイアログボックスで指定した...
-
エディットコントロールの色の...
-
【VC++2005】ダイアログサイズ...
-
VC(Ver6.0)でダイアログサイズ...
おすすめ情報