我正在自定义Win32 ListView控件,我想删除在调整标题大小时自动绘制的垂直线。我在谈论行区域中绘制的线而不是标题。可以通过处理 HDN_TRACK 通知并更改通知数据中的cxy值来限制垂直跟踪线,但似乎无法限制或删除行区域中的垂直跟踪线。任何人都有关于如何删除/隐藏/限制该行的任何想法?
上面的截图是在我跟踪标题
时拍摄的答案 0 :(得分:1)
删除该行只会使用户更难使用该控件!
简单方法可能是启用visual styles / comctl32 v6,它似乎使用实时调整大小,但这可能取决于所选主题/风格。
我能够为经典控件提出一个丑陋的黑客攻击:
HWND hLV = CreateWindowEx(WS_EX_CLIENTEDGE, WC_LISTVIEW, NULL, WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL|LVS_REPORT, ...);
SendMessage(hLV, CCM_SETVERSION, 5, 0); // <--- Important
...
case WM_NOTIFY:
{
HWND hLV = ...;
NMHDR&nmh = *(NMHDR*) lparam;
switch(nmh.code)
{
case HDN_BEGINTRACKA:case HDN_BEGINTRACKW:
LockWindowUpdate(hLV); // Block all drawing in the listview
return false;
case HDN_ENDTRACKA:case HDN_ENDTRACKW:
LockWindowUpdate(NULL);
return false;
}
这可能是depend on the HDS_FULLDRAG header style,您可能不希望在启用视觉样式时执行此操作。