例如可选项:A、B、C
当选则A时,显示选定A,然后再点下拉时只显示B、C(既此时下拉框只有B、C项,A顶端,而下拉框中被屏蔽)。该怎么解决呢?我这里如果屏蔽了A之后,顶端也不显示A
选择前是(默认值是A)
        |   A  |
        |   B  |
        |   C  |
选择B后,是
        |  B   |
        |  A   |
        |  C   |
选择C后,是
        |  C   |
        |  A   |
        |  B   |
就是类似这样的了

解决方案 »

  1.   

    重载其OnSelChanged()函数,原来选中的项文本添加到列表中,然后删除现在选中的项,并用SetWindowText()函数设置该下拉列表的显示选中项的文本;应该可以实现
      

  2.   

    OnSelChanged()
    {
    ....//选定(例B)触发函数
    ....//添加上次选定项(例A)文本到列表中
    ....//从列表中删除现在选定项(B)
    ....//SetWindowText("B")
    ..........//其他处理
    }是类似这样的吗?????
      

  3.   

    大致代码如下,帮我看看
    BOOL CGettingStarted::OnInitDialog() 
    {
    CDialog::OnInitDialog();

    // TODO: Add extra initialization here
    if(blFolder==TRUE)
    {
    m_strGettingStarted="Folder";
    }
    else
    m_strGettingStarted="Project";
    UpdateData(FALSE);
    UpdateData(TRUE);
    // m_GettingStarted.InsertString(0,m_strGettingStarted);
    m_GettingStarted.InsertString(0,"Folder");
    m_GettingStarted.InsertString(1,"Search");

    m_GetStartTree.Initialize();
    return TRUE;  // return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX Property Pages should return FALSE
    }
    void CGettingStarted::OnSelchangeGettingstartedCombo() 
    {
    // TODO: Add your control notification handler code here
    nSelType=m_GettingStarted.GetCurSel();
    if(nSelType!=CB_ERR)
    {
    CString scType;   //用来保存当前选中的类型
    m_GettingStarted.GetLBText(nSelType,scType); selType=scType;   
    }
    if(selType=="Search")
    {
    m_GettingStarted.DeleteString(nSelType);
    m_GettingStarted.AddString(m_strGettingStarted);
    m_strGettingStarted="Search";
    CGettingStartedSearch GettingStartedSearch_dlg;
    GettingStartedSearch_dlg.DoModal();
    m_GettingStarted.SetWindowText("Search");
    }

    else if(selType=="Folder")
    {
    blFolder=TRUE;
    m_GettingStarted.DeleteString(nSelType);
    m_GettingStarted.AddString(m_strGettingStarted);
    m_strGettingStarted="Folder";
    // CGettingStarted GettingStarted_dlg;
    // GettingStarted_dlg.DoModal();
    m_GetStartTree.CreateDirTree();
    }
    else
    {
    m_GettingStarted.DeleteString(nSelType);
    m_GettingStarted.AddString(m_strGettingStarted);
    m_strGettingStarted="Project";
    // m_GetStartTree.CreateDirTree();
    m_GetStartTree.CreateIniDirTree();
    }

    }
      

  4.   

    还没有解决?发过来看看吧,[email protected],这么看太麻烦,而且没法调试,也不知道是不是真的能行,呵呵
      

  5.   

    fengqinggao(风清高),已经发送了,你查收一下,谢谢
      

  6.   

    尝试了,不行,实在不好意思,误导你了,我还尝试了用Paste()命令,也不成功,:(
      

  7.   

    总感觉是触发事件返回点出了什么问题,该查查《深入浅出MFC》,可惜手头没书,:(