ダイアログなどの多数のラジオボタングループが存在すると一括で無効したり一括で設定したい.
ClassWizard では各グループに変数が割り当てられてしまい,どうしもてコードが長くなる.
ラジオボタンのリソース ID を連番にしてしまえばループでまわせて楽である.
int m_nRadio[20][3]; // リソース ID を配列に
BOOL CMyDialog::OnInitDialog()
{
int nID = IDC_RADIO1;
for( int i = 0; i < 20; i++ ) {
for( int j = 0; j < 3; j++ ) {
m_nRadio[i][j] = nID;
nID++;
}
}
return TRUE;
}
CButton m_Radio[20][3];
void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
int nID = IDC_RADIO1;
for( int i = 0; i < 20; i++ ) {
for(int j = 0; j < 3; j++ ) {
DDX_Control( pDX, nID, m_Radio[i][j]);
nID++;
}
}
}
参照
ラジオボタンの操作
ラジオボタンの操作(イベント)