アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (4件)

プッシュボタンは WM_CTLCOLORBTN では文字色を変えられません。



1.オーナー描画する。
2.文字列を描いたビットマップを貼り付ける。

などの方法があります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/06/29 19:37

>プッシュボタンは WM_CTLCOLORBTN では文字色を変えられません。



ありゃ、失礼しました。
MFCですが、サンプル見つけましたんで参考に。

参考URL:http://www.catnet.ne.jp/~mori/vcpp/higi/hh/p_000 …
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/06/30 08:57

>色を変えるときにコントロールボタンhBを


>ShowWindow(hB,SW_SHOW);
>として再描画し

ここが間違っています。

Windowsがウィンドウの再描画を行う個所は、再描画が必要と判断された個所のみです。

ShowWindowでは、すでに表示されているウィンドウの場合再描画する個所がなければWM_PAINTが発行されません。

再描画を実行させるAPIは、UpdateWindowです。
また、再描画させる領域を指定する(無効領域を指定する)
には、InvalidateRect等を使用します。

この回答への補足

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

補足日時:2003/06/29 16:16
    • good
    • 0

親ウィンドウでWM_CTLCOLORBTNを処理しましょう。


そこでSetTextColor()とかで変更します。

この回答への補足

ありがとうございます。
色を変えるときにコントロールボタンhBを
ShowWindow(hB,SW_SHOW);
として再描画し
メインウィンドウのメッセージ処理で

case WM_CTLCOLORBTN:
SetTextColor(HDC(wP),RGB(255,0,0));
return 0;

としたのですが色が赤くなりません。
どうしたらいいのでしょうか?

補足日時:2003/06/29 06:56
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!