求解答,想了好久不会解决:现在我有一个画了一些内容的兼容HDC,接着我在这个兼容HDC上画了其他东西(即改变了其中的内容),然后我将这个兼容HDC画到真正的HDC上。画完后我想恢复原来最先的兼容HDC要怎么办???问题可以抽象成这样:
(1)两个变量的情况很简单:
tmp = value;
value ++;
value = tmp; (恢复原来的value)(2)现在是HDC:
tmpHDC = MDC; //原来有内容的MDC
Draw(MDC, ...) //画一些东西在MDC上
mdc = tmpHDC; // 恢复原来的MDC
这里因为都是HDC句柄,所以这样是不行的,就像引用一样,MDC改了,tmpHDC也跟着改,所以应该如何解决,望能人能帮小弟解决这个问题!感激不已!
(1)两个变量的情况很简单:
tmp = value;
value ++;
value = tmp; (恢复原来的value)(2)现在是HDC:
tmpHDC = MDC; //原来有内容的MDC
Draw(MDC, ...) //画一些东西在MDC上
mdc = tmpHDC; // 恢复原来的MDC
这里因为都是HDC句柄,所以这样是不行的,就像引用一样,MDC改了,tmpHDC也跟着改,所以应该如何解决,望能人能帮小弟解决这个问题!感激不已!
.h
CDC m_dcMem, *m_pDcOld;
.cpp
CClientDC dc(this);
if(!m_dcMem.m_hDC)
{
m_dcMem.CreateCompatibleDC(&dc);
m_pDcOld = m_dcMem.SelectObject(YOUR_OBJECT);
.....
} CDC dcMemTmp, *m_pDcOldTmp;
dcMemTmp.BitBlt(m_dcMem);// 把你要用的画到局部的内存DC变量中 ...
dc.Bitblt(dcMemTmp);/////~()//析构函数m_dcMem 判断存在后 1.选回去 2.销毁
{
}