试试onmousedown和onmouseup 吧!

解决方案 »

  1.   

    重载WM_NCHITTEST消息procedure TMainFrm.WMNCHITTEST(var Msg :TMessage);
    begin
         Inherited ;
         if Msg.Result = HTCAPTION then //点击标题
           ...        
    end;
      

  2.   

    HTCAPTION 好像不是点击标题
    触发不了。
      

  3.   

    WM_NCHITTEST好像是窗体标题事件,但我怎么判断点击后鼠标放开的状态
    如:
    procedure TMainFrm.WMNCHITTEST(var Msg :TMessage);
    begin
         Inherited ;
         if Msg.Result = ? then //这应该写什么,鼠标拖动后放开的结果
           ...        
    end;
    help me?
      

  4.   

    1,应该用 WM_NCLBUTTONDOWN or WM_NCRBUTTONDOWN 来捕获非客户区的鼠标点击事件,并根据消息的nHittest参数来判断是否在标题栏(HTCAPTION);2,拖动窗体过程中Windows向窗体发送WM_WINDOWPOSCHANGING消息
       在释放了左键后Windows会向窗体发送消息:WM_WINDOWPOSCHANGED