c - 预览窗口后屏幕状态的 Aero 功能是什么?

标签 c windows aero

我到处查看如何在我的程序中使用 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(或其他) 函数一起运行?

我迷路了。

This link是荷兰语,只需通过谷歌翻译运行即可

我不会尝试切换 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/

相关文章:

c - 修改整数数组中的整数

c - 全局和局部变量的内存分配

c++ - QThread 拥有的 QWidget 的消息循环

c++ - 文件属性对话框中的自定义选项卡

Delphi:在 Vista 和 aero 中以标题形式绘制文本,如 Windows 7

android - OpenCV undefined reference

windows - 您如何测试窗口(按标题)是否已从命令提示符打开?

c# - 模糊半透明形式的背景(如 Aero 玻璃)

c++ - QT半透明窗口和远程桌面

c - 两个 TCP/IP 套接字 send() 请求实际上在一个 TCP 消息中处理