在有些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,还是一样