在一个组合框里 ,有几行数据,比如这样的三行数据: "星期一 (5)" ," 星期二 (7) " , " 星期三 (2)",当用户选择其中一行时,要把括号中的内容过滤掉再显示到组合框的编辑框中,比如选择“星期二 (7)”这行 ,那么只显示“星期二”到编辑框。
那么,这些过滤字符的代码应该写在哪里呢?

解决方案 »

  1.   

    LRESULT OnUpdateCombo(WPARAM wParam, LPARAM lParam);#define MSG_UPDATECOMBO WM_USER + 0x11ON_CBN_SELENDOK(IDC_COMBO1, OnSelendokCombo1)
    ON_MESSAGE(MSG_UPDATECOMBO, OnUpdateCombo)// CBN_SELENDOK
    void CXXXDlg::OnSelendokCombo1() 
    {
    // TODO: Add your control notification handler code here
    int nIndex = m_combo.GetCurSel();
    if(CB_ERR != nIndex)
    {
    CString str;
    m_combo.GetLBText(nIndex, str);
    int nFlag = str.Find(_T("("), 0);
    if(-1 != nFlag)
    str = str.Left(nFlag);
    str.TrimRight(_T(" "));
    TCHAR* buf = new TCHAR[str.GetLength() + 1];
    _stprintf(buf, _T("%s"), str);
    PostMessage(MSG_UPDATECOMBO, 0, (LPARAM)buf);
    }
    }LRESULT CXXXDlg::OnUpdateCombo(WPARAM wParam, LPARAM lParam)
    {
    LPTSTR pBuf = (LPTSTR)lParam;
    m_combo.SetWindowText(pBuf);
    delete[] pBuf;
    pBuf = NULL;
    return 0;
    }
      

  2.   

    为什么m_combo.SetWindowText(str)这函数直接写在OnSelendokCombo1()里面就不起作用的呢 ,一定要postmessage到另外的函数执行?
      

  3.   

    SetWindowText后要UpdateData(FALSE)再次初始化对话框。
    不然就PostMessage通知更新。