首页 > 解决方案 > 如何保持win32窗口始终在顶部并允许在其下方的窗口中单击

问题描述

我正在 Unity 中进行培训计划,用户将在其中执行任务。这个想法是让他们打开一个带有方向的 Internet Explorer 窗口,让他们在将其移动到一边(而不是最小化它)并在 Unity 中继续单击时将其保持在顶部。他们将只有 1 个屏幕,因此不能将其移动到屏幕 2。

在 Unity 中单击的问题使另一个窗口隐藏。

提前致谢,

标签: unity3dwinapi

解决方案


看来您需要将 IE 窗口设置为最顶部和半透明。

但请注意,允许点击 IE 下方的窗口意味着您无法通过鼠标或键盘与 IE 进行交互。

// Get IE's main HWND as ieWnd, then

LONG_PTR exStyle = GetWindowLongPtr(ieWnd, GWL_EXSTYLE);
SetWindowLongPtr(ieWnd, GWL_EXSTYLE, exStyle | WS_EX_TOPMOST | WS_EX_LAYERED | WS_EX_TRANSPARENT);
SetLayeredWindowAttributes(ieWnd, 0, 127, LWA_ALPHA);
SetWindowPos(ieWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);

推荐阅读