如何获得 鼠标在莫个窗体上的 移入和移出 事件 , 不管该窗体是否是激活的

解决方案 »

  1.   

    procedure CMMouseenter(var Message: TMessage); message CM_MOUSEENTER;
        procedure CMMouseleave(var Message: TMessage); message CM_MOUSELEAVE;
      

  2.   

    暂时没想到好方法,变通了一下,你先看看。
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Timer1: TTimer;
        Panel1: TPanel;
        procedure Timer1Timer(Sender: TObject);
      private
      protected
        
        { Private declarations }
      public
        { Public declarations }  end;var
      Form1: TForm1;implementationuses Unit2, Math;{$R *.dfm}procedure TForm1.Timer1Timer(Sender: TObject);
    var H:HWND;
    begin
        H:=WindowFromPoint(Mouse.CursorPos);
        if (H<>Handle) and ( not IsChild(Handle,H))then
        begin
           caption:='Mouse Leave';
        end
        else
        begin
           caption:='Mouse Enter';
        end;
        Application.ProcessMessages;
    end;end.
      

  3.   

    用定时器感觉不好warmworm(warmworm) : SetCapture 何意?