C# SetWindowPos函数实例详解

  在C#中,SetWindowPos函数用于设置窗口的位置和大小。

  原型:

  [DllImport("user32.dll", SetLastError = true)]

  [return: MarshalAs(UnmanagedType.Bool)]

  public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);

  参数说明:

  示例用法:

  1、改变窗口大小:

  using System;

  using System.Runtime.InteropServices;

  // 定义常量和方法签名

  public class Win32

  {

  [DllImport("user32.dll")]

  public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);

  public static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);

  public const uint SWP_SHOWWINDOW = 0x40;

  }

  // 获取窗口句柄并调用 SetWindowPos 函数改变窗口大小

  IntPtr hWnd = // 窗口句柄

  int newX = // 新的 X 坐标

  int newY = // 新的 Y 坐标

  int newWidth = // 新的宽度

  int newHeight = // 新的高度

  Win32.SetWindowPos(hWnd, Win32.HWND_TOPMOST, newX, newY, newWidth, newHeight, Win32.SWP_SHOWWINDOW);

  其中窗口句柄可以使用FindWindow函数获取窗口句柄(后面同),如:

  [DllImport("user32.dll", SetLastError = true)]

  public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

  IntPtr hWnd = Win32.FindWindow(null, "窗口标题"); // 替换为窗口的类名或标题

  2、移动到屏幕的左上角:

  using System;

  using System.Runtime.InteropServices;

  // 定义常量和方法签名

  public class Win32

  {

  public const int SWP_NOSIZE = 0x0001;

  public const int SWP_NOMOVE = 0x0002;

  public const int SWP_NOZORDER = 0x0004;

  public const int SWP_SHOWWINDOW = 0x0040;

  [DllImport("user32.dll", SetLastError = true)]

  [return: MarshalAs(UnmanagedType.Bool)]

  public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);

  }

  // 在代码中调用 SetWindowPos 函数将窗口移动到屏幕左上角

  IntPtr hWnd = // 窗口句柄

  Win32.SetWindowPos(hWnd, IntPtr.Zero, 0, 0, 0, 0, Win32.SWP_NOSIZE | Win32.SWP_SHOWWINDOW);

  3、使其成为Topmost窗口并移动到屏幕的左上角:

  using System;

  using System.Runtime.InteropServices;

  // 定义常量和方法签名

  public class Win32

  {

  public const int SWP_NOSIZE = 0x0001;

  public const int SWP_NOMOVE = 0x0002;

  public const int SWP_NOZORDER = 0x0004;

  public const int SWP_SHOWWINDOW = 0x0040;

  public const int HWND_TOPMOST = -1;

  public const int HWND_NOTOPMOST = -2;

  [DllImport("user32.dll", SetLastError = true)]

  [return: MarshalAs(UnmanagedType.Bool)]

  public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);

  }

  // 在代码中调用 SetWindowPos 函数将窗口移动到屏幕左上角并设置为Topmost

  IntPtr hWnd = // 窗口句柄

  Win32.SetWindowPos(hWnd, Win32.HWND_TOPMOST, 0, 0, 0, 0, Win32.SWP_NOSIZE | Win32.SWP_SHOWWINDOW);

  4、显示窗口:

  using System;

  using System.Runtime.InteropServices;

  // 定义常量和方法签名

  public class Win32

  {

  public const int SW_SHOWNORMAL = 1;

  [DllImport("user32.dll")]

  public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

  }

  // 获取窗口句柄并调用 ShowWindow 函数显示窗口

  IntPtr hWnd = // 窗口句柄

  Win32.ShowWindow(hWnd, Win32.SW_SHOWNORMAL);

  5、隐藏窗口:

  using System;

  using System.Runtime.InteropServices;

  // 定义常量和方法签名

  public class Win32

  {

  public const int SW_HIDE = 0;

  [DllImport("user32.dll")]

  public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

  }

  // 获取窗口句柄并调用 ShowWindow 函数隐藏窗口

  IntPtr hWnd = // 窗口句柄

  Win32.ShowWindow(hWnd, Win32.SW_HIDE);

  到此这篇关于C# SetWindowPos函数的文章就介绍到这了,更多相关C# SetWindowPos函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

  您可能感兴趣的文章: