我发现通过继承TWinControl的类,有二种重绘界面的方法:
1、编写消息函数
Procedure WMPaint(var Msg:TWMPaint);Message WM_PAINT;
消息程序可达到自动刷新界面。
2、覆盖TWinControl的DefaultHandle子程序也可达到此目的。我相请问高手,它们有什么不同?有什么值得注意的?

解决方案 »

  1.   

    楼上的兄台:WMPaint函数没有调用Repaint,因为我曾经重写过Repaint子程序,但它没有响应WM_PAINT消息.
    应该是Repaint子程序触发WM_PAINT消息.请大家回答标题的问题与内容的问题.
      

  2.   

    效果应该是一样的。
    DefaultHandle的功能类似于WndProc,原本是用来处理WndProc中不能处理的消息。
    WM_Paint是由DefaultHandle处理并传递给WndProc然后才是WM_Paint。
    控件的基本绘制应该是在父类的WM_Paint中进行的。至于在WM_Paint中调用repaint还是什么其它的就是具体绘制的事儿了。