首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

Windows Shell名空间扩展

2013-12-20 
Windows Shell名空间扩展高手请进最近在做shell名空间扩展,实现了IShellFolder接口,创建了一个DefView,遇

Windows Shell名空间扩展高手请进
最近在做shell名空间扩展,实现了IShellFolder接口,创建了一个DefView,遇到几个难题,如下:

1.在我扩展的名空间里剪切一个Item或多个Item,被剪切的Item颜色不会变浅,
要知道,在Windows下剪切一个Item,这个Item颜色会变浅。我知道向ListView控件发送改变Item状态的消息,是可以做到的,但是因为我使用的是DefView,而不是自己添加的View控件,我需要得到DefView控件的句柄,但是在Win7下,DefView使用的是DirectUI绘制的,因此我没有办法获得View窗口的句柄。

2.如果在资源管理器的A窗口中打开了xx文件夹,然后在B窗口内删除xx文件夹,这时A窗口内会发生什么呢?在win7下,A窗口会返回到xx文件夹的上一层目录;而在xp下A窗口会关闭,这是Explorer的做法。在我扩展的名空间里,想要实现和Explorer同样的效果,我能想到的方法是通知shell,有一个目录被删除,像这样SHChangeNotify(SHCNE_RMDIR, SHCNF_IDLIST | SHCNF_FLUSH, pidl, NULL);但是实际上并没有实现Explorer的效果,因此让我感到困惑。

3.这个问题是关于OLE拖放的,在win7下拖拽一个Item时,会在右下角显示‘移动’或‘复制’的字样,当拖放的源与目标是同一个窗口时,其实我想说的是,刚刚拖动的时候,如果只使用鼠标键,Explorer是不会显示‘移动’或‘复制’的字样,当你按下‘Ctrl’或‘Shift’键时上述字样就会显示。但是在我的名空间里拖拽一个Item,只有你一开始拖拽时就按住‘Ctrl’或‘Shift’才会显示字,而在拖拽的中途在按键盘,就不会出现字样了。这个问题甚是纠结。

以上问题期待高手解答,不胜感激!!!
[解决办法]
SHChangeNotifyRegister function

Registers a window to receive notifications from the file system or Shell, if the file system supports notifications.

热点排行