View Full Version : [Visual C++] Combo Box
salve ragazzi, ho un problema con la Combo Box di Visual C++, in pratica ho bisogno che ogni volta che seleziono un elemento del menù a tendina la variabile associata al menù (che ho scelto di tipo CString) assuma tale valore... Ho provato tutti gli eventi ma non funziona... Suggerimenti?? Grazie
salve ragazzi, ho un problema con la Combo Box di Visual C++, in pratica ho bisogno che ogni volta che seleziono un elemento del menù a tendina la variabile associata al menù (che ho scelto di tipo CString) assuma tale valore... Ho provato tutti gli eventi ma non funziona... Suggerimenti?? Grazie
hai provato con l'evento onselchange? poi ricordati di chiamare UpdateData(TRUE)
Ti riporto il mio codice. Dovrebbe abilitare e disabilitare dei controlli a secondo dell'elemento di menù selezionato...e invece sembra che abiliti e disabiliti gli elementi a caso(per esempio quando seleziono "Arch" dovrebbe disabilitare tutti i controlli). m_combo è la variabile associata alla combo box ed è di tipo CString. I termini tra apici sono gli elementi del menù a tendina...Dove sta l'errore?
void CIdentityDlg::OnSelchangeCombo()
{
// TODO: Add your control notification handler code here
//UpdateData(FALSE);
if(m_combo == "Arch")
{
GetDlgItem(IDC_EDIT1)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT2)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT3)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT4)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT5)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT6)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT7)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT8)->EnableWindow(FALSE);
UpdateData(TRUE);
}
if (m_combo == "Left Loop")
{
GetDlgItem(IDC_EDIT1)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT2)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT3)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT4)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT5)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT6)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT7)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT8)->EnableWindow(TRUE);
}
if (m_combo == "Right Loop")
{
GetDlgItem(IDC_EDIT1)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT2)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT3)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT4)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT5)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT6)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT7)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT8)->EnableWindow(TRUE);
}
if (m_combo == "Whorl")
{
GetDlgItem(IDC_EDIT1)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT2)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT3)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT4)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT5)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT6)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT7)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT8)->EnableWindow(TRUE);
}
if (m_combo == "Tended Arch")
{
GetDlgItem(IDC_EDIT1)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT2)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT3)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT4)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT5)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT6)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT7)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT8)->EnableWindow(TRUE);
}
if (m_combo == "None")
{
GetDlgItem(IDC_EDIT1)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT2)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT3)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT4)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT5)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT6)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT7)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT8)->EnableWindow(TRUE);
}
UpdateData(TRUE);
}
Spero che potrai essermi di aiuto... Grazie mille....
Ho risolto bastava mettere UpdateData(TRUE) prima degli if...invece che dopo...Grazie lo stesso. Ciao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.