2013-10-24 7 views
0

я пытаюсь сделать основной браузер, используя IWebBrowser2 в диалоге на основе окКак получить активный контроль х

я вставить активный контроль х в диалог, такие как «Microsoft веб-браузер»

и я стараюсь "AtlAxGetControl" для получения указателя IWebBrowser2

, но я всегда получаю E_FAIL, "Рез" всегда терпит неудачу

void CIWebBrowser2Dlg::OnBnClickedButtonGo() { 
CComPtr<IUnknown> punkIE; 
CComQIPtr<IWebBrowser2> pWB2; 
HWND hWnd; 
this->GetDlgItem(IDC_EXPLORER_MAIN, &hWnd); 

HRESULT res = AtlAxGetControl(hWnd, &punkIE); 
if (res == S_OK) { 
    pWB2 = punkIE; 
    if(pWB2) { 
      pWB2->GoHome(); 
    } 
} 
} 

я сделал "AtlAxWinInit();" на initdialog

спасибо за чтение

плз, дайте мне знать, как справиться с этим

+0

Я думаю, вместо того, чтобы делать это трудно, вам нужно использовать DDX/DDV. Пожалуйста, прочитайте эту старую статью codeguru как учебное пособие: http://www.codeguru.com/cpp/com-tech/atl/wtl/article.php/c3609/Using-DDX-and-DDV-with-WTL.htm – cha

+0

спасибо, я сделал это , но, я все еще удивляюсь этому –

ответ

1

Или, почему бы не использовать мастер класс, чтобы создать класс-оболочку для вас. Тогда вам не придется беспокоиться об аспектах реализации элемента управления.

+0

Я решаю такую ​​проблему, но я хочу знать, почему я не могу получить контроль, используя «AtlAxGetControl» на mfc. –

+0

Не зная контекста кода, который вы опубликовали, я бы предположил, что hwnd, который вы передаете, недействителен. Это то, что вы можете проверить, выполнив код и используя Spy ++. – rrirower

+0

ах .. спасибо, я проверю это –

Смежные вопросы