zoukankan      html  css  js  c++  java
  • Delphi 我的代码之窗体移动

    技术交流,DH讲解.

    这个工具是好早好早以前写的,我这个喜欢在家边看电影边写写代码或者看电子书,所以经常会将网页移到屏幕的左上角或者右上角,而且要置顶.所以就写了这样一个工具,这个工具主要是对句柄的操作,还有就是窗体样式以及几个API的例子,比较基础.

    整个文件在 here(Can't Input Chinese:()

    下面把代码贴出来,希望有什么不懂的,结合MSDN,OK?

    Var
      Form2: TForm2;
      H: Cardinal = 0;
    
    Implementation
    
    {$R *.dfm}
    
    //------------------------------------------------------------------------------
    // 取得鼠标所在处窗体的句柄
    //------------------------------------------------------------------------------
    
    Procedure TForm2.BtnGetHandleClick(Sender: TObject);
    Var
      Pt: TPoint;
    Begin
      If GetCursorPos(Pt) Then
        H := WindowFromPoint(Pt)
      Else
        H := 0;
    End;
    
    //------------------------------------------------------------------------------
    // 将窗体置顶
    //------------------------------------------------------------------------------
    
    Procedure TForm2.BtnTopMostClick(Sender: TObject);
    Var
      Rc: TRect;
    Begin
      If H = 0 Then
        Exit;
      If GetWindowRect(H, Rc) Then
        SetWindowPos(H, HWND_TOPMOST, Rc.Left, Rc.Top, Rc.Right - Rc.Left,
          Rc.Bottom - Rc.Top, SWP_SHOWWINDOW)
    End;
    
    //------------------------------------------------------------------------------
    // 去掉窗体的边框
    //------------------------------------------------------------------------------
    
    Procedure TForm2.BtnNoBorderClick(Sender: TObject);
    Var
      WsStyle: Cardinal;
    Begin
      If H = 0 Then
        Exit;
      WsStyle := GetWindowLong(H, GWL_STYLE);
      WsStyle := WsStyle And (Not WS_BORDER) And (Not WS_CAPTION);
      SetWindowLong(H, GWL_STYLE, WsStyle);
    End;
    
    //------------------------------------------------------------------------------
    // 移动窗体
    //------------------------------------------------------------------------------
    
    Procedure TForm2.BtnMoveClick(Sender: TObject);
    Var
      Dx, Dy: Integer;
      Rc: TRect;
    Begin
      If H = 0 Then
        Exit;
      Dx := StrToIntDef(TxtDx.Text, 0);
      Dy := StrToIntDef(TxtDy.Text, 0);
      If GetWindowRect(H, Rc) Then
        MoveWindow(H, Rc.Left + Dx, Rc.Top + Dy, Rc.Right - Rc.Left,
          Rc.Bottom - Rc.Top, True)
    End;

    代码很简单,have fun.

    我是DH,今天就说这么多.

  • 相关阅读:
    LeetCode(274)H-Index
    LeetCode(279)Perfect Squares
    LeetCode(278)First Bad Version
    LeetCode(289)Game of Life
    LeetCode(292) Nim Game
    LeetCode(282) Peeking Iterator
    解决Secure Shell Client(SSH)客户端中文乱码的方法
    Mysql 或者当前时间戳
    java http请求url报错505,但是浏览器可以正常返回json数据
    查询直播流实时帧率和码率 签名
  • 原文地址:https://www.cnblogs.com/huangjacky/p/1627898.html
Copyright © 2011-2022 走看看