J
jimi_chen
Unregistered / Unconfirmed
GUEST, unregistred user!
1.众所周知,Invalidate会发送WM_PAINT消息
2.通过查看VCL源码Buttons.pas发现,TBitBtn中使用Invalidate会发送CN_DRAWITEM消息
3.另外由于源码中:
procedure TBitBtn.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do Style := Style or BS_OWNERDRAW;//告诉系统本window由自己负责绘制
end;
所以才会有CN_DRAWITEM消息
----------------------------------
那位能详细讲述一下消息WM_PAINT, CN_DRAWITEM, Invalidate之间的关系?
还有何时应该使用Invalidate,何时应该使用Repaint?
2.通过查看VCL源码Buttons.pas发现,TBitBtn中使用Invalidate会发送CN_DRAWITEM消息
3.另外由于源码中:
procedure TBitBtn.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do Style := Style or BS_OWNERDRAW;//告诉系统本window由自己负责绘制
end;
所以才会有CN_DRAWITEM消息
----------------------------------
那位能详细讲述一下消息WM_PAINT, CN_DRAWITEM, Invalidate之间的关系?
还有何时应该使用Invalidate,何时应该使用Repaint?