OnLButtonDown与设备描述表

1、解释一下鼠标左键单击的两个参数OnLButtonDown(UINT nFlags, CPoint point) :

nFlags 表示控制键状态(包括 ctrl,shift,鼠标左、中、右 共5个键的状态)
point表示鼠标坐标。(相对于当前窗口而言的坐标)

2、设备描述表概念及使用


1设备描述表概述
    当Windows要在显示器或其他设备上绘制图形或文本时,其不像DOS系统把图像和文本直接输出到硬件,而是使用一个设备描述表来替代硬件设备的逻辑表示。

    设备描述表(Device Context, 缩写为DC)也称设备上下文或设备环境。简单来说,就是一种包含各种绘图属性(字体,颜色)和方法(绘图函数)的数据结构。设备描述表定义了设备,绘图工具和画图信息,其不仅可以绘制各种图形,还可以确定在应用窗口中绘制图形的方式和图形的样式。

说明:Windows所有的绘制操作及图形输出都必须通过设备描述表这个虚拟用户工作区来进行。用户在绘制之前,必须获取绘制窗口区域的一个设备环境DC,接着才能进行GDI函数的调用,执行适合与设备环境的命令。

2获取设备描述表
    在窗口绘图之前必须首先获取窗口的设备描述表。若没有设备描述表。任何绘图函数都无法工作。Windows不允许直接访问显示设备,儿必须通过Windows返回的设备描述表句柄与显示设备通信。

    一般来说有三种方式获取对应的DC:

2.1使用GetDC()函数
    如果Windows应用程序的绘图操作不是有WM_PAINT消息驱动,就需要调用GetDC()函数来进行获取。其常用显示是CWnd类的成员函数,格式如下:

    CDC * GetDC();

    该函数用于获取窗口工作区的显示器设备描述表,其不带任何参数。如果函数条用成功,则返回标识CWnd客户区的设备环境,否则返回NULL。

说明:在完成绘图之后,用GetDC函数获取的设备描述表必须通过ReleaseDC函数来释放。

Demo:

结果:

2.2使用BeginPaint()函数
    Windows应用程序响应WM_PAINT消息进行图形刷新时,会通过调用BeginPaint()函数来获取DC。其常用的形式是CWnd类的成员函数,格式如下:

    CDC * BeginPaiint(LPPAINTSTRUCT lpPaint);

    该函数只有一个参数,就是指向结构PAINTSTRUCT变量的指针。系统无论调用哪种形式的BeginPaint函数,都需要填写PAINTSTRUCT结构以标识需要刷新的无效矩形。只有在响应WM_PAINT消息时才调用BeginPaint函数,但是在返回处理消息的结果之前,必须调用EndPaint函数来释放资源。

Demo:

结果:

2.3直接构造CDC对象
      该方法用声明一个CDC类或其派生类对象的方式来获取,也就是使用比较简单的一种方法。构造方法如下:

    CClientdc dc(CWnd *);

    此时构造的是一个对象。这种方法实际上是间接使用了GetDC()成员函数。因为当一个C++类声明一个对象时,系统会自动调用该类的构造函数,而在CClient类的构造函数中就调用GetDC()函数。当这个对象被释放时,又会自动调用该类的析构函数,在析构函数中,则调用ReleaseDC()函数来释放设备描述表。

Demo:

结果:

DEMO下载CSDN:http://download.csdn.net/detail/u012377333/9619046


--------------------- 
作者:一枪尽骚丶魂 
来源:CSDN 
原文:https://blog.csdn.net/u012377333/article/details/52399937 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值