检测视窗 8 中的分屏模式



如何在Windows 8中检测分屏模式。我有一个 wim32 桌面应用程序(用 MFC 编写),我需要在分屏模式下提供一些功能仅供参考 - 在分屏模式下,桌面和地铁模式并排

从您的评论中,您获得屏幕尺寸的原因是因为这就是您的要求。 将SM_CXSCREENSM_CYSCREEN传递给GetSystemMetrics()将返回主显示器的宽度和高度,顾名思义。

有许多解决方案,

每种解决方案都有其优点和缺点,其中最简单的可能是:

RECT rcDesktop;
BOOL ok = GetWindowRect(GetDesktopWindow(), &rcDesktop);

这将返回主监视器的桌面窗口的大小。 如果您只想要"可用"区域(考虑到任务栏):

RECT rc;
BOOL ok = SystemParametersInfo(SPI_GETWORKAREA, 0, &rc, 0);

如果将新式 UI 应用停靠在屏幕一侧,则两者都应返回所需的内容,具体取决于是否要用程序覆盖任务栏。

请注意,这些示例将仅返回多显示器系统上主监视器的信息。 通过执行以下操作,可以获取有关特定监视器(如当前窗口所在的监视器)的信息:

MONITORINFO mon_info;
mon_info.cbSize = sizeof(MONITORINFO);
BOOL ok = GetMonitorInfo(MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST), &mon_info);

MONITORINFO结构包含所请求监视器的大小(和位置 - 不要假设它是 0,0),包括工作区:

警告:我不在我的Windows8系统上,所以我无法检查所有这些是否会返回正确的信息,但理论上检查工作区应该做你想要的,除非你特别希望你的程序是全屏的。

最新更新