最近写一个工具需要在CListCtrl中内嵌ComboBox,相关代码如下:
int hei;
CRect rect;
CWnd* wnd = GetDlgItem(IDC_LIST1); m_list.GetSubItemRect(0, 1, LVIR_LABEL, rect);
hei = rect.Height();
rect.bottom = rect.top + 30 * rect.Height();
CComboBox* mbox = new CComboBox();
DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL|CBS_DROPDOWNLIST | CBS_DISABLENOSCROLL;
mbox->Create(dwStyle, rect, wnd, 1001);
//m_list.box->ModifyStyleEx(0,WS_EX_CLIENTEDGE);
mbox->SetItemHeight(-1, hei);
CFont* pFont = mbox->GetParent()->GetFont();
mbox->SetFont(pFont);
mbox->InsertString(0, _T("test0"));
mbox->InsertString(1, _T("test1"));但是运行之后出现两个问题:
1、设置了edit子框的高度,但是显示出来的高度还是超过了CListCtrl的行高。
2、如果执行InsertString,下拉框显示正常。一旦执行InsertString下拉框就只能显示半行字那么多了。
请教各位大虾,该怎么解决?
int hei;
CRect rect;
CWnd* wnd = GetDlgItem(IDC_LIST1); m_list.GetSubItemRect(0, 1, LVIR_LABEL, rect);
hei = rect.Height();
rect.bottom = rect.top + 30 * rect.Height();
CComboBox* mbox = new CComboBox();
DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL|CBS_DROPDOWNLIST | CBS_DISABLENOSCROLL;
mbox->Create(dwStyle, rect, wnd, 1001);
//m_list.box->ModifyStyleEx(0,WS_EX_CLIENTEDGE);
mbox->SetItemHeight(-1, hei);
CFont* pFont = mbox->GetParent()->GetFont();
mbox->SetFont(pFont);
mbox->InsertString(0, _T("test0"));
mbox->InsertString(1, _T("test1"));但是运行之后出现两个问题:
1、设置了edit子框的高度,但是显示出来的高度还是超过了CListCtrl的行高。
2、如果执行InsertString,下拉框显示正常。一旦执行InsertString下拉框就只能显示半行字那么多了。
请教各位大虾,该怎么解决?
解决方案 »
- MFC程序怎么载入一个dll文件
- 求教一个关于取网页中控件的IHTMLDocument2接口的问题
- vc++编程:100分求教!怎样判断word是否被加密?急!!(回答的好,分可再加)
- vc内存管理的问题,我有3G内存却不够用啊。。。
- 为什么我在一个类声明前加上一个[uuid("89907476-7370-3538-3939-6DDDCDEDF56720")]编译不过去
- 请教关于 AfxMessageBox 的问题
- Visual Stdio 6.0 编译问题
- 如何获取指定的字体,指定大小的文字的点阵?
- 这样创建UNIX分区?
- 刚发现一个有意思的东东(不无聊者别进来)
- vc++6.0中动态创建的CStatic控件,不能显示图片,而是一片灰色,为什么?
- exp文件是干什么的
http://www.codeproject.com/KB/combobox/editing_subitems_in_listcontrol.aspx
CComboBox *pComboBox;
GetSubItemRect(nItem,nSubItem,LVIR_BOUNDS,rect); rect.bottom=rect.top+150; pComboBox=new CComboBox;
pComboBox->Create(WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_AUTOHSCROLL|CBS_DROPDOWNLIST,
rect, this, 1002);
DWORD dwStyle = WS_CHILD ¦ WS_VISIBLE ¦ WS_VSCROLL ¦ WS_HSCROLL ¦CBS_DROPDOWNLIST ¦ CBS_DISABLENOSCROLL; 难道内嵌的时候不能设置水平滚动?