2017-02-24 80 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); 
    } 
}