需求:
在桌面放一个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)相关推荐

  1. 点击 桌面 计算机 空白 不响应,win7桌面空白处右键电脑迟钝怎么办 为什么电脑在桌面点击鼠标右键反应很慢...

    win7桌面空白处右键电脑迟钝怎么办 为什么电脑在桌面点击鼠标右键反应很慢我们在使用电脑的时候,总是会遇到很多的电脑难题.当我们在遇到了桌面鼠标右键菜单反应慢的时候,那么我们应该怎么办呢?今天就一起来 ...

  2. 计算机启动进入不了桌面图标,电脑开机不显示桌面图标,按哪个键都没有反应是...

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:电脑开机不显示桌面图标,按哪个键都没有反应是怎么回事,请教高手回答:1.首先右击桌面选排列图标/勾选显示桌面图标.2.如果故障依旧, ...

  3. 桌面新建文件夹不显示缩图_如何在Windows 10桌面上创建不可见的文件夹

    桌面新建文件夹不显示缩图 Have you ever wanted to hide files right under someone's nose? With this digital parlor ...

  4. Windows 10如何找回显示桌面图标,一键快速回到桌面

    Windows 10如何找回显示桌面图标,一键快速回到桌面 目录:C:\Windows 就存在:showdesktop,如果根据本文章内容创建图标后发现运行速度慢,可以右键 [固定到任务栏]的「显示桌 ...

  5. Windows桌面任务栏上面无线网显示不见了如何解决

    Windows桌面任务栏上面无线网显示不见了如何解决 问题描述: 有时候电脑右下角的桌面的无线网图标会突然消失,看习惯了会很难受!?辣么,该如何解决呢?下面提供一下我常用的方法 首先要确保任务栏处显示 ...

  6. 计算机开机右下角无显示桌面,电脑开机后不显示桌面的原因

    电脑开机后不显示桌面的原因 电脑开机后不显示桌面,四种原因分析.最近,有用户反映开机的时候无法显示桌面,这种情况该怎么解决呢?下面小编带来电脑开机后不显示桌面的原因及四种解决方法,一起来看看吧! 原因 ...

  7. 桌面提醒 android,如何让手机桌面上显示便签提醒事项?

    原标题:如何让手机桌面上显示便签提醒事项? 如何让手机桌面上显示便签提醒事项? 手机桌面上显示便签提醒事项的方式太多了,不同系统的手机.不同品牌的手机.甚至不同型号的手机,在手机桌面上显示便签事项.备 ...

  8. gnome显示桌面图标_gnome3.28及以后桌面图标显示方法

    Gnome3.28版本桌面图标无法通过gnome-tweak-tool显示 解决办法: 1.通过Nemo a)安装nemosudo dnf install nemo b)添加nemo-desktop自 ...

  9. 怎样在电脑桌面上显示此计算机,电脑win10系统的桌面上怎么显示“此电脑”图标...

    电脑win10系统的桌面上怎么显示"此电脑"图标 大家有没有遇到过桌面上没有"此电脑"图标的情况呢?今天小编就告诉大家电脑win10系统的桌面上怎么显示&quo ...

最新文章

  1. 计算机5G英语文献,5G移动网络外文文献翻译2018中英文.docx
  2. python实现AES算法
  3. javadoc源码获取
  4. step4 . day6 线程与线程的创建
  5. Avalonia跨平台入门第六篇之Grid动态分割
  6. java linux 服务_java项目部署Linux服务器几种启动方式总结经验
  7. 《程序员面试金典》+《算法导论》
  8. kettle执行组件时为什么使用克隆对象
  9. android省市区三级联动,NumberPicker实现省市区三级联动的效果
  10. GPS-GGA数据格式
  11. echarts折线图标识最大值
  12. linux鼠标手势软件,在Deepin Linux系统使用Easystroke鼠标手势会更方便工作
  13. 如何打开计算机控制界面,如何打开控制面板 【使用途径】
  14. 云南昆明寺庙方丈还俗完婚 迎娶26岁女老板(图)
  15. hdu 5325 Crazy Bobo (树形dp)
  16. 需求分析和常见的需求问题解决
  17. Mysql出现 “ERROR 1062” 的解决方法
  18. 【初级C语言】代码版式(空行,空格,对齐,长行代码,注释)
  19. 电路城(www.cirmall.com)— Altium常用库文件(元件库+封装库+常用元器件3D模型)
  20. 建议收藏 | IC专业术语盘点

热门文章

  1. 2019.12.14
  2. 重装win10没有无线网卡驱动怎么回事?
  3. DevExpress之TreeList控件
  4. CF:A. Flipping Game
  5. python---添加 PYTHONPATH
  6. 自定义python蟒蛇绘制-Python实现七彩蟒蛇绘制实例代码
  7. 为生活在充满挑战的环境中的人设计
  8. 《依赖注入 初相见》
  9. Android压缩文件或者文件夹(可带密码)
  10. 联合证券|五定增项目同日被否 保荐机构该不该“背锅”?