CListCtrl 列表框如何隐藏选中的一行,或者把选中的行的高度设置为0也一样,不要说DeleteItem();就是不想删除。。因为删除选中的行,之后的行的行号都会有变化,那么我不想删除行之下的行号有变化所以想设置高度为0。可以参考迅雷下载的取消下载按钮。取消某一行不下载了,但是后续的其他的文件也可以下载
因为我把行号和线程号绑定一起了,所以不希望删除某行后,其他的行号有所变化
谢谢提出意见 CFont m_ListFont;
m_ListFont.CreateFont(4, 0, 0, 0, FW_THIN, 0, 0, 0, ANSI_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, _T("ËÎÌå"));
m_ListCtrl.SetFont(&m_ListFont); 这段代码虽然可以设置行号的高度,但是设置的是每一行的高度,我只要设置我所选中行的高度就可以了
因为我把行号和线程号绑定一起了,所以不希望删除某行后,其他的行号有所变化
谢谢提出意见 CFont m_ListFont;
m_ListFont.CreateFont(4, 0, 0, 0, FW_THIN, 0, 0, 0, ANSI_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, _T("ËÎÌå"));
m_ListCtrl.SetFont(&m_ListFont); 这段代码虽然可以设置行号的高度,但是设置的是每一行的高度,我只要设置我所选中行的高度就可以了
SetItem
都可以设置指定列表项的属性
有点像这样的?
POSITION SelectedItemPos = m_list.GetFirstSelectedItemPosition();
while (SelectedItemPos){
iIndex = m_list.GetNextSelectedItem(SelectedItemPos);
m_list.SetItemState(iIndex, 0, LVIS_SELECTED|LVIS_FOCUSED);
}
{
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(...), 你在这个函数里面设定行高即可; http://www.codeproject.com有更详细的说明;
我试试了,我把你的代码添加到我的mfc对话框程序里面去了,然后在按钮1里面调用SetItemHeight();
但是行高没有改变啊。。
自绘也只能改变所有行的行高。因为我把行号和线程号绑定一起了...Setitemdata,把数据与线程号绑定更好,这样就可以通过删除Item来实现隐藏了。用其他的表格控件更好 MFCGridCtrl等就可以实现功能需求了,改变单行高度,隐藏选定行等等
重写 MeasureItem()
你非要用。
那就想个变通的方法。
要不实现自己的CMyListCtrl.