编程方式更改组合框
问题描述:
我需要更新combobox
一个新值,以便它改变它反射的文本。最简单的方法是在combobox
已经初始化并且有消息之后。编程方式更改组合框
所以我想制作一个postmessage
到包含combobox
的hwnd。
所以,如果我想将消息发送给它,改变当前所选项目到第n个元素,会是什么postmessage
样子?
我猜测它会涉及ON_CBN_SELCHANGE
,但我不能让它的工作权利。
答
ComboBox_SetCurSel(hWndCombo, n);
,或者如果它是一个MFC CComboBox控制你也许可以这样做:
m_combo.SetCurSel(2);
我可以想象,如果你这样做手工,你也想SendMessage函数,而比PostMessage。 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;
}
}
答
如果FX要更改标题 - 这是行所示,当组合框被关闭时,则可以执行以下操作:
m_ComboBox.DeleteString(0); //首先删除前面的内容,如果有的话,0 =可视字符串 m_ComboBox.AddString(_T(“Hello there”));
把这个在fx中。在OnCloseupCombo - 当事件关闭dropdownbox火灾
ON_CBN_CLOSEUP(IDC_COMBO1, OnCloseupCombo)
这种变化是一个新的字符串不是一个选择已经分配的组合框元素
是否有特别语言你正在寻找一个例子吗? C++? – GEOCHET 2008-09-12 15:26:20
线索是在MFC标签:) – 2008-09-12 15:39:54