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 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(OnLButtonDown与设备描述表)