CListControl 两个小疑点
CListControl 两个小问题
问题一:插入一列,且使得该列占满整个控件,请问如何插入才可以达到这个要求,注意,控件有滚动条;
问题二:我是动态创建该控件的,我需要有滚动条,仅仅希望该滚动条出现在控件右边,但是控件底部也出现了滚动条,这是不希望的。请问如何才可以去掉底部的滚动条,或者在创建过程中,需要什么属性。
假如您知道其中任何一个问题的答案,希望不吝赐教,谢谢!!!
------解决方案--------------------
RECT rcList;
GetWindowRect(hListCtrl, &rcList);
LVCOLUMN* lpLVColumn = new LVCOLUMN;
memset(lpLVColumn, 0, sizeof(LVCOLUMN));
lpLVColumn->mask = LVCF_TEXT
------解决方案--------------------
LVCF_FMT
------解决方案--------------------
LVCF_WIDTH;
lpLVColumn->fmt = LVCFMT_LEFT;
lpLVColumn->cx = rcList.right - rcList.left;
lpLVColumn->pszText = _T("Column1");
ListView_InsertColumn(hListCtrl, 0, lpLVColumn);
------解决方案--------------------
插入列后设置一下自动列宽。
SetColumnWidth(index, LVSCW_AUTOSIZE_USEHEADER);
------解决方案--------------------
第二个问题用下面两个函数试试。
InitializeFlatSB
FlatSB_EnableScrollBar
------解决方案--------------------
1. 创建 Listview 控件(MFC:CListCtrl),并设置样式 LVS_NOCOLUMNHEADER(无列头),插入一空列。
2. 当通过 WM_NOTIFY 消息收到 LVN_INSERTITEM 通知时,获取客户区大小(GetClientRect),获取滚动条宽度(GetSystemMetrics(SM_CXVSCROOL)),设置第一页 Column(也只有这一个)的宽度为客户区宽度减去滚动条宽度即可。
3. 当收到 WM_SIZE 消息的时候,设置宽度,操作同上。
------解决方案--------------------
http://msdn.microsoft.com/en-us/library/windows/desktop/bb775443(v=vs.85).aspx
------解决方案--------------------
上面说错了,不用减去滚动条宽度,那个获取的客户区大小就是除去滚动条的。
问题一:插入一列,且使得该列占满整个控件,请问如何插入才可以达到这个要求,注意,控件有滚动条;
问题二:我是动态创建该控件的,我需要有滚动条,仅仅希望该滚动条出现在控件右边,但是控件底部也出现了滚动条,这是不希望的。请问如何才可以去掉底部的滚动条,或者在创建过程中,需要什么属性。
假如您知道其中任何一个问题的答案,希望不吝赐教,谢谢!!!
------解决方案--------------------
RECT rcList;
GetWindowRect(hListCtrl, &rcList);
LVCOLUMN* lpLVColumn = new LVCOLUMN;
memset(lpLVColumn, 0, sizeof(LVCOLUMN));
lpLVColumn->mask = LVCF_TEXT
------解决方案--------------------
LVCF_FMT
------解决方案--------------------
LVCF_WIDTH;
lpLVColumn->fmt = LVCFMT_LEFT;
lpLVColumn->cx = rcList.right - rcList.left;
lpLVColumn->pszText = _T("Column1");
ListView_InsertColumn(hListCtrl, 0, lpLVColumn);
------解决方案--------------------
插入列后设置一下自动列宽。
SetColumnWidth(index, LVSCW_AUTOSIZE_USEHEADER);
------解决方案--------------------
第二个问题用下面两个函数试试。
InitializeFlatSB
FlatSB_EnableScrollBar
------解决方案--------------------
1. 创建 Listview 控件(MFC:CListCtrl),并设置样式 LVS_NOCOLUMNHEADER(无列头),插入一空列。
2. 当通过 WM_NOTIFY 消息收到 LVN_INSERTITEM 通知时,获取客户区大小(GetClientRect),获取滚动条宽度(GetSystemMetrics(SM_CXVSCROOL)),设置第一页 Column(也只有这一个)的宽度为客户区宽度减去滚动条宽度即可。
3. 当收到 WM_SIZE 消息的时候,设置宽度,操作同上。
------解决方案--------------------
http://msdn.microsoft.com/en-us/library/windows/desktop/bb775443(v=vs.85).aspx
------解决方案--------------------
上面说错了,不用减去滚动条宽度,那个获取的客户区大小就是除去滚动条的。