SDI中CComboBox显示问题

banqiaoren 2006-07-19 08:57:13
问题:单文档的窗口中CComboBox项的值不能正常显示
程序环境:
操作系统:windows xp
开发环境:VC 6.0
建立一个单文档程序,运行程序时,通过打开配置窗口时,配置窗口中的CComboBox配置项能下拉显示相应的值。
问题是现在配置窗口能正常显示,但是CComboBox下拉项不能拉动,没有相应的值?


在ResourceView的Dialog中新建IDD_CONFIG,在该对话框中增加一CComboBox项,取名为IDC_COMBO_SIGNALTYPE,其他选型都默认,Data项中没有数据
生成类CConfigDlg.
在ResourceView的Menu的IDR_MAINFRAME中新增一子菜单:配置,在ClassWizard中的MyView视类中生成映射函数void CMyView::OnConfig()
,在MyView.cpp中包含头文件ConfigDlg.h.

模式对话框显示:
在void CMyView::OnConfig()中添加代码如下
{
CConfigDlg cfgDlg;
cfgDlg.DoModal();
}
在CConfigDlg::CConfigDlg(CWnd* pParent /*=NULL*/)
: CDialog(CConfigDlg::IDD, pParent)
中添加代码如下
{
CComboBox * pCombo = (CComboBox * ) this->GetDlgItem(IDC_COMBO_SIGNALTYPE);
CString strValue1,strValue2,strValue3,strValue4;
strValue1 = "信号类型1";
strValue2 = "信号类型2";
strValue3 = "信号类型3"
strValue4 = "信号类型4";
pCombo->AddString((LPCTSTR)strValue1);
pCombo->AddString((LPCTSTR)strValue2);
pCombo->AddString((LPCTSTR)strValue3);
pCombo->AddString((LPCTSTR)strValue4);
//但是加上下面就能在控件中显示当前值,不过还是没有其他3个选项值.
//pCombo->SetCurSel(0);


}
生成程序打开配置对话框正常,但是CComboBox下拉项不能拉动,没有相应的值,通过调试显示在pCombo->AddString((LPCTSTR)strValue1)时this指针有值,但是this的m_hWnd值为0。

非模式对话框显示:
在void CMyView::OnConfig()中添加代码如下
{
CConfigDlg * pCfgDlg = new CConfigDlg;
pCfgDlg->Create(IDD_CONFIG,this);
pCftDlg->ShowWindow(SW_SHOW);
}
在CConfigDlg::CConfigDlg(CWnd* pParent /*=NULL*/)
: CDialog(CConfigDlg::IDD, pParent)
中添加代码如下
{
CComboBox * pCombo = (CComboBox * ) this->GetDlgItem(IDC_COMBO_SIGNALTYPE);
CString strValue1,strValue2,strValue3,strValue4;
strValue1 = "信号类型1";
strValue2 = "信号类型2";
strValue3 = "信号类型3"
strValue4 = "信号类型4";
pCombo->AddString((LPCTSTR)strValue1);
pCombo->AddString((LPCTSTR)strValue2);
pCombo->AddString((LPCTSTR)strValue3);
pCombo->AddString((LPCTSTR)strValue4);
//但是加上下面就能在控件中显示当前值,不过还是没有其他3个选项值.
//pCombo->SetCurSel(0);

}
生成程序打开配置对话框正常,但是CComboBox下拉项不能拉动,没有相应的值,通过调试显示在pCombo->AddString((LPCTSTR)strValue1)时this指针有值,但是this的m_hWnd值为0。
是不是在CComboBox中增加值后还需要其他操作?谁能给我指点一下,谢谢

联系方式:11rens@163.com
...全文
249 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
snailbing 2006-12-25
  • 打赏
  • 举报
回复
我也有一样的情况,只是我使用AddString()方法,就会报错;
Elysium 2006-07-19
  • 打赏
  • 举报
回复
1. 察看ComboBox的Styles里是否为DropDown
2. 将下拉框调整为较大高度,能够显示多条数据,默认的只够显示一条下拉数据的
3. 把CComboBox * pCombo = (CComboBox * ) this->GetDlgItem(IDC_COMBO_SIGNALTYPE)调整为CComboBox * pCombo = (CComboBox * )GetDlgItem(IDC_COMBO_SIGNALTYPE)
一剑 2006-07-19
  • 打赏
  • 举报
回复
常见的问题:
你要在对话框资源摸板点击该组合框的下拉箭头,然后鼠标移动到下边界,按着鼠标左健向下拉一下,然后保存对话摸板即可。

16,551

社区成员

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

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

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