:245.149KB : :1 :2021-11-02 16:10:13
想要实现这个功能:
问1:首先要获取鼠标双击桌面的消息。
问2:判断是双击的桌面图标还是双击的桌面空白区域。
答1:第一个问题是通过hook全局鼠标来实现判断,hook了全局鼠标后,通过判断鼠标当前指向的窗口句柄来判断鼠标是否在桌面双击。
答2:由于桌面是一个超级列表框控件,通过精易模块里的外部超级列表框类,绑定桌面的超级列表框句柄,通过取鼠标指针所在的索引来判断当前鼠标是在图标上,还是在空白区域。
然后通过隐藏和显示SyListView32这个桌面句柄就能达到双击桌面隐藏和显示桌面图标的效果。
接下来讲下遇到的问题:
本来是想直接获取桌面句柄的鼠标移动,但是不会hook桌面句柄或者是截获桌面句柄的消息,所以只能通过hook全局的鼠标消息来实现,如果有谁懂直接获取桌面的双击消息,可以发个例子出来。
通过外部超级列表框类,可以获取鼠标放在哪个桌面图标上,还有通过外部超级列表框.取表项位置 (, )取出桌面图标的坐标,但是通过外部超级列表框.取标题 (, , )这个命令,无法取出桌面图标的名称,如果有谁知道怎么通过外部超级列表框取桌面图标的名称的也可以发个例子。
有人可能会说桌面右键菜单里有显示隐藏图标,我觉得那样太麻烦,双击桌面的速度最快也最方便,如果有谁有更好的实现方法也可以分享出来。
08-23显示隐藏图标,工具栏按钮
02-05C++模拟鼠标双击事件
02-05C++设置鼠标双击的时间间隔
02-02让窗体的标题栏不响应鼠标双击事件
11-22鼠标双击全局检测判断