(vs2008-VC++)为何使用了"SetExtendedStyle()"方法后,列表控件第1列会变成黑色?
先看图:
一个基于对话框应用程序
- C/C++ code
// 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列就全变成了黑色..
如果把这条删去的话,就没有黑色,但是我无法选择一行了!....
怎么回事,如何解决???????
[解决办法]
m_CListCtrl.SetExtendedStyle( m_CListCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT);
[解决办法]
- C/C++ code
DWORD dwStyle = CListCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT;CListCtrl.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, dwStyle, dwStyle);