设置combobox的文本

firefly3233 2012-01-21 02:05:43
一个CBS_DROPDOWNLIST样式的combobox,无法直接设置其显示的文本呀,不要给我说用CComboBox::SetCurSel(),因为我是在制作一个多项选择的combobox,其内部的list box我已经消毁,所以不能用SetCurSel()。
如何直接给combobox赋文本,我用了多种方式测试都达不到效果:

m_pCombo->SetWindowText("aaa");
COMBOBOXINFO cbi = {sizeof(cbi)};
::GetComboBoxInfo(m_pCombo->m_hWnd, &cbi);
int nID = ::GetDlgCtrlID(cbi.hwndItem);
m_pCombo->SetDlgItemText(nID, "bbb");
nID = ::GetDlgCtrlID(cbi.hwndCombo);
m_pCombo->SetDlgItemText(nID, "ccc");
m_pCombo->SetDlgItemText(IDC_STATIC, "ddd");
::SetWindowText(cbi.hwndItem, "eee");
::SetWindowText(cbi.hwndCombo, "fff");

...全文
362 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2012-01-21
  • 打赏
  • 举报
回复
搜索‘关于CListBox和CComboBox修改窗口式样的问题’
firefly3233 2012-01-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 schlafenhamster 的回复:]
"其内部的list box我已经消毁",然后呢?
[/Quote]
然后我想让combobox显示一个文本,就无法成功。
schlafenhamster 2012-01-21
  • 打赏
  • 举报
回复
"其内部的list box我已经消毁",然后呢?
firefly3233 2012-01-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tomtzh 的回复:]
因为drop list样式是不允许用户进行编辑的,自然就不能使用ddx和setwindowtext之类的函数设置combobox的内容了。
Drop List 是ComboBox + ListBox
Drop Down 是ComboBox + EditBox
[/Quote]
list box并不是comboBox的子控件,是桌面的子控件,只不过显示在comboBox下面,让你感觉到是它的子控件。
Drop Down样式下,ComboBox只有一个子控件edit的
Drop List样式下,ComboBox是没有子控件的。
所以很难给其赋文本。选择到一项,给combobox一个项ID,combobox从listbox里找到这个ID的文本,然后DrawText到客户区。如果是这样的画,真得就无法直接给其赋文本了。只要重载onpaint,重画3D边框和按纽了。用DrawText来绘文本
tomtzh 2012-01-21
  • 打赏
  • 举报
回复
因为drop list样式是不允许用户进行编辑的,自然就不能使用ddx和setwindowtext之类的函数设置combobox的内容了。
Drop List 是ComboBox + ListBox
Drop Down 是ComboBox + EditBox

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧