[MFC] CListCtrl的LVS_EX_FULLROWSELECT风格

[MFC] CListCtrl的LVS_EX_FULLROWSELECT风格

作一个CFormView,其中增加一个CListCtrl控件,想把这个控件的style设置为整行高亮显示。
在网上误传的方法为:

1  void  CMyView::OnInitialUpdate()
2  {
3       // INIT the control
4      CFormView::OnInitialUpdate();
5 
6      CListCtrl  *  list = static_cast < CListCtrl *>  (GetDlgItem(IDC_LIST));
7      list -> ModifyStyleEx( 0 ,LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
8      


其中ModifyStyle 或者 ModifyStyleEx 都是修改的CWnd中的扩展属性,而正解为:

1  void  CMyView::OnInitialUpdate()
2  {
3      CFormView::OnInitialUpdate();
4 
5      CListCtrl  *  list = static_cast < CListCtrl *>  (GetDlgItem(IDC_LIST));
6      DWORD   dwStyle    =    list -> GetExtendedStyle();   
7      dwStyle    |=    LVS_EX_FULLROWSELECT    |    LVS_EX_GRIDLINES; 
8      list -> SetExtendedStyle(dwStyle);   

另外两个函数也容易引起误解:
CWnd::getExStyle
CListCtrl::getExtendedStyle
这两个函数所得到的style不在同一个style空间,如果用混了出现的效果就会比较奇怪。

最后感慨一下在网上传播的东西真是很多错误。

你可能感兴趣的:([MFC] CListCtrl的LVS_EX_FULLROWSELECT风格)