IE BHO: как правильно инициализировать из IOleCommandTarget :: Exec? - PullRequest
0 голосов
/ 30 марта 2011
STDMETHODIMP CTestAddIn::Exec(
    const GUID *pguidCmdGroup, DWORD nCmdID,
    DWORD nCmdExecOpt, VARIANTARG *pvaIn, VARIANTARG *pvaOut)
{
  AFX_MANAGE_STATE(AfxGetStaticModuleState());
  CProfileEdit dlg;
  dlg.DoModal();
  return S_OK;
}

CTestAddIn является подклассом IOleCommandTarget и нескольких других, необходимых для работы моего плагина. Этот код выполняется, когда я нажимаю кнопку, добавленную на панель инструментов IE. Вызов DoModal дает мне сообщение с подтверждением, ссылающееся на objcore.cpp в строке 40:

BOOL CObject::IsKindOf(const CRuntimeClass* pClass) const
{
    ENSURE(this != NULL);

Мне кажется, проблема в том, что MFC пытается загрузить ресурсы из IE вместо моей DLL (каждый раз, когда я проверяю во время отладки, он не может найти строку шаблона диалога). Говорят, что вызов AFX_MANAGE_STATE исправляет это в соответствии с сообщением на форуме MSDN, или я поставил это не в том месте?

Мне лучше положить код MFC в другую DLL для загрузки или вообще избегать MFC?

...