我需要更新 combobox 一个新的价值,使它改变反映的文本。最清洁的方式来做到这后 combobox已经被初始化和信息。

所以我在尝试制作一个 postmessage 到hwnd包含 combobox.

所以如果我想要发送信息,以改变目前选择的项目的第n个项目时,会是什么样的 postmessage 看起来像什么?

我猜测,这将涉及 ON_CBN_SELCHANGE, 但我不能让它工作的权利。

有帮助吗?

解决方案

你想要的 ComboBox_SetCurSel:

ComboBox_SetCurSel(hWndCombo, n);

或者如果它是一个MFC CComboBox控制你也许可以这样做:

m_combo.SetCurSel(2);

我会想想如果你能做这手你还想图,而不是问题.CBN_SELCHANGE的通知,控制发送 回到你 当选择改变。

最后,可能需要添加的c++标签这个问题。

其他提示

一个简洁的版本:

const int index = 0;
m_comboBox.PostMessage(CBN_SELCHANGE, index);

什么可能是错误的选择是正在改变内部的选择变化信息处理程序,其结果在另一个选择变化的信息。

一个办法绕过这个 不需要的反馈的循环 是添加一个前哨的选择改变消息处理程序如下所示:

void onSelectChangeHandler(HWND hwnd)
{
  static bool fInsideSelectChange = 0;

  //-- ignore the change message if this function generated it
  if (fInsideSelectChange == 0)
  {
    //-- turn on the sentinel
    fInsideSelectChange = 1;

    //-- make the selection changes as required
    .....

    //-- we are done so turn off the sentinel
    fInsideSelectChange = 0;
  }
}

如果你的外汇想要改变的标题-这是线路显示,当组合框是关闭的,然后你可以做到如下:

m_ComboBox.DeleteString(0);//首先删除以前的任何0=些字符串 m_ComboBox.AddString(_T("你好"));

把这个放在外汇。在OnCloseupCombo-当的事件接近一个dropdownbox火灾

ON_CBN_CLOSEUP(IDC_COMBO1, OnCloseupCombo)

这种变化是一个新的串不是一个选择已经分配组合框元素

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top