1. 程式人生 > >Combo Box下拉列表框函式

Combo Box下拉列表框函式

今天是使用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 進行實現效果一樣。