-
09-06-2019 - |
题
我需要更新 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)
这种变化是一个新的串不是一个选择已经分配组合框元素
不隶属于 StackOverflow