プッシュボタン型ラジオボタンの色を任意の色に
変更したいのです。どなたかご存知の方、よろし
くお願いします。
DrawFrameControl で描けそうなやつは,あまり簡単に色の変更とかはできません.
ようするに,融通がきかないんです.
オーナードローかサブクラス化をするのが手っ取り早いかと思います.
どうしても面倒くさければ,システムカラーを変えちゃうとか(^^;
こんにちは。
おきゅとぱすさん、解答ありがとうございます。
>オーナードローかサブクラス化をするのが手っ取り早いかと思います.
ラジオボタンのプロパティにオーナードローのチェックボックスって
ないですよね?ってゆうことは、オーナードローにする場合は自分で
BS_OWNERDRAWスタイルを追加してやらなければいけないってことですか?
もしくは自分でCreateするとか?
たしかにないですね・・・.
いや,こんなときはたいていオーナードローかサブクラス化だろうと思って,
適当なことを書いてしまいました.いや,すみません.
っていうか,僕,コード読みにくくなるから,あんまりオーナードローしないもんで.
というわけで,前言訂正ということで,サブクラス化をお勧めします.
いや,申し訳ないです.
いえいえそんな…こちらこそ申し訳ないです。
サブクラス化でやってみたいと思います。
おきゅとぱすさん、どうもありがとうございました。
こんにちは.
[解決]がついた後になんなんですが・・・.
ちょっと試してみたら,オーナードローじゃないとだめみたいなので,
ちょっとレスつけときます.気づいてくれるかな・・・.
おおざっぱに言って,
ラジオボタンでも↓のような感じでオーナードローできます.
class CColorRadio : public CButton
{
public:
void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
...
DECLARE_MESSAGE_MAP()
};
class CTestDialog : public CDialog
{
private:
CColorRadio ColorRadio;
public:
BOOL OnInitDialog();
...
DECLARE_MESSAGE_MAP()
};
// サブクラス化して,BS_OWNERDRAW をスタイルに追加
BOOL CTestDialog::OnInitDialog()
{
ColorRadio.SubclassDlgItem(IDC_COLORRADIO, this);
ColorRadio.SetButtonStyle(
ColorBtn.GetButtonStyle() | BS_OWNERDRAW, TRUE);
return TRUE;
}
// あとは,CColorRadio::DrawItem を好きにインプリメントするだけ
ちょっと言い訳.
この前は,寝ぼけてたので(9時台なのに),ぢつは SDK とごっちゃになってた.
んでもって,ぢつは,OnPaint を変更しても案外うまくいかないみたい.
この様子だと SDK でもオーナードローじゃないとだめかも.うにゅぅ.
こんにちは。
おきゅとぱすさん、ありがとうございます。
ばっちり出来上がりました。
感謝、感謝です。
またよろしくお願いします。