Здравствуйте _defrager, Вы писали:
D>Делаю себе браузер на движке ie и наткнулся на такой код в MFC:
D>(Mfc7, ViewHtml.cpp, ExecFormsCommand)
D>/////////////////////////////////////////
D> HRESULT hr = E_FAIL;
D> CComPtr<IHTMLDocument2> spDoc = (IHTMLDocument2*) GetHtmlDocument();
D> if (spDoc != NULL)
D> {
D> CComQIPtr<IOleCommandTarget> spCmdTarget = spDoc;
D> if (spCmdTarget != NULL)
D> hr = spCmdTarget->Exec(&CMDSETID_Forms3, dwCommandID,
D> OLECMDEXECOPT_DONTPROMPTUSER, pVarOut, pVarIn);
D> }
D> return hr;
D>////////////////////////////////////////
D>Как я понимаю, здесь теряется один Release()
, потому что Release() нужно вызвать и для spDoc,
D>и для диспатча,возвращаемого GetHtmlDocument()
D>Так ведь?
D>ps. Любители критиковать чужие браузеры, посмотрите плз stylerbrowser.narod.ru (250kb)
На сколько я помню в деструкторе CComPtr есть Release(), так что его вызывать ненужно...