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

  • 相关阅读:
    在MonoTouch中自定义表格 狼人:
    Android开发进阶:如何读写Android文件 狼人:
    Windows Phone 7 开发之:工具栏 狼人:
    Android平台Qt开发入门教程 狼人:
    PySide中的信号和槽 狼人:
    sql server 2005 通过代理定时备份数据库
    Java I/O流操作(三)File文件操作及打印流和序列流合并流
    分别介绍以下数据提供者连接各种数据库的方法 (vb.net)
    OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波
    软件架构设计之Utility模块——string
  • 原文地址:https://www.cnblogs.com/huangjacky/p/1627898.html
Copyright © 2011-2022 走看看