关于 SHCreateFolderViewEx的CALLBACK细节的问题

lsgt 2004-07-20 08:03:04
做shell namespace的时候,用SHCreateFolderViewEx创建IShellView,当我在这个namespace里头开始拖动的时候,回调函数会收到一个uMessage=73的消息,不过这个消息里面别的参数都是什么东西?要响应的话,想来应该获得被拖动对象(大概是一个PIDL指针),构造合适的IDataObject对象,大概还应该把这个接口指针送回去。可是现在看到的文档上面的这个回调函数的消息都是到6x就没说了。

回调函数原型:
HRESULT CALLBACK SHELLVIEWPROC(DWORD dwUserParam, LPSHELLFOLDER psf,
HWND hwnd, UINT uMsg,
WPARAM wParam, LPARAM lParam);

分不是问题。
...全文
138 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2004-07-21
  • 打赏
  • 举报
回复
treeview看来只能自己写了
lifeequation 2004-07-21
  • 打赏
  • 举报
回复
gz
lsgt 2004-07-20
  • 打赏
  • 举报
回复
那是用我上面第一种方法的时候可以用的。不过我左边的目录树也需要支持拖放,该怎么做?

另外我最想知道的是如果我是用上面第二种方法构造IShellView的时候怎么做?

因为用第二种方法作出来的NameSpace Extension跟Explorer的完全一样,而且在各种版本下都一样。用第一种方法出来的东东,好些地方在不同的WINDOWS平台下跟Explorer 都不同。例如在2003下,查看按钮根本就不能点。还有用第二种方法做的话,几乎都是对ListView在操作,如果要对左边的目录树也要有同样的功能,都需要不同的处理。
蒋晟 2004-07-20
  • 打赏
  • 举报
回复
响应ListView的WM_MOUSEDOWN,然后获得PIDL,创建IDataObject...
lsgt 2004-07-20
  • 打赏
  • 举报
回复
关于SHCreateShellFolderViewEx的详细一些的说明见这篇文章:http://www.codeproject.com/shell/shlext.asp
lsgt 2004-07-20
  • 打赏
  • 举报
回复
这么说吧,如果我在CShellView::CreateViewObject里面这么做的话,就可以用你说的那些文章的内容来处理拖放:
if (IsEqualIID (riid, IID_IShellView))
{
CShellView *pShellView;
pShellView = new CShellView(this, m_pidl);
if(!pShellView)
{
return E_OUTOFMEMORY;
}
hr = pShellView->QueryInterface(riid, ppvOut);
pShellView->Release();
return hr;
}
(之后在CShellView里面创建ListView,响应ListView的LVN_BEGINDRAG,然后获得PIDL,创建IDataObject...不过这么做的话,左边树空间的拖动怎么办?望赐教)

现在我是这么做的:
SHELLVIEWDATA sw;
sw.dwEventId=0;
sw.dwSize=sizeof(sw);
sw.dwUserParam=NULL;
sw.pCallBack=(SHELLVIEWPROC)ShellViewProc;
sw.pidl=m_pidl;
sw.pShellFolder=this;
sw.viewmode=NF_INHERITVIEW;
hr=SHCreateShellFolderViewEx(&sw,ppvOut);
然后在ShellViewProc里面处理IShellView回来的消息。问题是我不知道uMessage=73的消息的参数的意义
lsgt 2004-07-20
  • 打赏
  • 举报
回复
大哥,你说的那几篇文章我这几天看了N遍了啊。

里面的东西和我的问题无关啊?
名牌大灰狼 2004-07-20
  • 打赏
  • 举报
回复
ALL COPY UP
http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_programming/transferring/transfer.asp

http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_programming/transferring/datascenarios.asp
http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_programming/transferring/clipboard.asp
蒋晟 2004-07-20
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_programming/transferring/transfer.asp

http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_programming/transferring/datascenarios.asp
http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_programming/transferring/clipboard.asp

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧