您好,欢迎来到易妖游戏网。
搜索
您的当前位置:首页在OnKillFocus中运用相关函数实现强制置顶

在OnKillFocus中运用相关函数实现强制置顶

来源:易妖游戏网

突发奇想,想要制作一个类似于windows开机密码的界面,可以实现开机自启并在其中输入密码时实现自己想要的炫酷效果

既然是开机密码,肯定不能让人不输密码就随意进入。除了设置了开机自启要输入密码才会关掉程序去掉标题栏全屏化,并且用了低级钩子屏蔽了系统按键,还实现了自己想要的开机时的动画效果,但是还有一个问题,就是程序必须要强制置顶

如果不强制置顶首先会因为各种原因失去焦点,用任务管理器也可以关掉程序,本来想简单的用SetWindowPos,HWND_TOPMOST实现,但是这样虽然也会一直置顶没办法切出去,但是总是会失去焦点,而且要是有其他一样是用HWND_TOPMOST的程序,还是可能被覆盖

于是查阅了解到通过

SetForegroundWindow(m_hWnd);//函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口
SetFocus(m_hWnd);//将键盘焦点设置为指定窗口

即可重新获取焦点
为了能够最先获得消息,通过

AttachThreadInput(GetWindowThreadProcessId(::GetForegroundWindow(), NULL), GetCurrentThreadId(), TRUE);
//这个函数中将当前应用程序中的当前线程连接到最前端的窗口中,使得输入的消息会最先本分发到当前的线程中。
AttachThreadInput(GetWindowThreadProcessId(::GetForegroundWindow(), NULL), GetCurrentThreadId(), FALSE);

即可优先获得焦点
然后就是函数使用的时机,本来经过查阅了解WM_ACTVITE消息会发给激活与非活的窗口,wParam对应WA_I

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- vipyiyao.com 版权所有 湘ICP备2023022495号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务