mfc ListControl 重绘网格线
.h文件
//网格线设置 [yal 2013.10.08]
int m_nGridStyle; //风格 PS_DASH,PS_SOLID,。。。
COLORREF m_GridColor; //颜色
int m_nGridWeigth; //粗度1,2,...
void setGridStyle(int nStyle);
void setGridWeight(int nWeight);
void setGridColor(COLORREF cr);
.cpp文件
CListCtrlCl::CListCtrlCl()
:m_nGridStyle(PS_SOLID)
,m_nGridWeigth(1)
,m_GridColor(RGB(255,255,255))
{
}
void CListCtrlCl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: 添加您的代码以绘制指定项
// 重绘网格线 [7/12/2013 dell]
const MSG *msg = GetCurrentMessage();
DefWindowProc( msg->message, msg->wParam, msg->lParam );
// Draw the lines only for LVS_REPORT mode
if( (GetStyle() & LVS_TYPEMASK) == LVS_REPORT )
{
// Get the number of columns
CClientDC dc(this );
//yal 2013.10.08画有颜色的线
CPen pen(m_nGridStyle,m_nGridWeigth,m_GridColor);
CPen* oldpen=dc.SelectObject(&pen);
CHeaderCtrl* pHeader = (CHeaderCtrl*)GetDlgItem(0);
int nColumnCount = pHeader->GetItemCount();
// The bottom of the header corresponds to the top of the line
RECT rect, rectCol;
pHeader->GetClientRect( &rect );
int top = rect.bottom;
// Now get the client rect so we know the line length and
// when to stop
GetClientRect( &rect );
if( !GetItemRect( 1, &rectCol, LVIR_BOUNDS ))
return;
int height1 = rectCol.bottom - rectCol.top;
// The border of the column is offset by the horz scroll
int borderx = 0 - GetScrollPos( SB_HORZ );
for( int i = 0; i < nColumnCount; i++ )
{
// Get the next border
borderx += GetColumnWidth( i );
// if next border is outside client area, break out
if( borderx >= rect.right ) break;
// Draw the line.
dc.MoveTo( borderx-1, top/*top*/);
dc.LineTo( borderx-1, height1+top+lpDrawItemStruct->itemID*height1/*nColumnCount*height1 + top*/);
}
// Draw the horizontal grid lines
// First get the height
if( !GetItemRect( 0, &rect, LVIR_BOUNDS ))
return;
int height = rect.bottom - rect.top;
GetClientRect( &rect );
int width = rect.right;
for(unsigned int i = 1; i <= lpDrawItemStruct->itemID+1; i++ )
{
dc.MoveTo( 0, top + height*i);
dc.LineTo( width, top + height*i );
}
dc.SelectObject(oldpen);
}
}
mfc ListControl 重绘网格线相关推荐
- VC的MFC中重绘函数的使用总结(整理)
原文网址:http://www.cnblogs.com/x8023z/archive/2008/12/09/mfc33.html 在刷新窗口时经常要调用重绘函数 MFC提供了三个函数用于窗口重绘 In ...
- MFC 之 重绘按键Cbutton
上次我们学习了如何美化对话框的界面,这次我们为上次的对话框添加两个按钮,一个是关闭按钮,另一个是最小化按钮,好,现在我们先看一下效果: 是不是很难看,因为我们的对话框美化了,所以我们的按钮也要美化,因 ...
- MFC多视图与重绘效率
MFC多视图与重绘效率 多窗口同步更新 CDocument::UpdateAllViews(CView* pSender,LPARAM lHint,CObject* pHint):通知所有与CDocu ...
- 28、深入浅出MFC学习笔记,View功能的加强和重绘效率的提高
1.同一份Document的多个views,在Document的一个view改变了后,如何同步其它view呢? 让所有的Views 同步更新资料的关键在于两个函数: 1)CDocument::Upda ...
- 孙鑫-MFC笔记六--绘图,重绘
Windows颜色对话框功能的添加: MFC提供了CColorDialog类,方便创建颜色对话框. CColorDialog dlg: dlg.DoModal(); 默认为黑色.即首参为值为0. 保存 ...
- MFC进度条重绘 (CProgressCtrl)
MFC进度条(CProgressCtrl) 重绘 先看一张图: 新建一个 继承自 CProgressCtrl 的类,然后添加 OnPaint 消息处理函数,此函数代码如下: void CNewProg ...
- 解决MFC 的 CButton改变样式问题,使用重绘方式。(转载)
要想修改CButton类按钮背景颜色和文字颜色,必须利用自绘方法对按钮进行重新绘制.这可以通过定义一个以CButton为基类的新按钮类来实现.以下为具体的实现方法: 方法一: 加入一个新类,类名:CM ...
- MFC-CListCtrl重绘,添加按钮到单元格
原文链接 MFC Listctrl 不支持单元格颜色设置,以及单击其中某一单元格时高亮显示,要想达成自己的目的,就只能对其重绘. 关于单元格中按钮的添加,说一下思路,首先要重写CButton类,将其单 ...
- vc++图像保存,重绘
新建mfc应用程序,单文档 增加绘图 分别增加命令响应 添加成员变量UINIT 图形可以运行,如何保存呢?(一个集合类,CPtArt) 用一个类的对象来保存一个图形的三个要素 所以插入一个新的类(通常 ...
最新文章
- jenkins docker 安装_docker 安装 Jenkins
- iOS UICollectionView的实现
- jvm性能调优实战 -60 线上系统的JVM参数优化、GC问题定位排查、OOM分析解决
- 关于错误的那点事——惨不忍睹的错误
- Qt5使用windeployqt后 exe文件还是无法执行 无法定位程序输入点 _ZdaPvj 于动态链接库 libstdc++-6.dll
- 类如何调用自己的私有成员_企业如何快速获取自己的私有领域流量?
- 【Kafka】docker下kafka报错 IOException: Connection to xxx:19093 (id: 1002 rack: null) failed
- hihocoder第212周-动态规划
- 从零学ELK系列(一):为什么要跟我学从零学ELK系列
- SpringBoot AOP 理解和用途
- 人工智能生物学深度解析,附源代码
- 生动形象!一个故事讲完CPU的工作原理
- 激光雷达互动交互大屏全息互动投影Tuio多点触摸检测驱动引擎
- java pdf 水印_java 如何给pdf文件加水印
- yunos6 是android几,成功脱离安卓?阿里首款国产操作系统YunOS6或将发布!
- 空间分辨率、频谱分辨率、辐射计量分辨率、时间分辨率。
- DirectDraw关于blt的一些注意事项
- android 寺库trytry_美图与寺库达成战略合作 美图美妆将由 TryTry 运营
- 华为最新款手机2021款鸿蒙,华为最新款手机2021款_华为2021即将上市新款手机
- R语言数据分析、展现与实例(06)