懵懵灯灯的BLOG

寒夜孤灯点点星

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  56 随笔 :: 10 文章 :: 22 评论 :: 0 Trackbacks

作一个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空间,如果用混了出现的效果就会比较奇怪。

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

posted on 2007-12-09 23:44 懵懵灯灯 阅读(6609) 评论(0)  编辑  收藏 所属分类: MFC

只有注册用户登录后才能发表评论。


网站导航: