坎坷WTL行(二)重绘CListViewCtrl之二

在上一篇博客中介绍了CListViewCtrl的重绘,但发现无法去除网格线。通过查找资料,找到了一种巧妙的方法:复制竖线右侧像素至左侧实现效果。文章详细讲述了实现过程,包括响应Print消息的代码,并解决了链接错误LNK1000的问题。通过调整链接器设置和C/C++的调试信息格式,成功解决警告。虽未能安装KB948127补丁,但从补丁中提取link.exe文件解决了问题。资源链接已提供。
摘要由CSDN通过智能技术生成

上一篇提完了重绘了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
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值