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函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- .NET Core系列之MemoryCache 初识
- 007手机一键Root(安机网一键Root) v3.0 官方最新版 一键ROOT您的Android手机
- 12306密码被盗了怎么办?12306密码外泄解决方法
- 12个字的qq网名
- 150M迷你型无线路由器怎么设置?
- 192.168.1.1打不开怎么办?路由器192.168.1.1打不开的原因以及解决办法
- 2011年电子报合订本 电子报 编辑部 中文 PDF版 [84M]
- 2015年1月15日小米新旗舰发布会现场图文直播
- 2016.3.1vivo Xplay5新品发布会现场视频直播 优酷直播
- 2016华为P9发布会视频直播地址 4月15日华为P9国行发布会直播