はじめに:CWNDから派生したクラス(カスタムウィンドウ)があります。このカスタムクラスにはラジオボタン(CButton)とその他の静的コントロールがあります。CWndからサブクラス化されたクラスでMFC:RadioButtonが機能しない(グレー表示)
問題::ラジオボタンが作成されると、グレーアウトされてクリックされても何も起こりません。 コードを作成するために使用することは非常に簡単です:
m_radioButton->Create(_T("rButton1.1"), WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON , CRect(5,5,300,15), this,2001);
私は
ON_BN_CLICKED(2001、メソッド())
イベントを追加しようとしましたが、それがトリガーになっていません。
私はShowWindow()とEnableWindow()メソッドも持っていますが、それもうまくいきませんでした。
質問:このクラスはCDialogから派生したものではないため、DDXは利用できません。それは問題になることができますか?それを回避する方法はありますか?私のメッセージマップは、ON_BN_CLICKED以外のSIZE、CREATE、DESTROYしか持っていません。
ご提案は大歓迎です。
SIDE NOTE:MFC初心者ここに、あなたの助けが大変ありがとうございます。
リサーチ:これは関連するstack overflow questionとしか見つかりませんでしたが、私の場合は役に立ちません。また、このcool page on mfc subclassingに出くわしましたが、私の質問には答えません。
SIDE質問:私はどんな答えが届かないので、このような状況は、共通されておらず、これは根本的に間違っている私はすべてのCWNDから派生し、CDialogのか、何か他のものから派生するべきではありませんされていますか?
グループの最初のラジオボタンが 'WS_GROUP'セットを持っている、ともタブ内の最後のラジオボタンを以下のものは何でもコントロールすべきです注文。 –
P.S.この問題は、ジェネリックな 'BUTTON'クラスではなく、' Create'コールで独自のボタンクラスを使用している可能性があります。 –
それにもかかわらず、WS_GROUPを持たないことはこれらの問題を正しく引き起こすべきではありません。また、作成はCButtonに対して呼び出されています。問題は、私のカスタムクラス内のCButtonがグレー表示され、そのイベントを処理できないということです。私は質問の説明にそれを追加しましたので、より明確です。 – AdRoiT