描述:
我在ATL中插入了MFC的窗口,窗口已经可以正常显示(DoModal)。现在我想创建CDC,装入位图后显示(BITBLT)到MFC窗口上,代码如下:
CDC* l_oMemoryDC;
Cbitmap l_bmpMemDC;
CPaintDC l_dcDC(this);
int l_iWidth = l_dcDC.GetDeviceCaps(HORZRES);
int l_iHeight = l_dcDC.GetDeviceCaps(VERTRES);
l_oMemoryDC->CreateCompatibleDC(&l_dcDC);
l_bmpMemDC.CreateCompatibleBitmap(&l_dcDC, l_iWidth, l_iHeight);
l_oMemoryDC->SelectObject(&g_bmpMemDC);
但在运行到倒数第3句的时候CDC类就报断言错,CDC类的m_hdc这个成员变量等于NULL。
是不是代码中还要引入什么关于MFC的东东呢,或是其他什么问题,望各位高手赐教,不胜感激!!!
解决方案1:
楼主一定是以前的代码是MFC写的,程序太大,不想重新修改了,直接搬到ATL里面。
归根结底楼主的目的可能是在ATL中用MFC的CDC、CDialog、CBitmap等类。
CDC* l_oMemoryDC;
l_oMemoryDC->CreateCompatibleDC(&l_dcDC);
----------
这样的语句不错才怪了。
l_oMemoryDC的空间在哪里???
整个一个野指针。这么能用呢?
---------
CDC* l_oMemoryDC = new CDC;
l_oMemoryDC->CreateCompatibleDC(&l_dcDC);
http://www.copathway.com/vchelp/zart/wtli.asp?type_id=70&class_id=1&cata_id=3&article_id=125&search_term=