xp系统中CComboBox::SetMinVisibleItems()无效

red-fly 2014-06-04 10:55:01
在有些xp系统中,CComboBox::SetMinVisibleItems()无效

在文档视图中,有派生的CListView子类CConext_SameView,类声明如下:
class CConext_SameView : public CListView, CAutoList
(其中CAutoList类是自己写的实现公有函数的类)

在void CConext_SameView::OnInitialUpdate()中调用void CAutoList::InitCbbControl( CWnd *pWndParent ):
void CConext_SameView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
InitCbbControl( this );
}

InitCbbControl()实现如下:
void CAutoList::InitCbbControl( CWnd *pWndParent )
{
m_cbb.Create( WS_CHILD | WS_BORDER | CBS_DROPDOWNLIST | WS_VSCROLL, CRect(0, 0, 150, 300), pWndParent, IDD_ABOUTBOX + 1 ); // ID随便弄一个,只要不重复就行。非常重要的一行
if ( !m_cbb.SetMinVisibleItems( 15 ) )
AfxMessageBox( TEXT("下拉列表看不见") );
}
m_cbb声明如下:
CAutoCbb m_cbb;
类声明如下:
class CAutoCbb : public CComboBox


结果,在多个系统上测试,win7、xp上测试都可以正常显示这个m_cbb,但就有一台xp上显示时,下拉列表没有显示出来,也没有提示那个错误“下拉列表看不见”,说明设置是成功的。
我不调用SetMinVisibleItems(),结果在原来能显示的系统上一样正常显示,如果我设置的显示项数小于实际的项数,自动出现滚动条。但在不能显示的xp上还是显示不了

后搜索到一个帖子 苦寻三天仍误解.Combobox下拉列表的高度,有点像,但不完全一样,在创建时指定了高度300,还是一样
...全文
211 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
red-fly 2014-06-05
  • 打赏
  • 举报
回复
问题解决。 昨天弄的不对,如果设置了高度,它就是有效的,只是昨天我改的位置不对,改的不是这个控件的高度。 m_cbb.Create( WS_CHILD | WS_BORDER | CBS_DROPDOWNLIST | WS_VSCROLL, CRect(0, 0, 150, 300), pWndParent, IDD_ABOUTBOX + 1 ); 这一行中的“300”是有效的,只是昨天我改的不是这一行,晕死了。 不过我发现我100、200、300都是显示很多条,大约29项,没有试过比较小的值。
red-fly 2014-06-05
  • 打赏
  • 举报
回复
都是xp professional 2002版(应该不是2012,否则就是记错了) sp3,有问题的是萝卜家园版的,2012 ghost纯净版
oyljerry 2014-06-05
  • 打赏
  • 举报
回复
XP版本是否有区别,是否没有升级补丁等
schlafenhamster 2014-06-05
  • 打赏
  • 举报
回复
不会 CommCtrl32.dll 有问题 吧
red-fly 2014-06-05
  • 打赏
  • 举报
回复
没有人遇到过这种情况?

15,979

社区成员

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

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