У меня проблемы с включением или отключением определенных текстовых полей при выборе определенного комбинированного списка.
Я пытался использовать OnCbnSelChangeLvLayers()
& OnCbnDropdownLvLayers()
.
Проблема с первым обработчиком событий заключается в том, что мне нужно дважды щелкнуть одно и то же значение, и выбор в поле со списком отмечен. Второй обработчик событий решает проблему зависания, но я должен нажать на выпадающий список, чтобы событие произошло. Я также попробовал несколько других обработчиков событий для выпадающего списка, но безуспешно. m_d_layers
- строковая переменная для выбора в выпадающем списке (1,2,3,4)
DDX:
void CThermalToolDlg::DoDataExchange(CDataExchange* pDX)
{
DDX_CBString(pDX, IDC_LV_LAYERS, m_d_lvlayers);
}
Карта сообщений:
BEGIN_MESSAGE_MAP(CThermalToolDlg, CDialogEx)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_CBN_DROPDOWN(IDC_LV_LAYERS, &CThermalToolDlg::OnCbnDropdownLvLayers)
ON_CBN_DROPDOWN(IDC_HV_LAYERS, &CThermalToolDlg::OnCbnDropdownHvLayers)
ON_CBN_DROPDOWN(IDC_LVDUCTTYPE1, &CThermalToolDlg::OnCbnDropdownLvducttype1)
ON_CBN_DROPDOWN(IDC_LVDUCTTYPE2, &CThermalToolDlg::OnCbnDropdownLvducttype2)
ON_CBN_DROPDOWN(IDC_LVDUCTTYPE3, &CThermalToolDlg::OnCbnDropdownLvducttype3)
ON_CBN_DROPDOWN(IDC_HVDUCTTYPE1, &CThermalToolDlg::OnCbnDropdownHvducttype1)
ON_CBN_DROPDOWN(IDC_HVDUCTTYPE2, &CThermalToolDlg::OnCbnDropdownHvducttype2)
ON_CBN_DROPDOWN(IDC_HVDUCTTYPE3, &CThermalToolDlg::OnCbnDropdownHvducttype3)
ON_BN_CLICKED(IDCANCEL, &CThermalToolDlg::OnBnClickedCancel)
ON_BN_CLICKED(ID_CALCULATE, &CThermalToolDlg::OnCalculate)
//ON_CBN_EDITUPDATE(IDC_LV_LAYERS,&CThermalToolDlg::OnCbnEditupdateLvLayers)
//ON_CBN_SELENDOK(IDC_LV_LAYERS, &CThermalToolDlg::OnCbnSelendokLvLayers)
END_MESSAGE_MAP()
Обработчик событий:
void CThermalToolDlg::OnCbnDropdownLvLayers()
{
// TODO: Add your control notification handler code here
UpdateData();
if (m_d_lvlayers == "1")
{
GetDlgItem(IDC_LV2_CU)->EnableWindow(0);
GetDlgItem(IDC_LV2_ICI)->EnableWindow(0);
//and so on
}
else if (m_d_lvlayers == "2")
{
GetDlgItem(IDC_LV2_CU)->EnableWindow(1);
GetDlgItem(IDC_LV2_ICI)->EnableWindow(1);
//and so on
}
else if (m_d_lvlayers == "3")
{
GetDlgItem(IDC_LV2_CU)->EnableWindow(1);
GetDlgItem(IDC_LV2_ICI)->EnableWindow(1);
//and so on
}
else
{
GetDlgItem(IDC_LV2_CU)->EnableWindow(1);
GetDlgItem(IDC_LV2_ICI)->EnableWindow(1);
//and so on
}
}
Я хочу получить желаемое включение / отключение в один клик без зависания комбинированного списка. Есть ли другой способ или более быстрый метод для того же?