这个问题困扰我好几天了。我在工具栏(CMFCToolBar)上加了三个CMFCToolBarComboBoxButton组合框做查询数据用。第一个作为条件名组合框,打开数据库时动态添加CListCtrl列标题到组合框作为查询条件,第二个是条件运算符,第三个组合框根据第一个组合框选取的条件动态插入该条件对应的值列表。问题就出在这,试了好多方法,只有调用replaceButton()
时插入的条件值才会在组合框中显示,但是当鼠标点击组合框要选择条件查询时,组合框却不响应。鼠标一点击就消失,然后双击工具栏使其浮动,这时组合框响应了,也可以选择了。第三个组合框动态插入数据也是这个情况。我试着调用Invalidate()、RedrawWindow()、updatewindow()刷新、重绘工具栏,都不行。而不用replaceButton()这个函数,组合框就插入不了数据,这个问题困扰好多天了!有高手帮忙解答一下啊,急死了都!!!

解决方案 »

  1.   

    第一个组合框的插入数据代码如下:
    int nCount=comboButton1->GetCount();
    if (nCount>0)
    comboButton1->RemoveAllItems();//消除现有所有内容
    //得到listctrl的所有列的header字符串内容
    LVCOLUMN lvcol;
    TCHAR  str[256];
    int   nColNum;
    nColNum = 0;
    lvcol.mask = LVCF_TEXT;
    lvcol.pszText = str;
    lvcol.cchTextMax = 256;
    while(m_carList.GetColumn(nColNum, &lvcol))

    comboButton1->AddItem(lvcol.pszText);
    nColNum++;
    }
    //comboButton1->SelectItem(0);
    pm->GetToolBar().ReplaceButton (ID_TOOL_TIAOJIAN1,*comboButton1);//重置组合框

    //pm->GetToolBar().Invalidate();
    //pm->GetToolBar().RedrawWindow();