函数功能:该函数创建一个与指定设备兼容的内存设备上下文环境(DC)。

函数原型:HDC CreateCompatibleDC(HDC hdc);

参数:

hdc:现有设备上下文环境的句柄,如果该句柄为NULL,该函数创建一个与应用程序的当前显示器兼容的内存设备上下文环境。

返回值:如果成功,则返回内存设备上下文环境的句柄;如果失败,则返回值为NULL。

CreateCompatibleDc函数只适用于支持光栅操作的设备,应用程序可以通过调用GetDeviceCaps函数来确定一个设备是否支持这些操作。

当不再需要内存设备上下文环境时,可调用DeleteDc函数删除它。

用双缓冲的话还要再定义一个位图对象吧,然后用CreateCompatibleBitmap建立一个与屏幕显示兼容的位图,再用SelectObject将位图选入到内存显示设备中,不知道是不是这样

首先给出实现的程序,然后再解释,同样是在OnDraw(CDC *pDC)中:
CDC MemDC; //首先定义一个显示设备对象
CBitmap MemBitmap;//定义一个位图对象
//随后建立与屏幕显示兼容的内存显示设备
MemDC.CreateCompatibleDC(NULL);
//这时还不能绘图,因为没有地方画 ^_^
//下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小,也可以自己定义(如:有滚动条时就要大于当前窗口的大小,在BitBlt时决定拷贝内存的哪部分到屏幕上)
MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);

//将位图选入到内存显示设备中
//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
//先用背景色将位图清除干净,这里我用的是白色作为背景
//你也可以用自己应该用的颜色
MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));
//绘图
MemDC.MoveTo(……);
MemDC.LineTo(……);

//将内存中的图拷贝到屏幕上进行显示
pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);
//绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();

gdi在sdk应该是很重要的东西,不过嘛自己的水平实在是不怎么够品。长久以来一直都没有认识到 CreateCompatibleDC  的用途到底在这里,不过还好从知道这个东西数起的200天内,我终于还是晓得一些关于这个函数或者说内存dc存在的意义了。

在这种情况下,假如你要对屏幕进行比较多的gdi函数操作,如果每一步操作都直接对屏幕dc进行操作,那出现的大多数可能性都是屏幕的闪烁。一个很好的解决方法就是使用内存dc,将这些操作全部先在内存dc上操作,然后依次性在屏幕上进行操作。

例如:如果你单单使用bitblt在屏幕上拷贝一个图,那可以直接使用屏幕的dc。但是如果你要先设置背景(fillrect)然后再bitblt的话,这就涉及到两个屏幕dc的操作,这样的话屏幕很容易闪烁。

CreateCompatibleDC函数的使用相关推荐

  1. Win32 API CreateCompatibleDC 函数的相关应用

    关于 CreateCompatibleDC 函数的用法的说明如下: Windows不允许程序员直接访问硬件,它对屏幕的操作是通过环境设备,也就是DC来完成的.屏幕上的每一个窗口都对应一个DC,可以把D ...

  2. VC API常用函数简单例子大全(1-89)

    第一个:FindWindow根据窗口类名或窗口标题名来获得窗口的句柄,该函数返回窗口的句柄 函数的定义:HWND WINAPI FindWindow(LPCSTR lpClassName ,LPCST ...

  3. Windows.h 常用API函数【转】

    转自:https://blog.csdn.net/farmwang/article/details/50603608 http://www.vbgood.com/api.html http://hi. ...

  4. CreateCompatibleDC 解释

    函数功能:该函数创建一个与指定设备兼容的内存设备上下文环境(DC). 函数原型:HDC CreateCompatibleDC(HDC hdc): 参数: hdc:现有设备上下文环境的句柄,如果该句柄为 ...

  5. CreateCompatibleDC(HDC hdc);

    函数功能:该函数创建一个与指定设备兼容的内存设备上下文环境(DC). 函数原型:HDC CreateCompatibleDC(HDC hdc): 参数: hdc:现有设备上下文环境的句柄,如果该句柄为 ...

  6. 有关CreateCompatibleDC(pdc)的基本讲述

    函数功能:该函数创建一个与指定设备兼容的内存设备上下文环境(DC). 函数原型:HDC CreateCompatibleDC(HDC hdc):     参数:     hdc:现有设备上下文环境的句 ...

  7. CreateCompatibleDC 说明

    该函数创建一个与指定设备兼容的内存设备上下文环境(DC). 原型: HDC CreateCompatibleDC(HDC hdc): 参数: hdc:[in]现有设备上下文环境的句柄,如果该句柄为NU ...

  8. windows常用 API函数

    系统API查询 http://www.vbgood.com/api.html http://hi.baidu.com/3582077/item/9cc3483b581f53c5392ffae3 第一个 ...

  9. MFC GDI 图形设备接口函数

    图形设备接口 图形设备接口(Graphics Device Interface) MFC的四种DC 常用函数 库存的GDI对象: RGB和YUV颜色空间 CColorDialog 颜色选择通用对话框 ...

最新文章

  1. Dockerfile 构建镜像 - 每天5分钟玩转容器技术(13)
  2. PAT乙级-1056. 组合数的和(15)
  3. Tomcat7目录结构详解(非常详细)
  4. exe反编译_反编译Python生成exe软件(Py3-polySML)
  5. 解决 Windows 和 Ubuntu 时间不一致的问题--转载
  6. php通过实现excel导入,php实现excel导入数据
  7. 7. PHP Xhprof
  8. greenplum管理员日常任务
  9. 一步一步asp.net_删除模块设计
  10. 2021年网络空间安全学院预推免面试经验总结
  11. sphinx mysql连表查询_sphinx
  12. Win7 DNS解析不准
  13. ncverilog脚本_NcVerilog_工作学习记录.pdf
  14. satoken+ gateway网关统一鉴权 初版
  15. 7-11 到底是不是太胖了(10 分)
  16. 三星 s4(i9502) android4.4rom 官方,三星I9502刷机包5件套I9502ZNUIOH2安卓5.0.1Rom线刷包
  17. 有关3d引擎优化的一些搜索整理
  18. supervisord
  19. git 版本回退 强推代码
  20. mysql 操作xm_Python操作MySQL数据库实例详解

热门文章

  1. Android7以上的手机通过fiddler抓包
  2. SIGIR 2021 | 推荐系统相关论文分类整理
  3. 论Cardano修仙之路,聊ADA现状分析
  4. 玩游戏用什么轴的机械键盘好_机械键盘轴哪个最适合打游戏
  5. shell sftp 命令大全
  6. (附源码)springboot校园管理系统 毕业设计021104
  7. 3万亿背后 阿里正在造全球通用计算机
  8. 一个登录页面的测试用例(借鉴他人的,方便查阅)
  9. TCP Data Flow and Window Management(1)
  10. CSS设置图像的透明度