2024年3月29日发(作者:)

MFC Button控件自绘制----详细讲解

VC下的界面着实难看 有时候我们不得不自己进行控件的绘制 以前 一直不理解最近

再次看了学了一遍终于明白了一点

与大家分享下... 需要源代码的Q我 寻找一起学VC的朋友

比如说

我们要改变一个编辑框的背景 我们响应WM_CTLCOLOR函数 进行OnCtlColor进

行修改但是对与 Button控件就不行了 ..

这时候我们要进行自绘制 相关函数 virtual void

DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );

要覆盖掉这个虚函数 并且类型要设置为 BS_OWNERDRAW 这时候 放 应用程序

进行初始化界面的时候 会进入我们的

DrawItem函数 进行控件的绘制 所以说 自绘制 就2个步骤

ASSERT 宏

Evaluate an expression and generate a debug report when the result is FALSE

(debug version only).

计算表达是当结果是false的时候生成调试报告 (仅仅在debug下 )

1. 类型要设置为 BS_OWNERDRAW

2.重写 virtual void DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );函

数 代码就我们自己设计了

重绘需要的函数 注意 都是SDK中的函数

BOOL DrawFrameControl( //这个函数画一个指定类型控件的框架

HDC hdc, // handle to device context DC

LPRECT lprc, // bounding rectangle 举行区域

UINT uType, // frame-control type 类型

UINT uState // frame-control state 状态 具体看MSDN

);

int DrawText( //在指定的矩形区域 输出文本

HDC hDC, // handle to DC

LPCTSTR lpString, // text to draw