如何使用Windows API创建一个窗口总是位于屏幕最上方

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Windows API创建一个窗口总是位于屏幕最上方相关的知识,希望对你有一定的参考价值。

创建置顶窗口: CreateWindowEx( WS_EX_TOPMOST, ......
如果在创建窗口以后,置顶 ::SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE)
取消置顶
::SetWindowPos(hwnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE)
用AAuto写个示范:

import win.ui;
/*DSG*/
var winform = win.form(
text="置顶窗口测试";
right=449;
bottom=203
)
winform.add(
checkbox=
cls="checkbox";
text="置顶此窗口";
left=109;
top=92;
right=352;
bottom=126;
z=1

)
/**/

winform.checkbox.oncommand = function(id,event)
win.setTopmost(
winform.hwnd,
winform.checkbox.checked
)


winform.show()
win.loopMessage();
参考技术A MFC:
创建一个置顶的窗口,在窗口的OnInitDialog()方法中添加
::SetWindowPos(this->m_hWnd,HWND_NOTOPMOST,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE); //先取消置顶
::SetWindowPos(this->m_hWnd,HWND_TOPMOST,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);//再置顶
设置其他窗口置顶,把this换成那个窗口的窗口句柄就行了

如何在应用程序窗口外设置光标位置? (C ++)

我正在使用C ++创建一个应用程序来设置光标位置,即使鼠标离开应用程序窗口... Win32库具有SetCursorPos功能,根据文档

只有当光标位于窗口的客户区域时,窗口才会移动光标

但是我想把光标移到窗外:即使窗口隐藏了...... 我希望它更像是一个鼠标驱动程序:Windows从中读取光标位置......

答案

似乎虽然文档说:

只有当光标位于窗口的客户区域时,窗口才会移动光标

即使窗口是HIDDEN,它也可以控制鼠标

以上是关于如何使用Windows API创建一个窗口总是位于屏幕最上方的主要内容,如果未能解决你的问题,请参考以下文章

Windows API 教程 hook 钩子监听

如何始终保持窗口可见,但不强制它位于顶部

如何使表单始终位于任务栏顶部

Windows API编程(不是MFC)用CreateWindowEx创建的按钮等子窗口控件是默认的Windows经典样式,如何改变?

如何在应用程序窗口外设置光标位置? (C ++)

c 语言用win32sdk方式如何创建一个没有标题栏和边框的窗口