描述:
我作了一个ActiveX控件,用来在Word中显示一个图片。方法是在OnDraw中用LoadBitmap加载一个位图资源,然后BitBlt出来。我在"Activex控件测试容器"中测试可以正常显示,但是在Word中就会报错,根据报错的位置我发现在Word中显示的时候OnDraw方法传入的CDC* pdc 对应的m_hdc是空的。不知道这是为什么?
代码大致如下:
OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
if (!pdc)
return;
CBitmap bitmap;
CBitmap* OldBitmap;
CDC MemDC;
MemDC.CreateCompatibleDC(pdc);
bitmap.LoadBitmap(IDB_BMPACTIVEX);
MemDC.SelectObject(&bitmap);// --> 此行出错
OldBitmap = MemDC.SelectObject(&bitmap);
pdc->BitBlt(100,100,50,50,&MemDC,0,0,SRCCOPY);
MemDC.SelectObject(pOldBitmap);
}
SelectObject在afxwin1.inl中的原形如下
_AFXWIN_INLINE CBitmap* CDC::SelectObject(CBitmap* pBitmap)
{
ASSERT(m_hDC != NULL); // --> 发生断言错误
return (CBitmap*) SelectGdiObject(m_hDC, pBitmap->GetSafeHandle());
}
我想知道为什么在Word中显示控件的时候m_hDC会是空的,还有怎么避免这个问题?请高人指点下
解决方案1:
楼主,这个问题应该在VC版才有更多人答吧。
您可能想查找下面的文章:
- 请教有关mediaservice相关控件请高人做答!!!谢谢
- 请教高人,开发一个插件给某种原有的windows程序增加额外的功能是怎么实现的?
- 奇怪的问题,请教高人!!!!!!!
- 奇怪的问题,请教高人!!!!多谢!!!
- 请教高人调用extendDLL问题~
- 请教高人,在线程作为一个全局函数的情况下,线程里要对对话框进行UpdateDatafalse,怎么实现?
- 请教高人:我自己写的DLL用来注入到其它的进程中,怎样让这个DLL能够接收并处理自定义消息?
- 请教高人关于WH_MOUSE_LL的问题
- 请高人帮助小妹,如何在net中调用C语言写的DLL,请教高人指教,200分送上
- 线程改变对话框控件问题,请教高人