1. 为什么我用canvas在窗体上画的线条或其他图形,在我最小化再还原的时候就没有了?
2. 我写的消息好像都是属于窗体的(比如:TForm1.WM_MOUSEMOVE(...)),只有在窗体中移动鼠标时该消息才被拦截,但是在该窗体中的控件(比如:dbgrid1)中移动鼠标消息不能被拦截。请问我怎么才能拦截窗体中控件的消息?

解决方案 »

  1.   

    1.画的代码写在OnPaint里面2.TWinControl继承下来的控件都可以通过重载WndProc来拦截消息
      

  2.   

    一楼的都说的很清楚啊
     写在OnPaint里面
      

  3.   

    有些控件是没有ONMOUSEMOVE事件,要不挂个鼠标钩子,不过好象更麻烦
    setwindowshookex(参数1,钩子回掉函数,hiinstance,0);
    参数1:我忘记应该是哪个了,你看一下DELPHI帮助找鼠标键盘钩子。
    钩子回掉函数:就是你鼠标移动时候要响应的事件,在事件里用条件控制一下使鼠标只有在窗体范围之内移动时候才能执行你要执行的代码。
      

  4.   

    除了TWinControl继承下来的控件都可以通过重载WndProc来拦截消息外,你也可以使用
    APPLICATION。ONMESSAGE:=自己定义的处理过程,详细语法可看帮助APPLICATION。ONMESSAGE
      

  5.   

    那Application.OnMessage是使用的呢?在什么地方使用?