• ベストアンサー

プシュボタンのテキストの色を変更したい

プッシュボタンの表示文字の大きさを変えるのは WM_SETFONTメッセージでボタンコントロールにセンドすればできますが 表示文字の色は同じような簡単な操作でできるのでしょうか? ひょっとしてウィンドウ処理関数を書かなくてはいけないのでしょうか?

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

  • ベストアンサー
noname#5537
noname#5537
回答No.3

プッシュボタンは WM_CTLCOLORBTN では文字色を変えられません。 1.オーナー描画する。 2.文字列を描いたビットマップを貼り付ける。 などの方法があります。

keyguy
質問者

お礼

ありがとうございます。 プッシュボタンに色字を付けるだけなのに大変ですね。 だったら書き込み不可スタイルのエディタコントロールを使って色を付けましょうか?

その他の回答 (3)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.4

>プッシュボタンは WM_CTLCOLORBTN では文字色を変えられません。 ありゃ、失礼しました。 MFCですが、サンプル見つけましたんで参考に。

参考URL:
http://www.catnet.ne.jp/~mori/vcpp/higi/hh/p_00000004.html
keyguy
質問者

お礼

ありがとうがざいます。 ボタンは例外の範疇に入っているみたいですね。 VC++でないのでMFCは使えません。 WM_CTLCOLORBTNが使えるコントロールで実現するのが現実的だと思います。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>色を変えるときにコントロールボタンhBを >ShowWindow(hB,SW_SHOW); >として再描画し ここが間違っています。 Windowsがウィンドウの再描画を行う個所は、再描画が必要と判断された個所のみです。 ShowWindowでは、すでに表示されているウィンドウの場合再描画する個所がなければWM_PAINTが発行されません。 再描画を実行させるAPIは、UpdateWindowです。 また、再描画させる領域を指定する(無効領域を指定する) には、InvalidateRect等を使用します。

keyguy
質問者

補足

UpdateWindow(hB),InvalidateRect(hB,NULL,1) でやってみましたがやっぱり駄目でした。 プッシュボタンでは駄目なのかもしれませんね?

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

親ウィンドウでWM_CTLCOLORBTNを処理しましょう。 そこでSetTextColor()とかで変更します。

keyguy
質問者

補足

ありがとうございます。 色を変えるときにコントロールボタンhBを ShowWindow(hB,SW_SHOW); として再描画し メインウィンドウのメッセージ処理で case WM_CTLCOLORBTN: SetTextColor(HDC(wP),RGB(255,0,0)); return 0; としたのですが色が赤くなりません。 どうしたらいいのでしょうか?

関連するQ&A