[英]Set a window to be topmost
我试图将我的 window 放在所有其他人之上。 我是 C++ Win32 编程的新手。 这是我在WinMain
中对 window 的初始化:
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
我以前使用过对话框,所以最上面的属性真的很容易使用。 但是在这里,在 window 上,我不知道如何设置它。 我也希望能够触发它。 有谁能够帮我?
SetWindowPos(hwnd01, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
注意: SWP_NOMOVE | SWP_NOSIZE
SWP_NOMOVE | SWP_NOSIZE
用于忽略SetWindowPos
函数的第SetWindowPos
个参数。
第二个参数可以是:
HWND_BOTTOM
HWND_NOTOPMOST
(设置窗口为普通窗口)
HWND_TOP
HWND_TOPMOST
(设置窗口总是在顶部)
将CreateWindowEx
与(扩展的)窗口样式WS_EX_TOPMOST
。
免责声明:我接触这些东西大约有 15 年了。
请参阅SetWindowPos 、 hWndInsertAfter
参数。 通过HWND_TOPMOST
应该做你想做的。
此外,您可能希望通过SWP_NOMOVE | SWP_NOSIZE
SWP_NOMOVE | SWP_NOSIZE
到uFlags
参数,如果你想保持位置和大小不变。
SWP_NOMOVE 保留当前位置(忽略 X 和 Y 参数)。 SWP_NOSIZE 保留当前大小(忽略 cx 和 cy 参数)。 如果你不设置这些标志,你应该指定位置和大小而不是传递 0, 0, 0, 0
我做了一些我有点不同的事情发现它更容易
所以首先在表单加载
private void Form1_Load(object sender, EventArgs e)
{
this.Shown += new EventHandler(Form1_Shown);//let your form show up here
}
private void Form1_Shown(Object sender, EventArgs e)
{
Form1.ActiveForm.TopMost = true //and then do your TopMost logic
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.