gpt4 book ai didi

c++ - 如何将我的窗口投影为前台的事件窗口

转载 作者:可可西里 更新时间:2023-11-01 10:28:46 26 4
gpt4 key购买 nike

打开了一些窗口,在我的流程中,我想再启动一个窗口(高优先级),用户必须在其中输入凭据。我想把这个凭据窗口放在前台,反过来它可能会给用户带来很好的体验,因为他不需要手动选择凭据窗口。这是一次性启动,绝对不烦人,但用户必须输入信用。

实现此目标的最佳方法是什么?我不认为模拟鼠标点击是个好主意。有没有办法将消息发送到其余窗口以使其失去焦点?这样当我启动我的窗口时,它就会出现在前台。

最佳答案

这对我有用,无需使用 SetWindowPos 使窗口“始终在最前面”:

HWND foreGround = GetForegroundWindow();
if (foreGround != m_hWnd)
{
if (!::SetForegroundWindow(m_hWnd))
{
if (!foreGround)
{
foreGround = FindWindow(_T("Shell_TrayWnd"), NULL);
}

DWORD idForeground = GetWindowThreadProcessId(foreGround, NULL);
DWORD idTarget = GetWindowThreadProcessId(m_hWnd, NULL);

AttachThreadInput(idForeground, idTarget, TRUE);

::SetForegroundWindow(m_hWnd);

AttachThreadInput(idForeground, idTarget, FALSE);
}

BringWindowToTop();
}

我在聊天应用程序中使用它,因此新的聊天消息可以转移焦点(显然是可选的,因为有些用户不喜欢这样。)

关于c++ - 如何将我的窗口投影为前台的事件窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5814524/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com