ラジオボタンの操作について・・・ – プログラミング – Home

ラジオボタンの操作について・・・
 
通知
すべてクリア

[解決済] ラジオボタンの操作について・・・


ぷりっつ
 ぷりっつ
(@ぷりっつ)
ゲスト
結合: 19年前
投稿: 2
Topic starter  

現在ラジオボタンを10個設定しています。
他の設定項目に応じて、有効/無効の設定をしようと思ってます。

有効/無効の処理をする際に、わざわざ

GetDlgItem(IDC_RADIO1)->EnableWindow(FALSE);
GetDlgItem(IDC_RADIO2)->EnableWindow(FALSE);
・・・(以下略)

と書きたくないので、ClassWizardで変数を割り当てようと
思ったのですが、現在グループ化している為にClassWizard上では
一番最初のコントロールIDしか表示されていません。

int型の変数(ラジオボタングループ型転送)だとUpdateData()で
現在の設定されてる番号のやりとりは出来ますが、有効無効の設定は
出来ませんよね?
CButtonメンバにマッピングすると、グループの先頭のみしか制御
出来ないと思うのですが・・・。
例えば、m_Radio[xxx].EnableWindow(TRUE);
なんて簡単かつスマートにやる方法ないでしょうか?

環境はVC6++です。


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

コントロールを配列にしてしまうとか。
http://www.asahi-net.or.jp/~uq7k-hrsm/vcdev2fr.htm#39


返信引用
いろは
 いろは
(@いろは)
ゲスト
結合: 21年前
投稿: 43
 

私はリソースIDを連続的に割り当てて、for文を使ってGetDlgItemする方法を使ったりしてま
す。

たとえば、、
IDC_RADIO1からIDC_RADIO5までのIDを101から105に割り当てて、
for( int id = IDC_RADIO1; id <= IDC_RADIO5; id++ )
GetDlgItem(id)->EnableWindow();
みたいな。


返信引用
ぷりっつ
 ぷりっつ
(@ぷりっつ)
ゲスト
結合: 19年前
投稿: 2
Topic starter  

Blueさん、いろはさんありがとうございます。

なるほど、自動的に・・・と言うかVC上で、
お手軽に設定は出来ないんですね。
お二人の回答を参考にソース書いて見ます。有難うございました。


返信引用
tib
 tib
(@tib)
ゲスト
結合: 22年前
投稿: 468
 

私はVC++のリソースIDを、数値としては信用していないので、

UINT *p, radiobuttons[] = { IDC_RADIO1, IDC_RADIO2, ..., IDC_RADIOn, 0 };
for( p=radiobuttons; *p; p++ )
{
  GetDlgItem(*p)->EnableWindow(FALSE);
}

という風にしています。

一人で作っているならともかく、複数人でリソースをいじって、マージとかを繰り返して
いると、リソースIDの連続性なんて信用できません。そんなわけで「ON_COMMAND_RANGE」
なども不可です。


返信引用
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 22年前
投稿: 310
 

一人で作っていてもリソースエディタを弄っていると、番号がおかしくなる場合が
あるようです(VC++6.0)。そのため、私もtibさんのようなやり方で行なっています。
# 一人だったらいっそ、resource.hの値を書き換えるってこともできますが。


返信引用
のり~
 のり~
(@のり~)
ゲスト
結合: 19年前
投稿: 3
 

グループの先頭を処理後、GW_HWNDNEXT を取得して、そのウインドウのウインドウスタイ
ルとして、BS_AUTORADIOBUTTON があり、且つ WS_GROUP が無いものが続く限り処理する
ようにすれば、2つ目以降のリソースIDは知らなくても汎用的に処理できます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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