设备描述表DC
来源:互联网 发布:别人盗用身份证开淘宝 编辑:程序博客网 时间:2024/05/17 09:24
Win32下获取DC的API函数有:
HDC BeginPaint(HWND hwnd, LPPAINTSTRUCT lpPaint):特定用于WM_PAINT消息
HDC GetDC(HWND hWnd):用于获得hWnd参数所指定窗口的客户区域的HDC。
HDC GetWindowDC(HWND hWnd):返回hWnd参数所指定的窗口的HDC,包括非客户区,如标题栏、菜单、滚动条,以及边框等。hWnd为NULL时,获取整个屏幕的HDC。
MFC对上述HDC对象和Win32函数进行了封装,基类为CDC类。CDC类包含了各种Win32 HDC的全部功能。在MFC下,使用CDC的成员函数进行图形绘制和文字输出。
CDC类有两个成员变量:m_hDC,m_hAttribDC,它们都是Windows设备描述表句柄。CDC的成员函数作输出操作时,使用m_Hdc;要获取设备描述表的属性时,使用m_hAttribDC。在创建一个CDC类实例时,缺省的m_hDC等于m_hAttribDC。
CDC在封装Win32函数SelectObject(HDC hdc,HGDIOBJECT hgdiobject)时,采用了重载技术,即它针对不同的GDI对象,提供了如下名同而参数不同的成员函数:
SelectObject(CPen *pen)//用于选入笔SelectObject(CBitmap* pBitmap)//用于选入位图SelectObject(CRgn *pRgn)//用于选入剪裁区域SelectObject(CBrush *pBrush)//用于选入刷子SelectObject(CFont *pFont)//用于选入字体SelectPalette(CPalette *pPalette,BOOL bForceBackground )//选入调色板到DCRealizePalletter()//实现逻辑调色板到物理调色板的映射
直接使用CDC的例子是内存设备上下文,例如:
CDC dcMem.CreateCompatibleDC(&dc);//创建设备描述表CDC pbmOld = dcMem.SelectObject(&m_bmBall);//更改设备描述表属性//作一些绘制操作dcMem.SelectObject(pbmOld);//恢复设备描述表的属性dcMem.DeleteDC(); //可以不调用,而让析构函数去删除设备描述表
从CDC 派生出四个功能更具体的DC类。继承层次如下图所示:
下面分别讨论这四种设备描述表。
l CCientDC:代表窗口客户区的设备描述表。其构造函数CClientDC(CWnd *pWin)通过::GetDC获取指定窗口的客户区的设备描述表HDC,并且使用成员函数Attach把它和CClientDC对象捆绑在一起;其析构函数使用成员函数Detach把设备描述表句柄HDC分离出来,并调用::ReleaseDC释放设备描述表HDC。
l CPaintDC:仅仅用于响应WM_PAINT消息时绘制窗口,因为它的构造函数调用了::BeginPaint获取设备描述表HDC,并且使用成员函数Attach把它和CPaintDC对象捆绑在一起;析构函数使用成员函数Detach把设备描述表句柄HDC分离出来,并调用::EndPaint释放设备描述表HDC,而::BeginPaint和::EndPaint仅仅在响应WM_PAINT时使用。
例如,MFC中CView对WM_PAINT消息的实现方法如下:
void CView::OnPaint(){CPaintDC dc(this);OnPrepareDC(&dc);OnDraw(&dc);}
l CMetaFileDC:用于生成元文件。
CWindowDC:代表整个窗口区(包括非客户区)的设备描述表。其构造函数CWindowDC(CWnd *pWin)通过::GetWindowDC获取指定窗口的客户区的设备描述表HDC,并使用Attach把它和CWindowDC对象捆绑在一起;其析构函数使用Detach把设备描述表HDC分离出来,调用::ReleaseDC释放设备描述表HDC。
- 设备描述表(DC)
- 设备描述表DC
- 设备描述表(DC)
- DC设备描述符表
- 图形设备接口(GDI)与设备描述表(DC)
- 图形设备接口(GDI)与设备描述表(DC)
- 设备上下文DC(又称设备描述表)
- DC---DeviceContext 中文翻译为设备上下文或者设备描述表
- GDI编程 之二、设备描述表DC
- MFC之设备描述表DC、画笔Pen、画刷Brush
- 关于设备描述表(DC)的详解
- DC设备上下文的举例描述
- MFC中设备描述符DC,CDC,HDC,CClientDC总结
- 单文档视图内存DC画图时不同的类中获得的设备描述表是不一样的
- MFC学习笔记.day02续-CDC类,绘图区域,CPen画笔,画刷 CBrush,DC设备描述表
- 设备描述表(设备环境)
- 设备描述表
- 关于设备描述表
- 在android的状态栏(statusbar)中增加menu,home和back快捷键的方法
- GDI编程
- mysql存储过程
- 【windows--进程和线程】多线程死锁
- Ubuntu下Eclipse里无法创建AVD!!
- 设备描述表DC
- ico生成工具
- 服务器虚拟机管理经验记载
- SQL模版(简练些,用着方便)
- 关于函数的可重入和递归
- Hibernate查询重要笔记 - HQL总结 数据库各种查询宝典 大总结
- 设置铃声
- 实现登录时间过期后,下次登录时跳转到上次会话最后一次访问的页面
- Sofia2.0项目功能问题集