Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在窗口后预览屏幕状态的Aero功能是什么?_C_Windows_Aero - Fatal编程技术网

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

C 在窗口后预览屏幕状态的Aero功能是什么?,c,windows,aero,C,Windows,Aero,我到处寻找,看看如何在我的程序中使用Aero。我找不到任何可以在自己的窗口后面预览窗口的C函数,就像文件浏览器或任何主流浏览器在标题栏上所做的那样 有些程序只是通过添加一个看起来像Windows 7标题栏的图像来伪装它——没有空气——但我认为这是作弊。我在下面的链接中找到了此代码: [DllImport ("dwmapi.dll" Entry Point = "# 113", SetLastError = true)] internal static external DwmpActivat

我到处寻找,看看如何在我的程序中使用Aero。我找不到任何可以在自己的窗口后面预览窗口的C函数,就像文件浏览器或任何主流浏览器在标题栏上所做的那样

有些程序只是通过添加一个看起来像Windows 7标题栏的图像来伪装它——没有空气——但我认为这是作弊。我在下面的链接中找到了此代码:

[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的实现是否自动与
PreviewWindow(或其他)功能一起运行

我迷路了

是荷兰语的,只需通过谷歌翻译就可以了


我不会尝试切换Aero Peek和/或Flip是否已激活,也不会在鼠标悬停在任务栏图标上时更改应用程序的图标。我正在寻找一个函数,它将应用程序的当前屏幕状态置于我自己的屏幕状态之后,并将其作为图像返回,以便在我的应用程序中显示。作为奖励,(大概)返回的图像是模糊的,还是单独应用的效果?我想它的名字是Aero Glass。

我迷路了,这是一个很大的领域,可以看到你不明白的地方,但我还是会试试

如果表示您不知道参数在中的作用:

[DllImport ("dwmapi.dll" Entry Point = "# 113", SetLastError = true)] 
internal static external DwmpActivateLivePreview uint (uint a, IntPtr b, uint c, uint d); 
基本上是这样的:

internal static extern uint DwmpActivateLivePreview(uint active, IntPtr handle, IntPtr onTopHandle, uint d);
  • a:是激活Aero Peek的参数
  • 把手也是AeroPeek聚焦的吗
  • c:这是个棘手的问题。如果将窗口句柄传递给该参数,并且设置了最顶端的属性,则该属性将显示在AeroPeek的顶部
  • d:我不知道d是做什么的,但我用DWMPActivatePreview的时候总是把它放在1上
所以签名是这样的:

internal static extern uint DwmpActivateLivePreview(uint active, IntPtr handle, IntPtr onTopHandle, uint d);
DwmpStartOrStopFlip3D方法激活“Windows+选项卡”效果

但请记住,它们没有文档化是有原因的,因为它们不是我们要使用的

如果您想在应用程序中实现Aero Peek效果,可以查看位于DWM中的DwmSetIconicLivePreviewBitmap函数


此处的更多信息:

据我所知,您希望获得应用程序后面的窗口的状态(显示)。您可以通过执行以下操作来实现:

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向应用程序请求预览位图时,该处理程序将返回位图


为了简洁起见,留下了“MaBabItMMADC”的细节。

我仍然在想为什么这一切在C++中都是很好的,但是我不能让我的生命在C++中工作(通过<代码> LoadLibrary < /代码>和<代码> GeCopTeals< /Cord>)。你指的是当你将鼠标移到缩略图预览上以及在窗口之间按住Alt+Tab键时返回的图像吗?@BoltClock否,我想我要找的更准确的名称是Aero Glass.Ah。Aero Peek是指当您在所有打开的窗口后面显示桌面时,这些图像都是窗口预览。窗框的模糊部分确实是Aero Glass,但我不知道是否有函数返回窗口玻璃区域所覆盖的区域…是的,未记录的函数非常适合玩,但请不要在任何其他地方使用它们。Windows有大量死板和/或无用的代码,因为他们需要让人们的应用程序在他们不听的时候继续运行。不。在非aero模式下,GetWindowDC将返回一些虚拟DC,这些虚拟DC基本上是指该窗口占用的屏幕部分。这意味着,如果窗口1位于顶部,而窗口2位于其下方的同一XY位置,则两个窗口的GetWindowDC将返回一个内容相同的DC,即窗口1的内容。