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的调用给了我一条断言信息,引用了第40行的objcore.cpp:
BOOL CObject::IsKindOf(const CRuntimeClass* pClass) const
{
ENSURE(this != NULL);
我认为问题是MFC正在尝试从IE而不是我的DLL加载资源(每次我在调试时检查它都找不到对话框模板字符串)。据说对AFX_MANAGE_STATE的调用根据MSDN论坛上的帖子解决了这个问题,还是我把它放在了错误的地方?
我最好将MFC代码放在另一个DLL中以完全加载或避免使用MFC吗?