Combo Box下拉列表框函式
阿新 • • 發佈:2019-01-11
今天是使用combo box實現:根據選擇值不同,控制另一個控制元件的啟用停用。例如:選擇1時啟用,2或者3時停用。
選擇CBN_SELECHANGE訊息
以下為實現(有問題)
void CAccOpen::OnSelchange() { // TODO: Add your control notification handler code here CString l_cstrList; ((CComboBox*)GetDlgItem(IDC_DRAW_TYPE))->GetWindowText(l_cstrList); if( l_cstrList[0]=='1' ) { GetDlgItem( IDC_ACC_PWD )->EnableWindow( true ); GetDlgItem( IDC_ACCPWD )->EnableWindow( true ); } else { GetDlgItem( IDC_ACC_PWD )->EnableWindow( false ); GetDlgItem( IDC_ACCPWD )->EnableWindow( false ); } }
發現一般選擇2時才啟用,選擇3或者1時停用,跟蹤了一下,發現
((CComboBox*)GetDlgItem(IDC_DRAW_TYPE))->GetWindowText(l_cstrList);
中得到l_cstrList有滯後性,是上一個值,非當下值。
修改成如下實現即可:
int iPos=((CComboBox*)GetDlgItem(IDC_DRAW_TYPE))->GetCurSel(); ((CComboBox*)GetDlgItem(IDC_DRAW_TYPE))->GetLBText(iPos,l_cstrList); if( l_cstrList[0]=='1' ) { GetDlgItem( IDC_ACC_PWD )->EnableWindow( true ); GetDlgItem( IDC_ACCPWD )->EnableWindow( true ); } else { GetDlgItem( IDC_ACC_PWD )->EnableWindow( false ); GetDlgItem( IDC_ACCPWD )->EnableWindow( false ); }
選擇訊息CBN_SELENDOK 進行實現效果一樣。