センドメッセージ・・・ – プログラミング – Home

センドメッセージ・・・
 
通知
すべてクリア

[解決済] センドメッセージ・・・


アカギ
 アカギ
(@アカギ)
ゲスト
結合: 19年前
投稿: 3
Topic starter  

はじめまして、
WindowsXP VC++6.0 ダイアログベースです。

ダイアログ上にラジオボタンを2つおきます。
グループにします。
ボタンA、ボタンBがクリックされたとき呼ばれる関数を
On_A、On_Bとします。

ラジオボタンは初めにダイアログが表示された時は
両方ともチェックされていません。
最初にどちらかをクリックさせて
ボタン押下時の処理をコールしたいので、
OnInitDialog()で以下のように
センドメッセージでボタン押下時の関数をコールするようにしました。
しかし、
以下の記述だとOn_Bがコールされた後、OnInitDialog()をぬけた後に
On_Aがコールされてしまいます。
理由がさっぱりわからないのですが
どなたかわかりますか?

CButton *pCButton;
int ret;
//ret = AfxGetApp()->GetProfileInt(Draw_TEST,線速一定,0);
ret = 0;
if( ret ){
pCButton = (CButton*)GetDlgItem(IDC_RADIO_A);
SendMessage(WM_COMMAND,MAKEWPARAM(IDC_RADIO_A,BN_CLICKED));
}
else{
pCButton = (CButton*)GetDlgItem(IDC_RADIO_B);
SendMessage(WM_COMMAND,MAKEWPARAM(IDC_RADIO_B,BN_CLICKED));
}
pCButton->SetCheck(1);
UpdateData(TRUE);


引用未解決
トピックタグ
へむりん
 へむりん
(@へむりん)
ゲスト
結合: 19年前
投稿: 2
 

新規でプロジェクトを作ってみました。
VC6 SP6

・MFCAppWizardで新規作成
ダイアログベースのチェックを入れた後で終了ボタン

・ラジオボタンを2個配置
・グループ化
・名称変更
 IDC_RADIO_A
 IDC_RADIO_B
・提示のソースをOnInitDialogに配置
 // TODO: 特別な初期化を行う時はこの場所に追加してください。
 の下

・ラジオボタンダブルクリックにてイベント関数作成
・TRACE文配置
・OnRadioA、OnRadioBブレークポイント設定

にて試してみましたが再現できませんでした。
お手数ですが、再現できる方法を提示願えませんか?

特に調べていませんがSPの適応なども参考になるかと思います


返信引用
アカギ
 アカギ
(@アカギ)
ゲスト
結合: 19年前
投稿: 3
Topic starter  

>お手数ですが、再現できる方法を提示願えませんか?
SP6です。

自分も新規でプロジェクトを作成してみました。
へむりんさんと同様の方法でやったら再現しませんでした。

で、原因がわかったのですが
ラジオボタンA,Bのプロパティーに
タブストップのチェックをいれていました。
タブストップをチェックすると
OnRadioA、OnRadioB両方がコールされてしまいます。
理由はわかりません。


返信引用
アカギ
 アカギ
(@アカギ)
ゲスト
結合: 19年前
投稿: 3
Topic starter  

解決とします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました