有谁用过OleDraw函数向内存DC上绘图?我无法创建兼容内存位图。
我想将WORD的后台显示直接考入内存位图,但显示混乱,是设备DC属性没关联好吗?
_Application app;
::CLSIDFromProgID(L"Word.Application.9", &clsid); // from registry
if(::GetActiveObject(clsid, NULL, &pUnk) == S_OK)
{
VERIFY(pUnk->QueryInterface(IID_IDispatch,(void**) &pDisp) == S_OK);
TRACE(" attach complete\n");
}
else
{
if(!app.CreateDispatch("Word.Application.9"))
AfxThrowMemoryException();
if(::GetActiveObject(clsid, NULL, &pUnk) != S_OK)
AfxThrowMemoryException();
app.SetVisible(TRUE);
TRACE("create complete\n");
}
/*打开指定文档*/
...
/*将内容拷备到内存位图中*/
HDC hCurDC=::GetDC(this->m_hWnd);
HDC dcMem=::CreateCompatibleDC(hCurDC);
HBITMAP hbmp=::CreateCompatibleBitmap(hCurDC,PAGEWIDTH,PAGEHEIGHT*lPages);
::SelectObject(dcMem,hbmp);
RECT g_rcCurPage={0,0,PAGEWIDTH,PAGEHEIGHT};
::OleDraw(pUnk,DVASPECT_CONTENT,dcMem,(LPCRECT)&g_rcCurPage);