我正在尝试在我的应用程序中实现类似资源管理器的框架。这也必须在 WinXP 下工作。
我已经IShellBrowser
在我的窗口类中实现了 + 我已经实现了IUnknown
接口。
我的班级属性:
IShellViewPtr m_shView;
HWND m_wndHolder;
CListViewCtrl view;
这是WM_CREATE
处理程序的代码
m_hWndClient = view.Create(m_hWnd, rcDefault, NULL,
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
WS_CLIPCHILDREN, WS_EX_CLIENTEDGE); // view isn't null after it
CMessageLoop* pLoop = _Module.GetMessageLoop();
pLoop->AddMessageFilter(this);
pLoop->AddIdleHandler(this);
IShellFolderPtr pParentFolder;
ATLVERIFY(SHGetDesktopFolder(&pParentFolder) == S_OK); // OK
FOLDERSETTINGS fs;
fs.fFlags = FVM_DETAILS;
fs.ViewMode = FVM_LIST;
ATLVERIFY(pParentFolder->CreateViewObject(view, IID_IShellView, (void**)&m_shView) == S_OK); // OK
RECT r;
GetClientRect(&r);
ATLVERIFY(m_shView->CreateViewWindow(NULL, &fs, static_cast<IShellBrowser*>(this), &r, &m_wndHolder) == S_OK); // OK
ATLVERIFY(m_shView->UIActivate(SVUIA_ACTIVATE_NOFOCUS) == S_OK); // OK
应用程序启动后,我有类似资源管理器的框架。我想处理双击事件以浏览框架中的文件夹。我希望在双击我的实现后BrowseObject
会被调用,但它没有发生。而不是这个文件夹在系统资源管理器中打开。
请帮忙。谢谢你。