2017-02-24 82 views
0

在我的MFC應用程序中,我有一個派生CDHtmlDialog類,它打開登錄屏幕,我需要在重定向後從服務器獲取URL和cookie。從CDHtmlDialog獲取cookie

我瀏覽到的OnInitDialog裏面的網址和內捕獲OnNavigateComplete重定向:

void CDMYHtmlDlg::OnNavigateComplete(LPDISPATCH pDisp, LPCTSTR szUrl) 
{ 
    BSTR *bstr = nullptr; 
    this->GetDHtmlDocument(&this->m_spHtmlDoc); 
    if (this->m_spHtmlDoc != nullptr) 
     this->m_spHtmlDoc->get_cookie(bstr); 
} 

但GetDHtmlDocument將返回E_NOINTERFACE,我應該實現他呢?如果是的話,我如何獲得IHTMLDocument2 ?.

所以我的問題是爲什麼我無法獲取文檔,並且這是獲取cookie的正確方法?

非常感謝我的壞英語。

+0

這是怎麼回事來自[上一個問題]的不同問題(http://stackoverflow.com/q/42578008/1889329)? – IInspectable

回答

0

終於明白了。

的CDHtmlDialog類OnNavigateComplete方法是負責向m_spHtmlDoc分配值內,但因爲我重寫任何人的值分配給該文檔的方法,甚至沒有OnDocumentComplete所以簡單的辦法就是

void CDHtmlDlgPersonalizado::OnNavigateComplete(LPDISPATCH pDisp, LPCTSTR szUrl) 
{ 
    /*CALL THE PARENT METHOD*/ 
    CDHtmlDialog::OnNavigateComplete(pDisp, szUrl); 

    /*Now GetDHtmlDocument will get the value from m_spHtmlDoc and assign to spHtmlDoc*/ 
    IHTMLDocument2Ptr spHtmlDoc = nullptr; 
    this->GetDHtmlDocument(&spHtmlDoc); 

    if (spHtmlDoc != nullptr) 
    { 
     BSTR bstr = ::SysAllocString(L" "); 
     spHtmlDoc->get_cookie(&bstr); 
    } 
}