zoukankan      html  css  js  c++  java
  • 实现拖动无标题窗口的5种方法

    1。MouseMove事件中加入:
    //  ReleaseCapture;
    //  Perform(WM_SYSCOMMAND, $F017, 0);
     
    2.MouseDown事件中加入:
    //  POSTMESSAGE(Self.Handle,WM_LBUTTONUP,0,0);
    //  POSTMESSAGE(Self.Handle,274,61458,0);
     
    3.MouseDown事件中加入:
    //  ReleaseCapture;
    //  Perform(WM_SYSCOMMAND, $F012, 0);
     
    4.截获WM_NCHITTEST消息
    procedure WMNCHITTEST(var Msg:TWMNCHITTEST);message WM_NCHITTEST;
     
    procedure TForm1.WMNCHITTEST(var Msg: TWMNCHITTEST);
    begin
      inherited;
      //Msg.Result:=HTCaption;
    end;
     
    5.
      private
        procedure AppMessage(var Msg:TMsg;var Handled:Boolean);
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Application.OnMessage:=AppMessage;
    end;
     
    procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
    begin
      //(GetKeyState(vk_CONTROL) < 0)
     if (Msg.message=WM_LButtonDown) and
                     (DefWindowProc(Handle,WM_NCHitTest,
                     0,GetMessagePos)=HTClient) and
                     (True) then
      begin
        SendMessage(Handle,WM_NCLButtonDown,
        HTCaption,GetMessagePos);
        //发送鼠标在标题栏内按下的消息
       Handled:=true;
      end;
    end;

     在MousDown事件中写
      ReleaseCapture;//释放鼠标控制区域
      SendMessage(Handle,WM_SYSCOMMAND,SC_MOVE+HTCaption,0);//发送移动标题栏消息
    如,要在Panel上可以移动窗口
    procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      ReleaseCapture;
      SendMessage(Handle,WM_SYSCOMMAND,SC_MOVE+HTCaption,0);
    end;

  • 相关阅读:
    BZOJ1029:[JSOI2007]建筑抢修(贪心,堆)
    1054. [HAOI2008]移动玩具【BFS】
    1297. [SCOI2009]迷路【矩阵乘法】
    1192. [HNOI2006]鬼谷子的钱袋【进制】
    2243. [SDOI2011]染色【树链剖分】
    1051. [HAOI2006]受欢迎的牛【强连通分量】
    codevs 2074 营救 WW
    codevs 1191 数轴染色
    codevs 2855 游乐园的迷宫 bfs
    codevs 2806 红与黑
  • 原文地址:https://www.cnblogs.com/94YY/p/2043488.html
Copyright © 2011-2022 走看看