作一个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空间,如果用混了出现的效果就会比较奇怪。
最后感慨一下在网上传播的东西真是很多错误。