Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.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++ 如何拦截;“显示桌面”;事件_C++_Windows_Winapi_User Interface - Fatal编程技术网

C++ 如何拦截;“显示桌面”;事件

C++ 如何拦截;“显示桌面”;事件,c++,windows,winapi,user-interface,C++,Windows,Winapi,User Interface,我正在寻找一种截取ShowDesktop事件并将窗口设置在最前面的方法。 有没有一种不用API钩子的方法? 谢谢 Omer.如果您正在编写Windows任务栏样式的dock,那么只需确保您的窗口已设置了WS\u EX\u最顶层的,并且“Show Desktop”将不使用它。或者使用SetWindowPos使其成为创建后最顶部的窗口,例如: SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE); 更新:您需要使用

我正在寻找一种截取ShowDesktop事件并将窗口设置在最前面的方法。 有没有一种不用API钩子的方法? 谢谢
Omer.

如果您正在编写Windows任务栏样式的dock,那么只需确保您的窗口已设置了
WS\u EX\u最顶层的
,并且“Show Desktop”将不使用它。或者使用
SetWindowPos
使其成为创建后最顶部的窗口,例如:

SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE); 
更新:您需要使用Windows应用程序栏API来制作“dock”风格的应用程序。有关更多详细信息,请参阅

还需要从Alt+Tab等时显示的顶级列表中删除应用程序栏,这可以通过添加
WS\u EX\u工具窗口
和删除
WS\u EX\u应用程序窗口
来完成


我应该在早些时候说清楚,抱歉。

如果您正在编写Windows任务栏样式的dock,那么只需确保您的窗口设置了
WS\u EX\u top
,而“Show Desktop”(显示桌面)就可以了。或者使用
SetWindowPos
使其成为创建后最顶部的窗口,例如:

SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE); 
更新:您需要使用Windows应用程序栏API来制作“dock”风格的应用程序。有关更多详细信息,请参阅

还需要从Alt+Tab等时显示的顶级列表中删除应用程序栏,这可以通过添加
WS\u EX\u工具窗口
和删除
WS\u EX\u应用程序窗口
来完成



我应该早点说清楚,抱歉。

请不要这样做。你不拥有电脑,你程序的用户拥有。如果他们不想看你的节目,那是他们的选择。我希望不是。你为什么要这样做?听起来是个非常糟糕的主意。如果用户运行了两个这样的程序呢?雷蒙德和往常一样,拥有最强大的力量!我正在编写一个dock,因此,必须始终在桌面上显示它。请不要这样做。你不拥有电脑,你程序的用户拥有。如果他们不想看你的节目,那是他们的选择。我希望不是。你为什么要这样做?听起来是个非常糟糕的主意。如果用户运行了两个这样的程序呢?雷蒙德和往常一样,拥有最强大的力量!我正在编写一个dock,因此,必须始终在桌面上显示它。适用于使用Windows AppBar API的任务栏样式的应用程序。我从空的Win32项目开始。不知道为什么不起作用。我真的很奇怪,它现在起作用了,但以前对我不起作用(它总是在顶部,除非我单击“切换桌面”按钮,然后它就消失了),可能是因为某种样式\ex样式组合造成的。无论如何,非常感谢!顺便说一句,我不想使用AppBar API,因为我不想保留任何屏幕空间。我的问题是,我想创建一个桌面替换,因此我的应用程序是最底层而不是最顶层-您是否有任何提示/想法来解决这个问题?适用于我的使用Windows AppBar API的任务栏样式的应用程序。我从空的Win32项目开始。不知道为什么不起作用。我真的很奇怪,它现在起作用了,但以前对我不起作用(它总是在顶部,除非我单击“切换桌面”按钮,然后它就消失了),可能是因为某种样式\ex样式组合造成的。无论如何,非常感谢!哦,顺便说一句,我不想使用AppBar API,因为我不想保留任何屏幕空间。我的问题是,我想创建一个桌面替换,因此我的应用程序是最底层的,而不是最顶层的-你可能有什么提示/想法来解决这个问题吗?