逻辑坐标和设备坐标
映射模式

1.2.2 映射模式/////////////////////////////////////////////////1.2.2 映射模式样小为800*600时,每逻辑英寸包含的屏幕像素数为96,而打印机则需要多出好几倍的点数才能到达同样的逻辑尺寸。
例如:HP打印机每逻辑英寸包含的打印机点数为600,也就是说打印机的清晰度比屏幕要高很多。
这样的后果就是在屏幕上显示出来的满屏幕的图像在打印出来的纸上却只有一点点,怎么解决这个问题呢?一种简单的方法就是转换坐标映射方式,使得打印时采用的坐标比例比显示时采用的坐标比例相应地大若干倍.映射模式的意思是在屏幕或者打印机上绘图的时候,可以使用英寸或者毫米作为单位,这样更加直观.这其中要注意设备单位和逻辑单位的区别:逻辑单位是传递给绘图函数的x和y值,它们可以表示英寸和毫米,而设备单位是x和y在屏幕上的像素数,或是打印机上的点阵数。
单击鼠标以设备单位返回。
如果想知道鼠标单击位图的什么位置,需要将设备单位转化为逻辑单位。
表1-5所示是可用的映射模式。
映射模式逻辑单位MM_TEXT 一个像素MM_LOMETRIC 0.1毫米MM_HIMETRIC 0.01毫米MM_LOENGLISH 0.01英寸MM_HIENGLISH 0.001英寸MM_TWIPS 1/1440英寸MM_ISOTROPIC 用户定义的值,但是x和y方向相等MM_ANISOTROPIC 用户定义的值,但是x和yy方向任意映射模式通过设备环境类的一个成员函数SetMapMode()来设置.只要把上述标志当作参数传入函数即可.设置映射模式后,传给任何绘图函数的坐标值都通过GDI内部的映射机制转换成设备坐标.如果把映射模式设置为MM_LOENGLISH,然后向绘图函数传递一个100的逻辑单位值,映射模式知道用户实际想要的是100*0.1mm,也就是1cm。
映射模式MM_ISOTROPIC和MM_ANISOTROPIC允许改变比例因子和原点,使用这些模式改变窗口大小时,绘制的内容也会改变大小。
EasyX指导手册

EasyX指导手册制作人:jianxiawzx一、基本概念1.1颜色EasyX使用24bit真彩色,不再支持调色板模式。
表示颜色有以下几种办法:1.用预定义颜色常量,如下:常量值颜色常量值颜色BLACK 0 黑DARKGRAY 0x545454 深灰BLUE 0xA80000 蓝LIGHTBLUE 0xFC5454 亮蓝GREEN 0x00A800 绿LIGHTGREEN 0x54FC54 亮绿CYAN 0xA8A800 青LIGHTCYAN 0xFCFC54 亮青RED 0x0000A8 红LIGHTRED 0x5454FC 亮红MAGENTA 0xA800A8 紫LIGHTMAGENTA 0xFC54FC 亮紫BROWN 0x0054A8 棕YELLOW 0x54FCFC 黄LIGHTGRAY 0xA8A8A8 浅灰WHITE 0xFCFCFC 白2.用16进制的颜色表示,形式为:0xbbggrr(bb=蓝,gg=绿,rr=红)3.用RGB宏合成颜色。
详见RGB。
4.用HSLtoRGB、HSVtoRGB转换其他色彩模型到RGB颜色。
详见HSLtoRGB、HSVtoRGB。
示例:以下是部分设置前景色的方法:setcolor(0xff0000);setcolor(BLUE);setcolor(RGB(0,0,255));setcolor(HSLtoRGB(240,1,0.5));1.2坐标在EasyX中,坐标分两种:逻辑坐标和物理坐标。
逻辑坐标逻辑坐标是在程序中用于绘图的坐标体系。
坐标默认的原点在屏幕的左上角,X轴向右为正,Y轴向下为正,度量单位是象素。
坐标原点可以通过setorigin()函数修改;坐标轴方向可以通过setaspectratio()函数修改;缩放比例可以通过setaspectratio()函数修改。
在本手册中,凡是没有注明的坐标,均指逻辑坐标。
物理坐标物理坐标是描述设备的坐标体系。
VC++绘图

PS_DASHDOTDOT
含义 划线,即为虚 线 点划线 双点划线 点线
画笔风格 PS_INSIDEFRAME PS_NULL PS_SOLID
含义 在边界区域内实笔画线 空画笔 实线
PS_DOT
画笔对象初始化后,就可以调用CDC的成员函数SelectObject将画笔选入设备文本对 象。对于画笔,SelectObject的原型为:CPen* SelectObject(CPen* pPen); 其中,参数pPen是指向画笔对象的指针。
选择库存绘图工具
函数原型是:virtual CGdiObject* SelectStockObject(int nIndex); nIndex是所要选入设备文本对象的库存对象代码,对于画刷和画笔,其值 如表3-1所示。 例如,可以使用以下代码选择白色画笔和黑色画刷: pDC->SelectStockObject(WHITE_PEN); pDC->SelectStockObject(BLACK_BRUSH);
第二章 MFC 绘图基础

本章学习目标⏹MFC上机操作步骤⏹MFC绘图方法⏹CDC类的主要绘图成员函数⏹设备上下文的调用和释放⏹双缓冲机制⏹MFC 绘制图形的几种方法本章内容2.1 MFC上机操作步骤2.2 MFC绘图方法2.3 设备上下文的调用与释放2.4 双缓冲机制2.5 MFC绘图的几种方法2.6 本章小结2.1 MFC上机操作步骤微软基类库MFC(microsoft foundation class library,MFC)是以C++形式封装的Windows API (Application Program Interface),包含了200多个已经定义好的常用基类。
在程序设计过程中,一般是通过MFC 调用基类的成员函数来完成设计任务的。
1. 从Windows的开始菜单中启动Microsoft Visual C++ 6.0,如图2-1所示。
图2-1 Visual C++启动菜单2. 在Visual C++集成开发环境中,从File|New菜单命令,弹出New对话框,切换到Projects选项卡。
如图2-2所示。
图2-2 New 对话框3. 在MFC AppWizard-Step1对话框中,选中Single Document单选按钮,其余保持默认值,如图2-3所示。
单击Finish按钮。
图2-3 MFC AppWizard-Step1 对话框4. 弹出New Project Information对话框。
如图2-4所示。
单击OK按钮。
图2-4 New Project Information 对话框5. 完成上述步骤后,Test工程的MFC应用程序框架已经生成。
如图2-5所示。
图2-5 应用程序框架6. 在应用程序框架的ClassView标签页中显示所创建的类和成员函数;在ResourceView标签页板中显示所创建的资源;在FileView标签页中显示源程序文件。
如图2-6所示。
图2-6 应用程序框架的三个标签页显示标签页:从ClassView标签页可以看出,CTestApp是应用的主函数类,用来处理消息。
MFC画板程序教程-图文

MFC画板程序教程-图文第四章屏幕绘图4.1、MFC绘图的基本知识4.1.1、设备描述表(deviceconte某t)的概念绝大多数的Window应用程序都要向不同的输出设备(打印机、屏幕)上绘制文本和图形。
由于Window是一个具有与设备无关性的操作系统,所以任何向屏幕上进行输出的功能都要间接地通过一个叫做设备描述表DC(deviceconte某t)的对象(简称为DC对象)来完成。
用户向设备描述表对象提出输出的要求,然后由Window自己来调用具体输出设备的驱动程序,及完成实际的输出工作。
使用设备描述表带来的最大的好处就是输出格式的一致性,因为输出不再是直接针对具体的设备,而是通过统一格式的设备描述表间接地实现。
设备描述表实际上是一种Window的数据结构,它保存了设备(打印机、屏幕等)的绘图属性和绘图函数。
设备描述表对象就是设备描述表数据结构的一个具体的实例,它提供了一个绘图的环境,所有的绘图工作都要通过它来实现。
MFC提供了不同类型的设备描述表类,每一个类都封装了代表Window设备描述表的句柄(HDC)和函数。
因此,使用MFC获取设备描述表的操作比使用WindowAPI方法容易的多。
围绕设备描述表,MFC还提供了一系列与其配合使用的绘图工具对象,这其中包括:画笔对象、刷子对象以及字体对象等等。
它们的工作流程是这样的:首先对设备描述表进行设置,即获取设备描述表对象;然后选择进行输出所需要的绘图工具;最后用设备描述表对象的输出函数绘制图形。
4.1.2、窗口、客户区和非客户区的概念窗口是Window应用程序基本的操作单元,是其运行及与用户进行交互的基本平台。
屏幕输出的目标一般都是窗口内的客户区,它不包括窗口的边框、水平和垂直滚动条、状态条、工具条、菜单栏和标题栏。
窗口内的客户区是一个万能的输出区域,可以接受无论是图形、文本、位图、还是其他类型的数据(例如OLE对象)。
窗口内除客户区之外的区域即为非客户区。
06图形设备接口GDI基本概念

设备坐标系分为屏幕坐标系、窗口坐标系和客户区坐标系三种相互独立的坐标系。屏幕坐标系以屏幕左上角为原点,一些与整个屏幕有关的函数均采用屏幕坐标,如GetCursorPos()、SetCursorPos()、CreateWindow()、MoveWindow()。弹出式菜单使用的也是屏幕坐标。窗口坐标系以窗口左上角为坐标原点,它包括窗口标题栏、菜单栏和工具栏等范围。客户区坐标系以窗口客户区左上角为原点,主要用于客户区的绘图输出和窗口消息的处理。鼠标消息的坐标参数使用客户区坐标,CDC类绘图成员函数使用与客户区坐标对应的逻辑坐标。
1. GDI的一些基本概念
Windows绘图过程和设备无关性的实现:
GDI处于设备驱动程序的上一层,当程序调用绘图函数时,GDI将绘图命令传送给当前设备的驱动程序,以调用驱动程序提供的接口函数。驱动程序的接口函数将Windows绘图命令转化为设备能够执行的输出命令,实现图形的绘制。不同设备具有不同的驱动程序,设备驱动程序是设备相关的。
如果采用MFC方法编程,MFC提供了不同类型的DC类,每一个类都封装了DC句柄,并且它们的构造函数自动调用获取DC的API函数,析构函数自动调用释放DC的API函数。因此,在程序中通过声明一个MFC设备环境类的对象就自动获取了一个DC,而当该对象被销毁时就自动释放了获取的DC。MFC AppWizard应用程序向导创建的OnDraw()函数自动支持所获取的DC。MFC的DC类包括CDC、CPaintDC、CClientDC、CWindowDC和CMetaFileDC等,其中CDC类是MFC设备环境类的基类,其它的MFC设备环境类都是CDC的派生类。
获取设备环境DC的方法:
在程序中不能直接存取DC数据结构,只能通过系统提供的一系列函数或使用设备环境的句柄HDC来间接地获取或设置设备环境结构中的各项属性,如显示器高度和宽度、支持的颜色数及分辨率等。如果采用SDK方法编程,获取DC的方法有两种:在WM_PAINT消息处理函数中通过调用API函数BeginPaint()获取设备环境,在消息处理函数返回前调用API函数EndPaint()释放设备环境。在其他函数中通过调用API函数GetDC()获取设备环境,调用API函数ReleaseDC()释放设备环境。
EasyX指导手册
EasyX指导手册EasyX指导手册制作人:jianxiawzx一、基本概念1.1颜色EasyX使用24bit真彩色,不再支持调色板模式。
表示颜色有以下几种办法:1.用预定义颜色常量,如下:常量值颜色常量值颜色BLACK 0 黑DARKGRAY 0x545454 深灰BLUE 0xA80000 蓝LIGHTBLUE 0xFC5454 亮蓝GREEN 0x00A800 绿LIGHTGREEN 0x54FC54 亮绿CYAN 0xA8A800 青LIGHTCYAN 0xFCFC54 亮青RED 0x0000A8 红LIGHTRED 0x5454FC 亮红MAGENTA 0xA800A8 紫LIGHTMAGENTA 0xFC54FC 亮紫BROWN 0x0054A8 棕YELLOW 0x54FCFC 黄LIGHTGRAY 0xA8A8A8 浅灰WHITE 0xFCFCFC 白2.用16进制的颜色表示,形式为:0xbbggrr(bb=蓝,gg=绿,rr=红)3.用RGB宏合成颜色。
详见RGB。
4.用HSLtoRGB、HSVtoRGB转换其他色彩模型到RGB颜色。
详见HSLtoRGB、HSVtoRGB。
示例:以下是部分设置前景色的方法:setcolor(0xff0000);setcolor(BLUE);setcolor(RGB(0,0,255));setcolor(HSLtoRGB(240,1,0.5));1.2坐标在EasyX中,坐标分两种:逻辑坐标和物理坐标。
逻辑坐标逻辑坐标是在程序中用于绘图的坐标体系。
坐标默认的原点在屏幕的左上角,X轴向右为正,Y轴向下为正,度量单位是象素。
坐标原点可以通过setorigin()函数修改;坐标轴方向可以通过setaspectratio()函数修改;缩放比例可以通过setaspectratio()函数修改。
在本手册中,凡是没有注明的坐标,均指逻辑坐标。
物理坐标物理坐标是描述设备的坐标体系。
Windows程序设计复习资料(完整答案)
Windows程序设计复习资料(完整答案)⼀、单项选择题:1.WinMain()函数的⼯作。
WinMain()函数是Windows程序的⼊⼝点在WinMain中进⾏:注册窗体类、建⽴窗体、显⽰窗体、更新窗体、建⽴消息循环2.⾮MFC的Windows程序中,不是处理WM_PAINT消息的时候怎样获得客户区的设备环境句柄。
BeginPaint ----------EndPaintGetDC---------------ReleaseDC(成对出现)利⽤GetDC()函数获取设备环境句柄3.句柄的含义。
句柄是⼀个(通常为32位的)⽆符号整数(unsigned int),它代表⼀个内核对象内核对象在应⽤层的表⽰4.在MM_TEXT映射模式下,什么情况下客户坐标和逻辑坐标可能不同。
当窗⼝客户区有滚动条时客户坐标和逻辑坐标可能不同5.Windows程序的控制流程。
Windows程序没有固定的控制流程,事件驱动程序控制流程6.事件驱动、消息驱动的概念。
事件驱动程序设计是⼀种全新的程序设计⽅法,它不是由事件的顺序来控制,⽽是由事件的发⽣来控制,⽽这种事件的发⽣是随机的、不确定的,并没有预定的顺序,这样就允许程序的的⽤户⽤各种合理的顺序来安排程序的流程。
消息是事件到达Windows内部后的称呼7.对话框、控件的作⽤。
对话框是程序与⽤户之间进⾏交互,接收⽤户输⼊、并把数据显⽰出来的⼀个窗⼝;控件是⽤户可与之交互以输⼊或操作数据的对象。
控件通常出现在对话框中或⼯具栏上。
8.MFC中怎样处理WM_PAINT消息。
在OnDraw()函数中处理该消息9.GetMessage()函数在什么情况下返回0,从⽽导致消息循环终⽌,程序结束。
在接收到WM_QUIT消息时返回010.Windows中,应⽤程序的输出是怎样进⾏的。
通过设备描述表DC(Device Context)来进⾏应⽤程序与物理设备之间的交互11.MFC中,⼤多数类的基类都是什么。
VC++考试试题
VC++考试试题VC++复习题选择题1. 下列关键字中哪一个不是用于类的访问控制的(B)A.public B. friend C. private D. protected2. 以下四个特性中哪一个不属于面向对象的三大特性(C)A.封装性 B. 多态性 C. 抽象性 D. 继承性3.管理MFC应用程序(A)A. CWinAPPB. CmainFrameC. CDoucumentD. CView4. 关于构造函数,下列说法不正确的是(A)A. 一个类中有且仅有一个构造函数B. 构造函数在说明类变量时被自动执行C. 构造函数没有返回值类型D. 类中的构造函数的函数名与该类的类名必须同名5.关于析构函数,下列说法不正确的是(C)A. 类中有且仅有一个析构函数B. 析构函数可以没有形参C. 析构函数没有返回值类型D.析构函数在对象消失时被自动执行6. 下列类中不属于MFC框架基本类的时(D)A. CWinAppB. CFrameWndC. CViewD. CObject7. 下列选项中哪一个不是命令消息的产生途径(C)A. 选择菜单B. 单击工具栏C. 点击对话框的按钮D. 程序产生命令8. 下列关于构造函数的描述中,错误的是(D)A. 构造函数可以设置默认参数B. 构造函数在定义类对象时自动执行C. 默认构造函数可以没有D. 构造函数不可以重载9. 当在使用类模板时,类模板本身被实例化成了一个具体的(D)A. 对象B. 实例C. 模板类D. 类10. 以下四个关于类的访问控制的描述哪一个是错误的(D)A. 子类不能访问其父类的私有数据成员和成员函数B. 子类的对象不能访问其父类的保护数据成员或者成员函数C. 类的对象不能访问类保护数据成员或者成员函数D. 类的成员函数不能访问类中的私有数据11.下面有关重载函数中说法正确的(C)A. 重载函数必须有不同的返回值类型B. 重载函数形参个数必须不同C. 重载函数必须有不同的形参列表D. 重载函数名可以不同12.一个视图对象能连接()文档对象,一个文档对象能连接(D)视图对象。
滚动窗口
如何解决
在窗口重绘时,会先调用OnPrepareDC函数,调整显示上 下文的属性,将视口的原点设置为了(0,-150),然后GDI 函数用逻辑坐标点(680,540)绘制图形,被Windows转换为
设备坐标点(680,390),和原先显示图形时的设备点是一
样的,当然图形就还在原先的地方显示出来。
OnPrepareDC的功能:根据滚动窗口的位 置来调整视口的原点。
• 窗口(逻辑)坐标转换为视口(设备)坐标的两个公式: xViewport = xWindow-xWinOrg+xViewOrg yViewport = yWindow-yWinOrg+yViewOrg • 视口(设备)坐标转换为窗口(逻辑)坐标的两个公式: xWindow = xViewport-xViewOrg+xWinOrg yWindow = yViewport-yViewOrg+yWinOrg
滚动窗口
窗口具有滚动功能
(1) 基类要从CScrollView派生,在已有工程上添加滚动功 能,可采用替换将CView换为CScrollView。 (2)要设置滚动的大小,还有点击箭头滚动的数量,以及点 击滚动栏空白的地方滚动的数量 。通过SetScrollSizes。 这个函数到底在哪调用合适呢? 当然是窗口创建之后,可以利用虚函数OnInitialUpdate, 该函数在OnDraw前调用。我们经常会在窗口创建之后做一 些初始化工作,就可以放在这个函数内,因为它是窗口完 全创建之后第一个调用的函数。所以利用这个特点,可进 行一些初始化工作。
默认转换
• 设备空间到物理设备(客户区、桌面或打印机)的转换结果 总是一对一的;即设备空间的一个单位总是与客户区、桌 面、或打印机上的一个单位相对应。这一转换的唯一用途 是平移。无论窗口移到桌面的什么位置,它永远确保输出 能够正确无误地出现在窗口上。 • 默认转换的一个独特之处是设备空间和应用程序窗口的y 轴方向。在默认的状态下,y轴正向朝下,负y方向朝上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
逻辑坐标和设备坐标
在Windows中,文档坐标系称作逻辑坐标系,视图坐标系称为设备坐标系。它们之间的关
系如下图所示:
逻辑坐标按照坐标设置方式(又成为映射模式)可分为8种,它们在坐标上的特性如下表所
示:
映射模式 逻辑单位 x递增方向 y递增方向
MM_TEXT
像素 向右 向下
MM_LOMETRIC 0.1mm
向右 向上
MM_HIMETRIC 0.01mm
向右 向上
MM_LOENGLISH 0.01inch
向右 向上
MM_HIENGLISH 0.001inch
向右 向上
MM_TWIPS 1/1440inch
向右 向上
MM_ISOTROPIC
可调整 (x=y) 可选择 可选择
MM_ANISOTROPIC
可调整(x!=y) 可选择 可选择
我们一般使用的映射模式是MM_TEXT,它也是缺省设置。在该模式下,坐标原点在工作区
左上角,而x坐标值是向右递增,y坐标值是向下递增,单位值1代表一个像素。要设置映
射模式,可以调用CDC::SetMapMode()函数。
CClientDC dc;
nPreMapMode=dc.SetMapMode(nMapMode);
它将映射模式设置为nMapMode,并返回前一次的映射模式nPreMapMode,GetMapMode
可取得当前的映射模式:
CClientDC dc;
nMapMode=dc.GetMapMode();
MFC绘图函数都使用逻辑坐标作为位置参数。比如
CString str(“Hello,world!”);
dc.TextOut(10,10,str,str.GetLength());
这里的(10,10)是逻辑坐标而不是像素点数(只是在缺省映射模式MM_TEXT下,正好与像素
点相对应),在输出时GDI函数会将逻辑坐标(10,10)依据当前映射模式转化为“设备坐标”,
然后将文字输出在屏幕上。
设备坐标以像素点为单位,且x轴坐标值向右递增,y轴坐标值向下递增,但原点(0,0)位置
却不限定在工作区的左上角。依据设备坐标的原点和用途,可以将Windows下使用的设备
坐标系统分为三种:工作区坐标系统,窗口坐标系统和屏幕坐标系统。
(1)工作区坐标系统:
工作区坐标系统是最常见的坐标系统,它以窗口客户区左上角为原点(0,0),主要用于窗口客
户区绘图输出以及处理窗口的一些消息。鼠标消息WM_LBUTTONDOWN、WM_MOUSEMOVE
传给框架的消息参数以及CDC一些用于绘图的成员都是使用工作区坐标。
(2)屏幕坐标系统:
屏幕坐标系统是另一类常用的坐标系统,以屏幕左上角为原点(0,0)。以
CreateDC(“DISPLAY” , ...)或GetDC(NULL)取得设备上下文时,该上下文使用的坐标系就是屏幕
坐标系。
一些与窗口的工作区不相关的函数都是以屏幕坐标为单位,例如设置和取得光标位置的函数
SetCursorPos()和GetCursorPos();由于光标可以在任何一个窗口之间移动,它不属于任何一
个单一的窗口,因此使用屏幕坐标。弹出式菜单使用的也是屏幕坐标。另外,CreateWindow、
MoveWindow、SetWindowPlacement()等函数用于设置窗口相对于屏幕的位置,使用的也是
屏幕坐标系统。
(3)窗口坐标系统:
窗口坐标系统以窗口左上角为坐标原点,它包含了窗口控制菜单、标题栏等内容。一般情况
下很少在窗口标题栏上绘图,因此这种坐标系统很少使用。
三类设备坐标系统关系如下图所示:
MFC提供ClientToScreen()、ScreenToClient()两个函数用于完成工作区坐标和屏幕坐标之间的
转换工作。
void ScreenToClient( LPPOINT lpPoint ) const;
void ScreenToClient( LPRECT lpRect ) const;
void ClientToScreen( LPPOINT lpPoint ) const;
void ClientToScreen( LPRECT lpRect ) const;
其实,我们在前面介绍弹出式菜单时已经使用了ClientToScreen函数。在那里,由于弹出式
菜单使用的是屏幕坐标,因此当处理弹出式菜单快捷键shift+F10时,如果要在窗口左上角
(5,5)处显示快捷菜单,就必须先调用ClientToScreen函数将客户区坐标(5,5)转化为屏幕坐
标。
CRect rect;
GetClientRect(rect);
ClientToScreen(rect);
point = rect.TopLeft();
point.Offset(5, 5);
在视图滚动后,如果用户在视图中单击鼠标,那么会得到鼠标位置的设备(视图)坐标。在
使用这个数据处理文档(比如画点或画线)时,需要把它转化为文档坐标。这是因为利用
MFC绘图时,所有传递给MFC作图的坐标都是逻辑坐标。当调用MFC绘图函数绘图时,
Windows自动将逻辑坐标转换成设备坐标,然后再绘图。设备上下文类CDC提供了两个成
员函数LPToDP和DPToLP完成逻辑坐标和设备坐标之间的转换工作。如其名字所示那样,
LPToDP将逻辑坐标转换为设备坐标,DPToLP将设备坐标转换为逻辑坐标。
void LPtoDP( LPPOINT lpPoints, int nCount = 1 ) const;
void LPtoDP( LPRECT lpRect ) const;
void LPtoDP( LPSIZE lpSize ) const;
void DPtoLP( LPPOINT lpPoints, int nCount = 1 ) const;
void DPtoLP( LPRECT lpRect ) const;
void DPtoLP( LPSIZE lpSize ) const;