描述:
//打开PDF文件
ModifyStyle(0, WS_CLIPCHILDREN);
// 获取对话框的客户区矩形
CRect rt;
GetClientRect(&rt);
// 利用CWnd::CreateControl创建PDF控件窗口
// Acrobat (Reader) 5.x/6.x的控件类ID为"PDF.PdfCtrl.5",7.x为"AcroPDF.PDF.1"
m_wndPDF.CreateControl((IID &)"PDF.PdfCtrl.5", NULL, WS_CHILD | WS_VISIBLE, rt, this, 0);
// 获取IDispatch接口指针
LPUNKNOWN lpUnknown = m_wndPDF.GetControlUnknown();
LPDISPATCH lpDispatch;
lpUnknown->QueryInterface(IID_IDispatch, (void**)&lpDispatch);
// 把获得的接口指针传递给组件驱动对象m_drvPDF,通过它调用控件的属性和方法
// 当m_drvPDF销毁时,会自动释放接口指针
m_drvPDF.AttachDispatch(lpDispatch);
// 弹出一个“打开”对话框,选择要显示的PDF文件
CFileDialog dlg(TRUE);
if (dlg.DoModal() == IDOK)
{
// 利用控件的方法LoadFile读取并显示PDF文件
m_drvPDF.LoadFile(dlg.GetPathName());
}
我想请问,为什么我获取IDispatch接口指针时候,lpUnknown 总是NULL。主要看一下我的获取IDispatch借口指针!!!
解决方案1:
调用CoInitialize(NULL);了么:
还有就是m_wndPDF.CreateControl(_T("PDF.PdfCtrl.5"), NULL, WS_CHILD | WS_VISIBLE, rt, this, 0);
m_wndPDF.CreateControl 成功了吗?