- ベストアンサー
プシュボタンのテキストの色を変更したい
プッシュボタンの表示文字の大きさを変えるのは WM_SETFONTメッセージでボタンコントロールにセンドすればできますが 表示文字の色は同じような簡単な操作でできるのでしょうか? ひょっとしてウィンドウ処理関数を書かなくてはいけないのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
プッシュボタンは WM_CTLCOLORBTN では文字色を変えられません。 1.オーナー描画する。 2.文字列を描いたビットマップを貼り付ける。 などの方法があります。
その他の回答 (3)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>プッシュボタンは WM_CTLCOLORBTN では文字色を変えられません。 ありゃ、失礼しました。 MFCですが、サンプル見つけましたんで参考に。
お礼
ありがとうがざいます。 ボタンは例外の範疇に入っているみたいですね。 VC++でないのでMFCは使えません。 WM_CTLCOLORBTNが使えるコントロールで実現するのが現実的だと思います。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>色を変えるときにコントロールボタンhBを >ShowWindow(hB,SW_SHOW); >として再描画し ここが間違っています。 Windowsがウィンドウの再描画を行う個所は、再描画が必要と判断された個所のみです。 ShowWindowでは、すでに表示されているウィンドウの場合再描画する個所がなければWM_PAINTが発行されません。 再描画を実行させるAPIは、UpdateWindowです。 また、再描画させる領域を指定する(無効領域を指定する) には、InvalidateRect等を使用します。
補足
UpdateWindow(hB),InvalidateRect(hB,NULL,1) でやってみましたがやっぱり駄目でした。 プッシュボタンでは駄目なのかもしれませんね?
- taka_tetsu
- ベストアンサー率65% (1020/1553)
親ウィンドウでWM_CTLCOLORBTNを処理しましょう。 そこでSetTextColor()とかで変更します。
補足
ありがとうございます。 色を変えるときにコントロールボタンhBを ShowWindow(hB,SW_SHOW); として再描画し メインウィンドウのメッセージ処理で case WM_CTLCOLORBTN: SetTextColor(HDC(wP),RGB(255,0,0)); return 0; としたのですが色が赤くなりません。 どうしたらいいのでしょうか?
お礼
ありがとうございます。 プッシュボタンに色字を付けるだけなのに大変ですね。 だったら書き込み不可スタイルのエディタコントロールを使って色を付けましょうか?