CListCtrl為我們提供了SetExtendedStyle函式可以添加CListCtrl的很多擴展屬性,這里強調一點LVS_EX_CHECKBOXES會導致ON_WM_MEASUREITEM_REFLECT訊息反射不被接收,LVS_EX_GRIDLINES會造成節點矩形不準確,所以,我們需要多載屏蔽這些屬性
DWORD CSkinListCtrl::SetExtendedStyle( DWORD dwNewStyle )
{
if ( dwNewStyle & LVS_EX_CHECKBOXES )
{
dwNewStyle &=~LVS_EX_CHECKBOXES;
dwNewStyle &=~LVS_EX_GRIDLINES;
}
return __super::SetExtendedStyle(dwNewStyle);
}
我搞不明白什么叫多載、屏蔽屬性,請高手指點一下。
uj5u.com熱心網友回復:
就是 把 屬性 去掉dwNewStyle &=~LVS_EX_CHECKBOXES;// 去除
dwNewStyle &=~LVS_EX_GRIDLINES;
uj5u.com熱心網友回復:
那if ( dwNewStyle & LVS_EX_CHECKBOXES )這句跟下面兩句dwNewStyle &=~LVS_EX_CHECKBOXES;// 去除
dwNewStyle &=~LVS_EX_GRIDLINES;
是什么關系,請指教。
uj5u.com熱心網友回復:
建議你先學習下 C語言的 & | ~ && || ! 等的運算子的基本知識
uj5u.com熱心網友回復:
#define LVS_EX_GRIDLINES 0x00000001#define LVS_EX_SUBITEMIMAGES 0x00000002
#define LVS_EX_CHECKBOXES 0x00000004
#define LVS_EX_TRACKSELECT 0x00000008
#define LVS_EX_HEADERDRAGDROP 0x00000010
#define LVS_EX_FULLROWSELECT 0x00000020 // applies to report mode only
#define LVS_EX_ONECLICKACTIVATE 0x00000040
#define LVS_EX_TWOCLICKACTIVATE 0x00000080
#if (_WIN32_IE >= 0x0400)
#define LVS_EX_FLATSB 0x00000100
#define LVS_EX_REGIONAL 0x00000200
#define LVS_EX_INFOTIP 0x00000400 // listview does InfoTips for you
#define LVS_EX_UNDERLINEHOT 0x00000800
#define LVS_EX_UNDERLINECOLD 0x00001000
#define LVS_EX_MULTIWORKAREAS 0x00002000
#endif
注意 每位 表示 一個。所以
dwNewStyle |= LVS_EX_CHECKBOXES;// 是加
dwNewStyle &=~LVS_EX_CHECKBOXES;// 是減
uj5u.com熱心網友回復:
位操作~~~~~轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/75392.html
標籤:基礎類
上一篇:求教怎么后臺向視窗發送訊息
