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