CListCtrl能设置行高吗? ??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 能够有下列几种方法:1、将字体设大2、用图片撑起来3、自己重载DrawItem 这也是最麻烦的建议使用第2种 关于如何设置图象:m_lstctlTable.Create(WS_TABSTOP|WS_GROUP|WS_VISIBLE|WS_CHILD|LVS_REPORT|LVS_SHOWSELALWAYS ,rect,this,IDC_CASE_DGRID);m_lstctlTable.SetExtendedStyl(LVS_EX_FULLROWSELECT|LVS_EX_SUBITEMIMAGES|LVS_EX_GRIDLINES);CBitmapbmp;bmp.LoadBitmap(IDB_CASEITEM);m_ImgList.Create(16, 16, ILC_COLOR8|ILC_MASK, 2, 0);m_ImgList.Add(&bmp, RGB(0, 128, 128));m_lstctlTable.SetImageList(&m_ImgList,LVSIL_STATE);//...........m_lstctlTable.SetItemState(i, INDEXTOSTATEIMAGEMASK(n), LVIS_STATEIMAGEMASK);// i是列表项的索引,n是第几个位图 你把图片搞成透明的就可以了第3种啊 那就真的非常麻烦你要先设置控件的 OwnerDraw属性然后添加反射消息好象叫MeasureItem吧最后也是最麻烦的了 要重载DrawItem 自己用GDI 还要自己算好格子 一个一个画建议使用第2种方法 ON_WM_MEASUREITEM_REFLECT()响应如上消息; 并改变响应函数如下;afx_msg void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);void CXXXListCtrl::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct){ lpMeasureItemStruct->itemHeight = m_nItemHeight; (m_nItemHeight即你想要的高度)}void CXXXListCtrl::SetItemHeight(){ CRect rcWin; GetWindowRect(&rcWin); WINDOWPOS wp; wp.hwnd = m_hWnd; wp.cx = rcWin.Width(); wp.cy = rcWin.Height(); wp.flags = SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOZORDER; SendMessage(WM_WINDOWPOSCHANGED, 0, (LPARAM)&wp);}ListCtrl创建后, 如果收到WM_WINDOWPOSCHANGED消息, 它会调用计算行高的函数MeasureItem(...), 你在这个函数里面设定行高即可; 最后就是重载DrawItem我还没看到有人做过~~ 如果你做了 请发给我拉 DrawItem是纯虚函数如果你要触发它的话 必须设置List的 OwnerDraw 属性为true 我试过了,还是不能触发。还有一个问题是如果我把OwnerDraw设为真的话,我就不能往里面插入项目了,会报错的。 ON_WM_MEASUREITEM_REFLECT()响应如上消息; 并改变响应函数如下;afx_msg void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);void CXXXListCtrl::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct){ lpMeasureItemStruct->itemHeight = m_nItemHeight; (m_nItemHeight即你想要的高度)}void CXXXListCtrl::SetItemHeight(){ CRect rcWin; GetWindowRect(&rcWin); WINDOWPOS wp; wp.hwnd = m_hWnd; wp.cx = rcWin.Width(); wp.cy = rcWin.Height(); wp.flags = SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOZORDER; SendMessage(WM_WINDOWPOSCHANGED, 0, (LPARAM)&wp);}ListCtrl创建后, 如果收到WM_WINDOWPOSCHANGED消息, 它会调用计算行高的函数MeasureItem(...), 你在这个函数里面设定行高即可;=================我也是这种思路,暂时没有成功,还在继续试验 如何在另一个MDI窗口中显示当前MDI窗口子窗口内容 CListCtrl 新手关于一个简单发送接受消息程序的种种问题!(在线等) 如何把字符串转化成时间,和当前时间比较? VC7 Release模式下DAO不能创建dbDate字段 听说MSDN中总结过MFC中各个句柄的获取方法,不知道是在哪里找到的? 用pop3可以接收、查看图片吗? 看看这个问题怎么解决 一个sniffer程序中有关WSARecv和CWinThread的问题——非常怪的问题 数据库的查询结果怎样导出到数据库和excel表中? 关于完成端口 这个语句为什么不能实现ListCtrl的插入功能?
有下列几种方法:
1、将字体设大
2、用图片撑起来
3、自己重载DrawItem 这也是最麻烦的建议使用第2种
,rect,this,IDC_CASE_DGRID);
m_lstctlTable.SetExtendedStyl(LVS_EX_FULLROWSELECT|LVS_EX_SUBITEMIMAGES|LVS_EX_GRIDLINES);CBitmapbmp;
bmp.LoadBitmap(IDB_CASEITEM);
m_ImgList.Create(16, 16, ILC_COLOR8|ILC_MASK, 2, 0);
m_ImgList.Add(&bmp, RGB(0, 128, 128));
m_lstctlTable.SetImageList(&m_ImgList,LVSIL_STATE);//...........m_lstctlTable.SetItemState(i, INDEXTOSTATEIMAGEMASK(n), LVIS_STATEIMAGEMASK);
// i是列表项的索引,n是第几个位图
然后添加反射消息
好象叫MeasureItem吧最后也是最麻烦的了 要重载DrawItem 自己用GDI 还要自己算好格子 一个一个画建议使用第2种方法
{
lpMeasureItemStruct->itemHeight = m_nItemHeight; (m_nItemHeight即你想要的高度)
}void CXXXListCtrl::SetItemHeight()
{ CRect rcWin; GetWindowRect(&rcWin); WINDOWPOS wp; wp.hwnd = m_hWnd; wp.cx = rcWin.Width(); wp.cy = rcWin.Height(); wp.flags = SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOZORDER; SendMessage(WM_WINDOWPOSCHANGED, 0, (LPARAM)&wp);
}ListCtrl创建后, 如果收到WM_WINDOWPOSCHANGED消息, 它会调用计算行高的函数MeasureItem(...), 你在这个函数里面设定行高即可;
{
lpMeasureItemStruct->itemHeight = m_nItemHeight; (m_nItemHeight即你想要的高度)
}void CXXXListCtrl::SetItemHeight()
{ CRect rcWin; GetWindowRect(&rcWin); WINDOWPOS wp; wp.hwnd = m_hWnd; wp.cx = rcWin.Width(); wp.cy = rcWin.Height(); wp.flags = SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOZORDER; SendMessage(WM_WINDOWPOSCHANGED, 0, (LPARAM)&wp);
}ListCtrl创建后, 如果收到WM_WINDOWPOSCHANGED消息, 它会调用计算行高的函数MeasureItem(...), 你在这个函数里面设定行高即可;
=================我也是这种思路,
暂时没有成功,
还在继续试验