0
我試圖在我的應用程序中實現類似瀏覽器的框架。這也必須在WinXP下工作。IShellBrowser :: BrowseObject不叫
我在我的窗口類中實現了IShellBrowser
+我實現了IUnknown
接口。
我班atributs:
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
後會被調用,但它不會發生。而不是在系統資源管理器中打開這個文件夾。
請幫忙。謝謝。