IShellBrowser :: BrowseObject nie jest wywoływany
Próbuję zaimplementować ramkę typu Explorer w mojej aplikacji. To również musi działać pod WinXP.
ZaimplementowałemIShellBrowser
w mojej klasie okna + zaimplementowałemIUnknown
berło.
Moja klasa atrybuje:
<code>IShellViewPtr m_shView; HWND m_wndHolder; CListViewCtrl view; </code>
Oto kodWM_CREATE
treser
<code>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 </code>
Po uruchomieniu aplikacji mam ramkę podobną do eksploratora. Chcę obsługiwać zdarzenie podwójnego kliknięcia, aby poruszać się po folderach w ramce. Spodziewam się, że po dwukrotnym kliknięciu mojej implementacjiBrowseObject
zostanie wywołany, ale tak się nie stało. Zamiast tego foldery są otwierane w eksploratorze systemu.
Proszę pomóż. Dziękuję Ci.