关于HDC的问题
时间:2011-12-10
来源:互联网
求解答,想了好久不会解决:
现在我有一个画了一些内容的兼容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也跟着改,所以应该如何解决,望能人能帮小弟解决这个问题!感激不已!
现在我有一个画了一些内容的兼容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也跟着改,所以应该如何解决,望能人能帮小弟解决这个问题!感激不已!
作者: donger0159 发布时间: 2011-12-10
SelectObject 之类的函数 系统不会为你保存DC中的内容
C/C++ code
C/C++ code
.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.销毁 { }
作者: likang0712 发布时间: 2011-12-11
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28