蒋晟(JIANG, Sheng)

Jiang,Sheng ,a Microsoft Most Valuable Professional of Visual C++, became a Visual C++ programmer at 1999. He actives on several online Visual C++ forums ,blogs and newsgroups

3/04/2010

 

Getting out of Active Document

do{
            if(m_pDocObjectServer==NULL) break;
            CComPtr<IOleObject> pOleObject;
            m_pDocObjectServer->ExternalQueryInterface(&IID_IOleObject,(LPVOID*)&pOleObject);
            if(pOleObject==NULL) break;
            CComPtr<IOleClientSite> pOleClientSite;
            pOleObject->GetClientSite(&pOleClientSite);
            if(pOleClientSite==NULL) break;
            CComPtr<IOleContainer> pOleContainer;
            pOleClientSite->GetContainer(&pOleContainer);
            if(pOleContainer==NULL) break;
            CComQIPtr<IServiceProvider> pServiceProvider(pOleContainer);
            if(pServiceProvider==NULL) break;
            CComQIPtr<IServiceProvider> pTopLevelServiceProvider;
            pServiceProvider->QueryService(SID_STopLevelBrowser, IID_IServiceProvider, (LPVOID*)&pTopLevelServiceProvider);
            if(pTopLevelServiceProvider==NULL) break;
            CComPtr<IWebBrowser2> pWebBrowser2;
            pTopLevelServiceProvider->QueryService(SID_SWebBrowserApp, IID_IWebBrowser2,(LPVOID*)&pWebBrowser2);
            if(pWebBrowser2==NULL) break;           
            pServiceProvider=pWebBrowser2;
            CComPtr<IOleWindow> pOleWindow;
            pServiceProvider->QueryService(SID_SShellBrowser, IID_IOleWindow,(LPVOID*)&pOleWindow);
            if(pOleWindow==NULL) break;           
            HWND hwndBrowserOrTab = NULL;
            pOleWindow->GetWindow(&hwndBrowserOrTab);
            if(hwndBrowserOrTab==NULL) break;           
            CString newTitle;
            newTitle.Format("%s (%d strokes)",
                m_strPathName,
                m_strokeList.GetSize());
            BOOL result=::SetWindowText(hwndBrowserOrTab,(LPCTSTR)newTitle);
            if(result==FALSE)
            {
                int errorCode=GetLastError(); //no error here but looks like no way to update tab caption, which is in a DirectUIHWND window in the frame process.
            }
        }while(FALSE);


Comments: Post a Comment

Subscribe to Post Comments [Atom]



Links to this post:

Create a Link



<< Home

Archives

3/1/02   9/1/03   10/1/03   11/1/03   12/1/03   1/1/04   2/1/04   3/1/04   4/1/04   6/1/04   7/1/04   10/1/04   11/1/04   12/1/04   1/1/05   2/1/05   3/1/05   4/1/05   5/1/05   6/1/05   7/1/05   8/1/05   9/1/05   10/1/05   11/1/05   12/1/05   1/1/06   2/1/06   3/1/06   10/1/06   8/1/07   5/1/09   8/1/09   11/1/09   3/1/10   6/1/10   9/1/10   2/1/12  

This page is powered by Blogger. Isn't yours?

Subscribe to Posts [Atom]