I am having trouble in enabling or disabling certain text boxes on selection of a particular combobox.
I have tried using OnCbnSelChangeLvLayers()
& OnCbnDropdownLvLayers()
.
The problem with the first event handler is I have to click on the same value twice and the selection in the combobox frezees. The second event handler solves the problem of freezing but I have to click on the dropdown of combobox in order for the event to occur. I also tried a few other event handlers for combobox but was not successful. m_d_layers
is the string variable for the combobox selection (1,2,3,4)
DDX:
void CThermalToolDlg::DoDataExchange(CDataExchange* pDX)
{
DDX_CBString(pDX, IDC_LV_LAYERS, m_d_lvlayers);
}
Message Map:
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()
Event Handler:
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
}
}
I want to obtain the desired enabling/disabling in a single click without freezing of the combobox. Is there any other way or faster method for the same?