24小时热门版块排行榜    

查看: 241  |  回复: 0

shongwuei

新虫 (初入文坛)

[求助] 列表控件Create()动态创建,不能选中行,表头颜色也不能改变?

列表控件Create()动态创建,不能选中行,表头颜色也不能改变?如果从工具箱加列表控件,效果就很好,为什么?
    我想动态添加List Control, 根据需要动态设置控件的大小,但遇到下面的问题,请指点!
我在论坛里下载了“VC+CListCtr列表控件特效”的控件,类名位,CListCtrlCL,感觉挺好的,我通过
DWORD dwExStyle=GetWindowLong(m_hWnd, GWL_EXSTYLE);   
        SetWindowLong(m_hWnd, GWL_EXSTYLE, dwExStyle|0x80000);
        SetWindowLong(m_hWnd,GWL_EXSTYLE,WS_EX_LAYERED);
        SetLayeredWindowAttributes(RGB(156,135,216),100,LWA_ALPHA);
把对话框设置成半透明,然后在对话框中添加了列表控件,并添加了对应的CListCtrlCL变量listTagets,
m_listTagets.SetColColor(0,RGB(10,150,20)); //设置列背景色
        m_listTagets.SetColColor(2,RGB(30,100,90)); //设置列背景色
        m_listTagets.SetBkColor(RGB(50,10,10));        //设置背景色
        m_listTagets.SetItemColor(1,1,RGB(100,100,10)); //设置指定单元背景色
        m_listTagets.SetRowHeigt(25);               //设置行高度
        m_listTagets.SetHeaderHeight(1.5);          //设置头部高度
        m_listTagets.SetHeaderFontHW(16,0);         //设置头部字体高度,和宽度,0表示缺省,自适应
        m_listTagets.SetHeaderTextColor(RGB(255,200,100)); //设置头部字体颜色
        m_listTagets.SetTextColor(RGB(0,255,255));  //设置文本颜色
        m_listTagets.SetHeaderBKColor(100,255,100,8); //设置头部背景色
        m_listTagets.SetFontHW(15,0);               //设置字体高度,和宽度,0表示缺省宽度
        m_listTagets.SetColTextColor(2,RGB(255,255,100)); //设置列文本颜色
        m_listTagets.SetItemTextColor(3,1,RGB(255,0,0));  //设置单元格字体颜色

        m_listTagets.InsertColumn(0,_T("名字" ),LVCFMT_CENTER,55);
        m_listTagets.InsertColumn(1,_T("身高" ),LVCFMT_CENTER,60);
        m_listTagets.InsertColumn(2,_T("体重" ),LVCFMT_CENTER,60);
        m_listTagets.InsertColumn(3,_T("测量时间" ),LVCFMT_CENTER,180);

        m_listTagets.InsertItem(0,"张三" );
        m_listTagets.SetItemText(0,1,"178CM" );
        m_listTagets.SetItemText(0,2,"70KG" );
        m_listTagets.SetItemText(0,3,"2009年1月15日23时40分" );

        m_listTagets.InsertItem(1,"王五" );
        m_listTagets.SetItemText(1,1,"178cm" );
        m_listTagets.SetItemText(1,2,"70kg" );
        m_listTagets.SetItemText(1,3,"2009年1月15日23时40分" );

        m_listTagets.InsertItem(2,"阿花" );
        m_listTagets.SetItemText(2,1,"168cm" );
        m_listTagets.SetItemText(2,2,"60kg" );
        m_listTagets.SetItemText(2,3,"2009年1月15日23时40分" );

        SetWindowLong(m_listTagets.m_hWnd ,GWL_EXSTYLE,WS_EX_CLIENTEDGE);
        m_listTagets.SetExtendedStyle(LVS_EX_GRIDLINES);                     //设置扩展风格为网格
        ::SendMessage(m_listTagets.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,
                LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
运行后能看到表头、背景、单元格、各列的颜色都是上面设置的值。
但是通过Create函数动态创建的CListCtrlCL变量,
m_listTagets.Create(
                WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT|LVS_EDITLABELS|LVS_ALIGNLEFT,
                CRect(0,0,m_nDialogWidth,m_nDialogHeight), this, IDC_TARGETS_LIST);
然后加上上面添加数据的代码,结果出现的列表里字都是黑色的,并且不能选中整行,单个单元格也不能选中,水平滚动条也不能拖动。
    通过加LVS_SHOWSELALWAYS和LVS_OWNERDRAWFIXED样式后,水平滚动条可以拖动了,除表头后的文字都可以彩色,背景也是指定的颜色,可表头(第一行)还是黑色的,并且不能选中整行,单个单元格也不能选中。

   请问这个表头的字体颜色为什么都没有成为指定的颜色?添加了FULLROWSELECT,为什么不能选中整行?[ Last edited by jjdg on 2013-1-23 at 13:01 ]
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : VC+CListCtr列表控件特效.7z
  • 2013-01-23 00:38:37, 37.66 K

» 猜你喜欢

shongwuei
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 shongwuei 的主题更新
信息提示
请填处理意见