您的位置:首页 > 其它

有关美化界面消息之间的关系

2012-11-03 00:33 162 查看
参考文章:白乔原创:VC之美化界面篇
1.WM_PAINT与WM_ERASEBKGND消息的关系
由Win32的知识可知,在WM_PAINT的消息处理函数中,绘制之前首先需要调用BeginPaint。BeginPaint函数会发送WM_ERASEBKGND消息(SendMessage),即直接调用消息处理函数来处理WM_ERASEBKGND消息。DefWindowProc默认处理WM_ERASEBKGND是用窗口注册的画刷刷客户区,即背景。
Note:
当然通过调用InvalidateRect(代码产生WM_PAINT消息)
BOOL InvalidateRect(
HWND hWnd,           // handle to window
CONST RECT* lpRect,  // rectangle coordinates
BOOL bErase          // erase state);
来产生WM_PAINT消息,可以通过指定bErase为FALSE,则不会在BeginPaint中发送WM_ERASEBKGND消息。

2.我总结的大体各美化界面消息间的流程如下:
WM_PAINT
{
WM_ERASEBKGND  //刷背景
{
WM_CTLCOLOR  //获取刷背景的画刷,不响应该消息则默认为窗口注册的画刷
{
......
}
...刷背景...
}

WM_CTLCOLOR  //设置有关Text的相关特性,如字体、前景色、背景色等...
{
......
}

//具体开始绘制
{
......

//绘制某具体项1
{
NM_CUSTOMDRAW  //由程序员客制部分属性
{
}
具体绘制(未开放)
}

......

//绘制某具体项2
{
NM_CUSTOMDRAW  //由程序员客制部分属性
{
}
具体绘制(未开放)
}

......
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐