显示桌面的困惑,不响应“显示桌面”(ToggleDesktop)
需求:
在桌面放一个WS_EX_LAYERED风格的窗口,置底(一直在其他窗口下面),不响应Win+D,始终保持在桌面。
分析:
1、Win+D或者快速启动栏上的“显示桌面”,其实最终调用的是个Shell方法(IShellDispatch4.ToggleDesktop()),而且你的窗口不会收到任何与此相关的消息。
2、调用IShellDispatch4.ToggleDesktop()时,系统会给Desktop(Progman)发送一条消息 DTM_RAISE message (WM_USER + 83) ,用于把桌面置前。
3、IShellDispatch4.ToggleDesktop()还不是简单的窗口置前,我还没有找到对于这个函数的更具体的解释。(谁知道的话,一定要告诉我,谢谢~~~)
不响应“显示桌面”的解决方案:
--方案1--
将窗口设置成WS_EX_TOPMOST风格,或者用SetWindowPos(hWnd, HWND_TOPMOST, ...),都可以做到不响应“显示桌面”。
可惜,我的需求是“置底”,这个方案不适合我。
--方案2--
将窗口设置成桌面ListView的子窗口
HWND hProgman = ::FindWindow(L"Progman", L"Program Manager");
HWND hDefView = FindWindowEx(hProgman, NULL, L"SHELLDLL_DefView", NULL);
HWND hFloderViews = FindWindowEx(hDefView, NULL, L"SysListView32", NULL);
// 用hFloderViews作为CreateWindow时的父窗口就可以达到不响应“显示桌面”的效果
可惜,用这种方法,窗口继承自桌面ListView后会导致无法使用WS_EX_LAYERED窗口风格。
针对我的需求的解决方案:
方案1(可行的方案):
去掉WS_EX_LAYERED风格,把窗口设成桌面ListView的子窗口。这个方案肯定是可以的,但去掉WS_EX_LAYERED就以为着半透明窗口需要自己实现,这个就得多麻烦点。
方案2
修改需求
__THE END__
显示桌面的困惑,不响应“显示桌面”(ToggleDesktop)相关推荐
- 点击 桌面 计算机 空白 不响应,win7桌面空白处右键电脑迟钝怎么办 为什么电脑在桌面点击鼠标右键反应很慢...
win7桌面空白处右键电脑迟钝怎么办 为什么电脑在桌面点击鼠标右键反应很慢我们在使用电脑的时候,总是会遇到很多的电脑难题.当我们在遇到了桌面鼠标右键菜单反应慢的时候,那么我们应该怎么办呢?今天就一起来 ...
- 计算机启动进入不了桌面图标,电脑开机不显示桌面图标,按哪个键都没有反应是...
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:电脑开机不显示桌面图标,按哪个键都没有反应是怎么回事,请教高手回答:1.首先右击桌面选排列图标/勾选显示桌面图标.2.如果故障依旧, ...
- 桌面新建文件夹不显示缩图_如何在Windows 10桌面上创建不可见的文件夹
桌面新建文件夹不显示缩图 Have you ever wanted to hide files right under someone's nose? With this digital parlor ...
- Windows 10如何找回显示桌面图标,一键快速回到桌面
Windows 10如何找回显示桌面图标,一键快速回到桌面 目录:C:\Windows 就存在:showdesktop,如果根据本文章内容创建图标后发现运行速度慢,可以右键 [固定到任务栏]的「显示桌 ...
- Windows桌面任务栏上面无线网显示不见了如何解决
Windows桌面任务栏上面无线网显示不见了如何解决 问题描述: 有时候电脑右下角的桌面的无线网图标会突然消失,看习惯了会很难受!?辣么,该如何解决呢?下面提供一下我常用的方法 首先要确保任务栏处显示 ...
- 计算机开机右下角无显示桌面,电脑开机后不显示桌面的原因
电脑开机后不显示桌面的原因 电脑开机后不显示桌面,四种原因分析.最近,有用户反映开机的时候无法显示桌面,这种情况该怎么解决呢?下面小编带来电脑开机后不显示桌面的原因及四种解决方法,一起来看看吧! 原因 ...
- 桌面提醒 android,如何让手机桌面上显示便签提醒事项?
原标题:如何让手机桌面上显示便签提醒事项? 如何让手机桌面上显示便签提醒事项? 手机桌面上显示便签提醒事项的方式太多了,不同系统的手机.不同品牌的手机.甚至不同型号的手机,在手机桌面上显示便签事项.备 ...
- gnome显示桌面图标_gnome3.28及以后桌面图标显示方法
Gnome3.28版本桌面图标无法通过gnome-tweak-tool显示 解决办法: 1.通过Nemo a)安装nemosudo dnf install nemo b)添加nemo-desktop自 ...
- 怎样在电脑桌面上显示此计算机,电脑win10系统的桌面上怎么显示“此电脑”图标...
电脑win10系统的桌面上怎么显示"此电脑"图标 大家有没有遇到过桌面上没有"此电脑"图标的情况呢?今天小编就告诉大家电脑win10系统的桌面上怎么显示&quo ...
最新文章
- 计算机5G英语文献,5G移动网络外文文献翻译2018中英文.docx
- python实现AES算法
- javadoc源码获取
- step4 . day6 线程与线程的创建
- Avalonia跨平台入门第六篇之Grid动态分割
- java linux 服务_java项目部署Linux服务器几种启动方式总结经验
- 《程序员面试金典》+《算法导论》
- kettle执行组件时为什么使用克隆对象
- android省市区三级联动,NumberPicker实现省市区三级联动的效果
- GPS-GGA数据格式
- echarts折线图标识最大值
- linux鼠标手势软件,在Deepin Linux系统使用Easystroke鼠标手势会更方便工作
- 如何打开计算机控制界面,如何打开控制面板
【使用途径】
- 云南昆明寺庙方丈还俗完婚 迎娶26岁女老板(图)
- hdu 5325 Crazy Bobo (树形dp)
- 需求分析和常见的需求问题解决
- Mysql出现 “ERROR 1062” 的解决方法
- 【初级C语言】代码版式(空行,空格,对齐,长行代码,注释)
- 电路城(www.cirmall.com)— Altium常用库文件(元件库+封装库+常用元器件3D模型)
- 建议收藏 | IC专业术语盘点