一般使用DC完毕之后都会让DC恢复原来的配置:
pOldfont = pDC->SelectObject(font);
pOldBmp = pDC->SelectObject(bmp);
.....
...
.
pDC->SelectObject(pOldfont);
pDC->SelectObject(pOldBmp);
但是今天看到有个函数SaveDC(),说也可以保存DC信息,并且可以恢复原来的信息。
int nSaveDC=pDC->SaveDC();
.....
...
.
pDC->RestoreDC(nSaveDC);
两种用法有什么区别?既然有SaveDC(),为什么还要这么麻烦的SelectObject(Old)?
还有SelectObject挺奇怪:
pDC->SelectObject(bmp);这样编译通过
pOldBmp = pDC->SelectObject(bmp);编译通不过,一定要改成pOldBmp = pDC->SelectObject(&bmp);
如果用pDC->SelectObject(bmp);是不是就不能恢复原来的dc信息吗?
pOldfont = pDC->SelectObject(font);
pOldBmp = pDC->SelectObject(bmp);
.....
...
.
pDC->SelectObject(pOldfont);
pDC->SelectObject(pOldBmp);
但是今天看到有个函数SaveDC(),说也可以保存DC信息,并且可以恢复原来的信息。
int nSaveDC=pDC->SaveDC();
.....
...
.
pDC->RestoreDC(nSaveDC);
两种用法有什么区别?既然有SaveDC(),为什么还要这么麻烦的SelectObject(Old)?
还有SelectObject挺奇怪:
pDC->SelectObject(bmp);这样编译通过
pOldBmp = pDC->SelectObject(bmp);编译通不过,一定要改成pOldBmp = pDC->SelectObject(&bmp);
如果用pDC->SelectObject(bmp);是不是就不能恢复原来的dc信息吗?
解决方案 »
- socket发送 接收
- 如何高效解决浮点数比较的误差?
- va_start,va_arg宏为什么到最后要va_end?
- 如何获取系统中当前已安装的应用程序列表?就好像Windows Explorer中点击右键选择“打开方式...”后弹出的应用程序列表一样。
- 用ODBC能够创建ACCESS数据库文件吗?怎么样创建?
- 今天发现编译的时候,每次都要全部编译一遍,鸟火死了,请各位赐教!
- 天哪,我的系统资源!!!
- 请教一个问题:如何一次将数据读入内存,然后分多次出来,最后从内存中卸载
- vc6.0想获得datagrid单元格的值。比如我指定(9,8) 第9行,第8列的数据.
- 请问如何关闭一个应用程序
- 怎么屏蔽Application键???? VK_APPS 不行,在CXXAPP里屏蔽不成功?
- 请教关于fwrite中对指针对象写入的问题
============
SaveDC和RestoreDc配合在一起用的,它保存和恢复的是DC中的所有信息。
SelectObject只是恢复一种GDI信息。pOldBmp = pDC->SelectObject(bmp);编译通不过,一定要改成pOldBmp = pDC->SelectObject(&bmp);
===========
这个是由SelectObject的原型决定的,它要求的参数是GDI对象的指针。