我到处都看过如何在程序中使用Aero。我找不到在您自己的窗口后面进行预览的任何C函数,例如文件资源管理器或任何主流浏览器的标题栏。

有些程序通过添加一个类似于Windows 7标题栏的图像(没有Aero)来伪造它,但我认为这是一种作弊行为。我在下面的链接中找到了此代码:

[DllImport ("dwmapi.dll" Entry Point = "# 113", SetLastError = true)]

internal static external DwmpActivateLivePreview uint (uint a, IntPtr b, uint c, uint d);

[DllImport ("dwmapi.dll" Entry Point = "# 105", SetLastError = true)]

internal static bool external DwmpStartOrStopFlip3D ();

// Activate Aero peek into the desired Handle
DwmpActivateLivePreview (1, Handle, 0, 1);

// Disable Aero peek
DwmpActivateLivePreview (0, Handle, 0, 1);

// start or stop the Aero Flip 3D
DwmpStartOrStopFlip3D ();

但是不知道这意味着什么。 Aero Peek的实现是否与PreviewWindows(or whatever)函数一起自动运行?

我迷路了。

This link是荷兰语,只需通过Google翻译运行

当鼠标悬停在其任务栏图标上时,我不会尝试切换是否激活Aero Peek和/或Flip,也不会更改应用程序的图标。相反,我正在寻找一个功能,该功能将应用程序的当前屏幕状态置于我自己的背后,并将其作为图像显示在应用程序中。另外,(大概)返回的图像会变得模糊吗,还是单独应用了该效果?我认为它的名字叫Aero Glass。

最佳答案

据我了解,您想获取应用程序背后的窗口状态(以显示方式)。您可以通过执行以下操作来实现,

HWND hwnd_behind = GetNextWindow(your_window_handle, GW_HWNDNEXT);

HDC hdc = GetWindowDC(hwnd_behind);

RECT rect;
GetWindowRect(hwnd_behind,rect);

HDC bitmap = MakeABitMapDC();

StretchBlt(bitmap,0,0,dW,dH,hdc,0,0,rect.width,rect.height,SRCCOPY);

您可以将此代码插入处理程序,当Windows要求应用程序提供预览位图时,该处理程序将返回位图。

为了简洁起见,保留了诸如“MakeABitMapDC”之类的细节。

关于c - 预览窗口后面的屏幕状态的Aero功能是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12719137/

10-12 21:26