当然无法出现了,你已经接管了鼠标事件要是用  sendmessage(handle, wm_command, $f012);或许会好些

解决方案 »

  1.   

    用这个方法是欺骗系统,让系统认为点击区域是标题栏,但是这样做会使form上不能接受焦点的控件也变的麻烦。如果有speedbutton之类的,那么不仅骗了系统也骗了自己,单击无效的。
    而至于popupmenu就更容易解释了,系统认为你点击的是标题栏,当然不会弹出菜单了~~至于解决办法,我没有试过,不过你可以直接发送弹出菜单的消息给窗体。
    最好先拦截一下这个消息,不然也很难处理的。
    祝好运,另解决了的话也要写出来啊~~~~~
      

  2.   

    在窗体的OnMouseDown事件中
    Perform(WM_SysCommand, $F012, 0);
      

  3.   

    就这样。
    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      ReleaseCapture;
      Perform(WM_SYSCOMMAND, $F012, 0);
    end;
      

  4.   

    不处理WM_HitTest,而是处理WM_LBUTTONDOWN;
    示例代码:const 
      SC_DRAGMOVE = $F012;         // 未归档消息。procedure WMLButtonDown(var Msg: TWMLButtonDown); message WM_LBUTTONDOWN;procedure TForm1.WMLButtonDown(var Msg: TWMLButtonDown);
    begin
      if (MK_CONTROL + MK_LBUTTON) = Msg.Keys then
      begin
        SendMessage(Handle, WM_SYSCOMMAND, $F012, 0)
      end
      else
      begin
        inherited;
      end;//if
    end;这个过程是当你按下CTRL键,再按下鼠标左键并拖动,就可以拖动窗体了。