为什么要用此函数来生成一个兼容DC来存放CBitmap对象? 而不是直接把位图存进CDC类的对象中?

WindowsGDI的接口没提供这样的功能机制,只能是先通过CreateCompatibleDC 创建一个与显示器设备内容兼容的内存设备内容,用SelectObject将位图选入内存设备内容,再用BitBlt函数进行从内存到显存的位块传输。

DC是设备内容,是我们问题的核心,请看《Windows程序设计》关于设备内容的讲解:
设备内容:
设备内容中包含许多确定GDI函数如何在设备上工作的目前「属性」,这些属性允许传递给GDI函数的参数只包含起始坐标或者尺寸信息,而不必包含Windows在设备上显示对象时需要的所有其它信息。例如,呼叫TextOut时,您只需要在函数中给出设备内容 句柄 、起始坐标、文字和文字的长度。您不必指定字体、文字颜色、文字后面的背景色彩以及字符间距,因为这些属性都是设备内容的一部分。当您想改变这些属性之一时,您呼叫一个可以改变设备内容中属性的函数,以后针对该设备内容的TextOut呼叫来使用改变后的属性。
内存设备内容:

设备内容指的是特殊的图形输出设备(例如显示器或者打印机)及其设备驱动程序。而内存设备内容只位于内存中,它不是真正的图形输出设备,但可以说与指定的真正设备「兼容」。也就是说内存设备内容具有和显示器设备内容相同的结构,也存放与屏幕显示相关的信息。

另外书中还说:内存设备内容是您可以选进位图的唯一一种设备内容型态。也就是说,我们不能够调用SelectObject(显示器设备内容句柄, 位图句柄)直接将位图选入显示器设备内容

MFC中CreateCompatibleDC的作用相关推荐

  1. MFC中五个初始类的作用

    MFC中五个初始类的作用 https://blog.csdn.net/thisispan/article/details/7393401

  2. MFC中的CDC 绘图

    MFC中的CDC 绘图 绘图一般在视图类的(屏幕/打印机)绘图消息响应函数OnDraw中进行,例如: void CTestView::OnDraw(CDC* /*pDC*/) {          C ...

  3. MFC中CDC的使用

    绘图一般在视图类的(屏幕/打印机)绘图消息响应函数OnDraw中进行, 例如: void CTestView::OnDraw(CDC* /*pDC*/) {          CTestDoc* pD ...

  4. 实现MFC中Radio Button组绑定同一变量控制

    实现MFC中Radio Button组绑定同一变量控制 总共有八个控件,如果要一个一个绑定变量,并且写响应函数,将要花费很多时间精力,所以想用的方法就是都绑上同一个变量,这样当我点击某一个控件的时候, ...

  5. MFC中的MainFrame Dlg,App,Doc,View的关系

    MFC中的MainFrame Dlg,App,Doc,View的关系 MainFrame: 主框架类 Dlg 是Dialog 的缩写,表示对话框本身 App类就是这个SDI作为"程序&quo ...

  6. MFC中CString.format用法

    MFC中CString.Format的详细用法 收藏  在MFC程序中,使用CString来处理字符串是一个很不错的选择. CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的 ...

  7. c++:MFC中sqlite3的使用(附实际案例)

    MFC中sqlite3的使用 sqlite3介绍 sqlite3安装 常用API函数 操作流程 接口函数 执行sql语句函数 回调函数 MFC中案例实践 控制台实践 sqlite3介绍 SQLite ...

  8. 多线程编程之二——MFC中的多线程开发

    五.MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程.二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环. 工作者线程没有消息机制,通常 ...

  9. 在MFC中使用Cstring

    此文介绍了关于MFC使用CString的资料,可一参考一下. 转自于VC知识库:http://www.vckbase.com/index.php/wv/829 通过阅读本文你可以学习如何有效地使用 C ...

最新文章

  1. C#中方法参数的四种类型
  2. 【Hello CSS】第一章-CSS的语法与工作流
  3. 多组两两比较用什么检验方法_用SPSS进行不同变量多组间两两比较卡方检验.pdf...
  4. word转pdf图片模糊怎么办_迅捷PDF转换器如何将word转为长图?word转图片方法
  5. C/C++中Static的作用详述
  6. MATLAB中常用的排列、组合、阶乘函数
  7. BlockChain:区块链技术基础概念综合理解——个人总结
  8. python for everybody课程作业_Programming for Everybody (Python)-Lecture 7 课程笔记
  9. global cache cr request
  10. “寒门状元之死”文章引热议 京东徐雷:三流文学作品 多看书吧
  11. 基于visual Studio2013解决面试题之1102合并字符串
  12. 开源内容管理系统 Joomla 数据遭泄露
  13. 正态分布下贝叶斯决策的特例(三)
  14. VMP学习笔记之壳的重定位修复(五)
  15. java saxreader 生成xml_SAXReader解析xml文件demo
  16. python3  类中方法的调用
  17. Linux虚拟机修改主机名称,设置域名
  18. Andriod Studio 线性布局(LinearLayout)
  19. js 遍历对象的方式
  20. Scheduler (Long-term,Short-term, Medium-term Scheduler) Dispatcher

热门文章

  1. DC-DC直流隔离升压高压输出电源模块12v24v48v转50V110V200V250V350V400V500V600V800V1000V微功率
  2. python爬虫(1)爬虫基础知识
  3. 独立开发变现周刊(第41期):一个开源项目一个人每月收入8万美金
  4. QImage图像格式解读
  5. linux sftp 命令_Linux Sftp命令示例
  6. linux怎么sftp传文件,Linux 如何使用SFTP命令传输文件
  7. 【好消息】高录用、EI检索会议 | 2023年第二届电子信息工程、大数据与计算机技术国际学术会议(EIBDCT 2023)
  8. 【亲测可用】解决Ultra iso软碟通写入硬盘映像时 硬盘映像容量太小问题
  9. display:weston渲染流程:commit
  10. python opencv以MJPG读取usb摄像头