有几个控件的操作时有关联关系,一个对话框中有多组这样的控件群,各个组中的控件的消息响应处理非常类似,以下提供解决方案
1、定义控件ID记录结构
typedef struct
{
UINT nTxtFilePath;
UINT nBrowseBtn;
UINT nCleanBtn;
UINT nCleanCheck;
} DLG_ITEM_GROUP;
2、定义控件组ID
enum { CD_R0 = 0,
CD_R1 = 1,
CD_R2 = 2,
CD_G0 = 3,
CD_G1 = 4,
CD_G2 = 5,
CD_B0 = 6,
CD_B1 = 7,
CD_B2 = 8};
3、记录所有控件ID记录
m_DlgItemGroups[CD_R0].nTxtFilePath = IDC_COLOR_R0;
m_DlgItemGroups[CD_R0].nBrowseBtn = IDC_BUTTON_R0;
m_DlgItemGroups[CD_R0].nCleanBtn = IDC_BUTTON_CLEAN_R0;
m_DlgItemGroups[CD_R0].nCleanCheck = IDC_CHECK_CLEAN_R0;
....
m_DlgItemGroups[CD_B2].nTxtFilePath = IDC_COLOR_B2;
m_DlgItemGroups[CD_B2].nBrowseBtn = IDC_BUTTON_B2;
m_DlgItemGroups[CD_B2].nCleanBtn = IDC_BUTTON_CLEAN_B2;
m_DlgItemGroups[CD_B2].nCleanCheck = IDC_CHECK_CLEAN_B2;
4、定义消息处理函数
int CCDOperDlg3::OnBnClickedButtonCleanMessage(int nID)
{
//
GetDlgItem(m_DlgItemGroups[nID].nTxtFilePath)->SetWindowText(_T(""));
CButton *pCheck = (CButton *)GetDlgItem(m_DlgItemGroups[nID].nCleanCheck);
pCheck->SetCheck(TRUE);
UpdateData(); // 使用此函数后,不知界面上窗口的状态发生变化,窗口关联的变量也将放生便哈
return 0;
}
5、按钮消息处理
void CCDOperDlg3::OnBnClickedButtonCleanR0()
void CCDOperDlg3::OnBnClickedButtonCleanR1()
void CCDOperDlg3::OnBnClickedButtonCleanR2()
...
void CCDOperDlg3::OnBnClickedButtonCleanB1()
void CCDOperDlg3::OnBnClickedButtonCleanB2()
{
// TODO: ?ú′?ìí?ó???tí¨?a′|àí3ìDò′ú??
OnBnClickedButtonCleanMessage(CD_B2);
}