C# Form 设置窗口显示层级、置顶、置底
(2017-04-12 15:21:30)分类: C# |
1
SetParent
设置父层面板,即将当期窗口显示在某个窗口之上
[DllImport("user32.dll")]
2
SetWindowPos窗口置顶使用说明
SetWindowPos函数改变一个子窗口,弹出式窗口或顶层窗口的尺寸,位置和Z序。子窗口,弹出式窗口,及顶层窗口根据它们在屏幕上出现的顺序排序、顶层窗口设置的级别最高,并且被设置为Z序的第一个窗口。
2.1
函数原型
WINUSERAPIBOOL WINAPI SetWindowPos(HWND hWnd,HWND hWndInsertAfter,intX,int Y,int cx,_In_ int cy, UINT uFlags);
如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误消息,请调用GetLastError函数。
2.2
函数参数
hwnd
在z序中的位于被置位的窗口前的窗口句柄。该参数必须为一个窗口句柄
hWndlnsertAfter
用于标识在z-顺序的此 CWnd 对象之前的 CWnd 对象。如果uFlags参数中设置了SWP_NOZORDER标记则本参数将被忽略。可为下列值之一:
·
·
·
·
查看该参数的使用方法,请看说明部分。
x
以客户坐标指定窗口新位置的左边界。
Y
以客户坐标指定窗口新位置的顶边界。
cx
以像素指定窗口的新的宽度。
cy
以像素指定窗口的新的高度。
uFlags
窗口尺寸和定位的标志。该参数可以是下列值的组合:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
2.3
示例
[DllImport("user32.dll", CharSet =
CharSet.Auto)]
private static extern int SetWindowPos(IntPtr hWnd, int
hWndInsertAfter, int x, int y, int Width, int Height, int
flags);
///
/// 得到当前活动的窗口
///
///
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern System.IntPtr
GetForegroundWindow();
//弹出新窗体,并置顶
Form2 frm = new Form2();
frm.Show();
SetWindowPos(GetForegroundWindow(), -1, 0, 0, 0, 0, 1 |
2);