上一篇提完了重绘了CListViewCtrl,后来我想不需要网格线,结果发现一个问题,如果加双缓冲之后,不管怎么样都会有网格线,在网上又找了好久,发现一篇可以重改网络线颜色的日志,于是想到一个有意思的方法。复制竖线右侧一个像素的到左侧,完成效果。
原样式:
修改后样式:
响应Print消息,代码如下:
LRESULT CMdListViewCtrl::OnPaint(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
TODO: 在此添加消息处理程序代码和/或调用默认值
DefWindowProc();
// Draw the lines only for LVS_REPORT mode
if( (GetStyle() & LVS_TYPEMASK) == LVS_REPORT )
{
// Get the number of columns
CClientDC dc(this->m_hWnd);
RECT rect;
//this->GetClientRect(&rect);
//dc.FillRect(&rect,RGB(255,255,255));
int nColumnCount = m_headerCtrl.GetItemCount();
// The bottom of the header corresponds to the top of the line
//RECT rect;
m_headerCtrl.GetClientRect( &rect );
int top = rect.bottom;
// Now get the client rect so we know the line length and
// when to stop
GetClientRect( &rect );
// The border of the column is offset by the horz scroll
int borderx = 0 - GetScrollP