CComboBox1.SetWindowText("123456");显示空白? void CDialog1::OnSelChange(){ m_ComboBox1.SetWindowText("123456");}为什么ComboBox1的编辑框中不显示"123456",也不显示所选择的条目,而是显示空白呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你是想修改了控件,然后给他赋值?combox好像是用addstring()或者insertstring()方法来实现你想要的结果… 要想显示所要的条目, 请用SetCurSel(); 简单试了一下,感觉m_ComboBox1.SetWindowText("123456"); 在SelChange消息之前执行了。 //你可以自己调试下,并没有进入到这个函数里面来,所以不存在会显示 //这个消息函数是当你改变当前选项的时候才会触发,而你没有初始化里面的数据 //也就没有存在触发的情况,自然就不会进到这个函数,进不到肯定不会实行下面这句话了void CDialog1::OnSelChange() { m_ComboBox1.SetWindowText("123456"); }你想要这句话实现的话不能添加ComboBox的CBN_SELCHANG消息,而是添加CBN_KILLFOCUS或者是CBN_DROPDOWN这两消息都可以实现你那句话。 又或者你在OnInitDialog()中先用AddString添加上几个内容,再用CBN_SELCHANGE才会实现你的这句话 要使用SETWINDOWTEXT必须设置DROPDOWN风格 下移风格添加CBN_KILLFOCUS或者是CBN_DROPDOWN这两消息都可以实现。上面有句话说错了,如果是在OnInitDialog()中用AddString添加上几个内容,比如说添加1,2,3再用CBN_SELCHANGE实现你的这句话的话还是不能实现你这句话哦,因为你改变选项后(比如说改变成"2")先用到你的m_ComboBox1.SetWindowTex("123456"); 然后就会再把"2"设置到ComboBox中。这样就会造成你要显示的123456并没有显示出来。只会显示"2". To 8楼:你试过会显示“2”?其实编辑框中没有内容显示。我的目的是:选中下拉列表中某条(如:"china")后,ComboBox1的编辑框中不显示这条的内容("china"),而是显示我设置的内容(如:"中国")。 那我建议lz简单的用的话, 就直接edit+listbox. 如果非要combox, 那就在onselectchange里 得到那个edit的句柄, 然后setwindowtext, 而不是直接给combo赋值.得到edit的句柄, 可以看看msdn里的ccombobox类的成员函数. 以上所说都是由代码测试出来的。 所以一定会显示2 BOOL CMy11Dlg::OnInitDialog(){ CDialog::OnInitDialog(); m_cba.AddString("China"); m_cba.AddString("English"); m_cba.SetCurSel(0); return TRUE; // return TRUE unless you set the focus to a control}void CMy11Dlg::OnKillfocusCombo1() { // TODO: Add your control notification handler code here/* CString str; m_cba.GetLBText(m_cba.GetCurSel(),str); if("china" == str) m_cba.SetWindowText("中国");*/ //失去焦点后显示的是中国}void CMy11Dlg::OnSelchangeCombo1() { // TODO: Add your control notification handler code here/* CString str; m_cba.GetLBText(m_cba.GetCurSel(),str); if("china" == str) m_cba.SetWindowText("中国");*/ //选中后显示的还是china而不是中国}void CMy11Dlg::OnDropdownCombo1() { // TODO: Add your control notification handler code here/* CString str; m_cba.GetLBText(m_cba.GetCurSel(),str); if("china" == str) m_cba.SetWindowText("中国");*/ //这个一点下拉框就直接显示出中国} void CDialog1::OnSelChange() { m_ComboBoxEx1.GetEditCtrl()->SetWindowText("中国");//ComboBoxEx可以 //但AddString();InsertString();FindString();都不能用了。没办法呀,只能改了。} //InsertItem();用法:COMBOBOXEXITEM Item;Item.mask = CBEIF_TEXT;Item.iItem = 0;Item.pszText = szPath;m_cboExNameC.InsertItem(&Item); ComboBox是 Edit 和 List的组合控件 ComboBoxEx的文本长度有限,怎么办? 控件CWebbrowser2如何实现IDocHostShowUI接口 BCG的风格对对话框没有效果 该怎么弄无规则区域颜色填充,大家有什么好的方法,帮忙指点下~!! 请问Button 按扭上怎么样加图标? 利用odbc方式操作sql server 2000数据库时,如何调用存储过程,主要是输入参数怎么传进去? 请问怎样在一个EditBox里分别用两种字体显示字符串? SendMessage的用法? 鼠标单击的问题 紧急求助!怎样计算以2为底的对数? 刚刚决心买了本C++ prime,怎样能学得更有效率,介绍一下方法吗? 串口线程问题 问题,TCP一旦建立连接,放着不管会被关闭么?
//你可以自己调试下,并没有进入到这个函数里面来,所以不存在会显示
//这个消息函数是当你改变当前选项的时候才会触发,而你没有初始化里面的数据
//也就没有存在触发的情况,自然就不会进到这个函数,进不到肯定不会实行下面这句话了
void CDialog1::OnSelChange()
{
m_ComboBox1.SetWindowText("123456");
}
你想要这句话实现的话不能添加ComboBox的CBN_SELCHANG消息,而是添加CBN_KILLFOCUS
或者是CBN_DROPDOWN这两消息都可以实现你那句话。 又或者你在OnInitDialog()中先用AddString添加上几个内容,再用CBN_SELCHANGE才会实现你的这句话
m_ComboBox1.SetWindowTex("123456"); 然后就会再把"2"设置到ComboBox中。这样就会造成你要显示的123456并没有显示出来。只会显示"2".
以上所说都是由代码测试出来的。 所以一定会显示2
BOOL CMy11Dlg::OnInitDialog()
{
CDialog::OnInitDialog(); m_cba.AddString("China");
m_cba.AddString("English");
m_cba.SetCurSel(0);
return TRUE; // return TRUE unless you set the focus to a control
}void CMy11Dlg::OnKillfocusCombo1()
{
// TODO: Add your control notification handler code here
/* CString str;
m_cba.GetLBText(m_cba.GetCurSel(),str);
if("china" == str)
m_cba.SetWindowText("中国");*/ //失去焦点后显示的是中国
}void CMy11Dlg::OnSelchangeCombo1()
{
// TODO: Add your control notification handler code here
/* CString str;
m_cba.GetLBText(m_cba.GetCurSel(),str);
if("china" == str)
m_cba.SetWindowText("中国");*/ //选中后显示的还是china而不是中国
}void CMy11Dlg::OnDropdownCombo1()
{
// TODO: Add your control notification handler code here
/* CString str;
m_cba.GetLBText(m_cba.GetCurSel(),str);
if("china" == str)
m_cba.SetWindowText("中国");*/ //这个一点下拉框就直接显示出中国
}
{
m_ComboBoxEx1.GetEditCtrl()->SetWindowText("中国");//ComboBoxEx可以
//但AddString();InsertString();FindString();都不能用了。没办法呀,只能改了。
}
//InsertItem();用法:
COMBOBOXEXITEM Item;
Item.mask = CBEIF_TEXT;
Item.iItem = 0;
Item.pszText = szPath;
m_cboExNameC.InsertItem(&Item);