(vs2008-VC++)为何使用了"SetExtendedStyle()"方法后,列表控件第1列会变成黑色?

时间:2022-01-18 00:54:10
先看图:
(vs2008-VC++)为何使用了"SetExtendedStyle()"方法后,列表控件第1列会变成黑色?

一个基于对话框应用程序

// CDemoDlg 消息处理程序

BOOL CDemoDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// 按钮“增加记录”初始化为不可用
GetDlgItem (IDC_ADD)->EnableWindow(FALSE);

// 编辑框初始化为不可编辑
CEdit_Noon.EnableWindow(FALSE);
CEdit_Night.EnableWindow(FALSE);
CEdit_Allf.EnableWindow(FALSE);
CEdit_Ally.EnableWindow(FALSE);

// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
//  执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标

// TODO: 在此添加额外的初始化代码

m_CListCtrl.SetBkColor(CLR_NONE);
m_CListCtrl.SetTextBkColor(CLR_NONE);

// 列表控件风格设置
m_CListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);    // ============ 这个语句 ============

m_CListCtrl.InsertColumn(0, _T("日期"), LVCFMT_CENTER, 100);  // 添加第1列,标题名称为:日期
m_CListCtrl.InsertColumn(1, _T("星期"), LVCFMT_CENTER, 60); // 添加第2列
m_CListCtrl.InsertColumn(2, _T("中午(份)"), LVCFMT_CENTER, 90); // 添加第3列
m_CListCtrl.InsertColumn(3, _T("晚上(份)"), LVCFMT_CENTER, 90); // 添加第4列
m_CListCtrl.InsertColumn(4, _T("当日总计(份)"), LVCFMT_CENTER, 90); // 添加第5列
m_CListCtrl.InsertColumn(5, _T("当日薪酬(元)"), LVCFMT_CENTER, 90); // 添加第6列

CRect rect;
GetWindowRect(&rect);

// 设置图片按钮 --------------
MyBitmapButton.LoadBitmaps(IDB_OPENDB_U, IDB_OPENDB_D, IDB_OPENDB_U, IDB_OPENDB_X);
MyBitmapButton.SubclassDlgItem(IDC_READALL, this);
MyBitmapButton.SizeToContent();

// SetTimer(1, 100, NULL);

return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}



使用了:m_CListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT); 语句后,运行程序,第1列就全变成了黑色..
如果把这条删去的话,就没有黑色,但是我无法选择一行了!....

怎么回事,如何解决???????

6 个解决方案

#1


 m_CListCtrl.SetExtendedStyle( m_CListCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT);    

#2


引用 1 楼 feilinhe 的回复:
m_CListCtrl.SetExtendedStyle( m_CListCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT);   


还是不行哦

#3


DWORD dwStyle = CListCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT;
CListCtrl.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, dwStyle, dwStyle);

#4


引用 3 楼 vctiro 的回复:
C/C++ codeDWORD dwStyle= CListCtrl.GetExtendedStyle()| LVS_EX_FULLROWSELECT;
CListCtrl.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, dwStyle, dwStyle);


还是不行

#5


m_ListCtrl.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_ONECLICKACTIVATE);
这样就可以了,我就是这样做的

#6


请问楼主你的问题最后如何解决,我按照大师们说的测了下,还是全黑呀?如何解决急急急!!!!谢谢!

#1


 m_CListCtrl.SetExtendedStyle( m_CListCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT);    

#2


引用 1 楼 feilinhe 的回复:
m_CListCtrl.SetExtendedStyle( m_CListCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT);   


还是不行哦

#3


DWORD dwStyle = CListCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT;
CListCtrl.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, dwStyle, dwStyle);

#4


引用 3 楼 vctiro 的回复:
C/C++ codeDWORD dwStyle= CListCtrl.GetExtendedStyle()| LVS_EX_FULLROWSELECT;
CListCtrl.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, dwStyle, dwStyle);


还是不行

#5


m_ListCtrl.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_ONECLICKACTIVATE);
这样就可以了,我就是这样做的

#6


请问楼主你的问题最后如何解决,我按照大师们说的测了下,还是全黑呀?如何解决急急急!!!!谢谢!