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,今天就说这么多.

  • 相关阅读:
    第五章:数组 结构体 和联合体
    第四章:用户自定义和枚举数据类型
    第三章:systemverilog文本值和数据类型
    阶段一:读几本经济学书
    第二章:systemverilog声明的位置
    数据结构-B树
    UDP的崛起
    vim使用
    sudo apt-get update
    计算机组成原理——浮点数表示方法
  • 原文地址:https://www.cnblogs.com/huangjacky/p/1627898.html
Copyright © 2011-2022 走看看