用 SPY++ 试了一下,非常失望啊。我在做自动提示的编辑器,窗体挪动的时候提示不挪动。

解决方案 »

  1.   

    不,因为它实际上并没有移动,只是所在窗体发生了移动而已。SetBounds 亦未发生。
      

  2.   

    控件接受不到任何消息。控件是不会接受到Wm_move消息的,这个消息是发到主窗口中的,也就是说Edit中并没有消息。它的位置相对它父窗口是没有变化的,只有它相对于父窗口位置变化时才会接受到消息。你要接受消息只有在主窗体move事件中插入代码。
      

  3.   

    派生一个 TForm,例如 TMyForm,之后要求将窗体改为 TMyForm 类型?像 DelphiX 那样?
      

  4.   

    是这样,一个窗口,上面放一个控件 Memo 例如。之后,为 Memo 显示一个 THintWindow。该提示窗口的位置和 Memo 是挂钩的。但当 Memo 所在的窗口移动时,这种联系就破灭了。为了维持 HintWindow 长期的追踪 Memo,需要知道 Memo 被移动的消息。以上。
      

  5.   

    既然你会挂钩,那你在创建主窗口的那个线程上设置一个挂钩GetMessage,判断是不是有Wm_move,如果有,联系就破灭。
    或者不知道这个方法不知道行不行:在你为你主窗体TForm1添加一个事件
    Procedure xx(var Message: TMessage);message Wm_move;
    在这个过程里面,让那个联系破灭。