CComboBox

小曦子 2010-07-21 06:54:38
在用CComboBox 这个组件时,因为初始化读取某配置,然后设置选中,可是发现一个无语的问题,就是生成时不会显示CComboBox被选中的数据,而是直接是空白的,要是鼠标在窗体任意位置点一下,就可以显示,想请高手指教一下,要怎么弄
用过UpdateData了,还是不行的
...全文
194 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
nbabest23 2010-07-23
  • 打赏
  • 举报
回复
给combobox关联一个 CString 的变量
然后在构造函数中 给此变量赋值就可以了
Daveee 2010-07-23
  • 打赏
  • 举报
回复
不过好像差不多
Daveee 2010-07-23
  • 打赏
  • 举报
回复
控件向下拖动小了,你为什么要读取配置文件不能直接存储呢
飞檐走壁 2010-07-23
  • 打赏
  • 举报
回复
关联一个CString变量

选择后再用下面两个
UpdateData(TRUE);
UpdateData(FALSE);
c_java_oracle 2010-07-23
  • 打赏
  • 举报
回复
RedrawWindow();
Eleven 2010-07-23
  • 打赏
  • 举报
回复
没有调用CComboBox::SetCurSel();吧。。。
chenjelly 2010-07-23
  • 打赏
  • 举报
回复
是不是更新没有处理好哦……
cdm2179 2010-07-23
  • 打赏
  • 举报
回复
SetCurSel(0);

这个一般都对啊,你其他部分代码有没问题?
向立天 2010-07-23
  • 打赏
  • 举报
回复
你用的是标准控件么?
风格怎么设置的?
你自己的代码具体是怎么写的
小曦子 2010-07-23
  • 打赏
  • 举报
回复
控件上的值是没有读取的,直接插入,读配置文件是为了确定选第几个显示
小曦子 2010-07-23
  • 打赏
  • 举报
回复
Ccb_Filter.InsertString(-1, "一般过滤兼容测试");
Ccb_Filter.InsertString(-1, "一般过滤防护模式");
Ccb_Filter.InsertString(-1, "标准过滤防护模式");

Ccb_Filter.SetCurSel(i);

就是上面这个样子,用了updatedata了,还有一些在baidu.google上的方法都不行啊
样式么,只是把查看改成“报告”,其他的一律不变的
小曦子 2010-07-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 liberty724048 的回复:]
有时候CComboBox控件初始化有问题,最好采用定时器延时初始化:
在OnInitDialog()中:
SetTimer(1,10,NULL);
在OnTimer()中:
if(nIDEvent==1)
{
KillTimer(1);
//添加初始化组合框列表及其初始值的代码
}
[/Quote]不行的啊,哎,还是得数据点一下才行啊
Liberty-Bird 2010-07-21
  • 打赏
  • 举报
回复
有时候CComboBox控件初始化有问题,最好采用定时器延时初始化:
在OnInitDialog()中:
SetTimer(1,10,NULL);
在OnTimer()中:
if(nIDEvent==1)
{
KillTimer(1);
//添加初始化组合框列表及其初始值的代码
}
Liberty-Bird 2010-07-21
  • 打赏
  • 举报
回复
有时候CComboBox控件初始化有问题,最好采用定时器延时初始化:
在OnInitDialog()中:
SetTimer(1,10,NULL);
在OnTimer()中:
if(nIDEvent==1)
{
KillTimer(1);
//添加初始化组合框列表及其初始值的代码
}
Liberty-Bird 2010-07-21
  • 打赏
  • 举报
回复
有时候CComboBox控件初始化有问题,最好采用定时器延时初始化:
在OnInitDialog()中:
SetTimer(1,10,NULL);
在OnTimer()中:
if(nIDEvent==1)
{
KillTimer(1);
//添加初始化组合框列表及其初始值的代码
}
黑泡泡选手 2010-07-21
  • 打赏
  • 举报
回复
Combox invalidate() 一下呐···
小曦子 2010-07-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 w174504744 的回复:]
在OnInitDialog() 中:
GetDlgItem(IDC_COMBO_BOX);
pComBox->ResetContent();
pComBox->AddString();
pComBox->SetCurSel(0);

这样行吗?
[/Quote]

你这样也不行的,我就是在窗体初始化的时候读来的,你这样只是重复劳动而已
小曦子 2010-07-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hfcarrey 的回复:]
相比你是在DropList状态下 设置值使用了SetWindowText(CString)

在 样式DropList时,使用 SetCurSel(int)
否则 可以直接使用SetWindowText(CString)
[/Quote]
你的方法我也试了不行的,反正我不管怎么弄,都得在鼠标在窗体某处点击一下才会显示啊
hfcarrey 2010-07-21
  • 打赏
  • 举报
回复
相比你是在DropList状态下 设置值使用了SetWindowText(CString)

在 样式DropList时,使用 SetCurSel(int)
否则 可以直接使用SetWindowText(CString)
勇-子 2010-07-21
  • 打赏
  • 举报
回复
在OnInitDialog() 中:
GetDlgItem(IDC_COMBO_BOX);
pComBox->ResetContent();
pComBox->AddString();
pComBox->SetCurSel(0);

这样行吗?

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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