MFC-设备描述表-路径层
- 格式:doc
- 大小:32.50 KB
- 文档页数:3
1.MFC概述1.MFC是一个编程框架MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。
因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。
Microsoft Visual C++提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。
1.封装构成MFC框架的是MFC类库。
MFC类库是C++类库。
这些类或者封装了Win32应用程序编程接口,或者封装了应用程序的概念,或者封装了OLE特性,或者封装了ODBC和DAO数据访问的功能,等等,分述如下。
(1)对Win32应用程序编程接口的封装用一个C++ Object来包装一个Windows Object。
例如:class CWnd是一个C++ window object,它把Windows window(HWND)和Windows window有关的API函数封装在C++ window object的成员函数内,后者的成员变量m_hWnd就是前者的窗口句柄。
(2)对应用程序概念的封装使用SDK编写Windows应用程序时,总要定义窗口过程,登记Windows Class,创建窗口,等等。
MFC把许多类似的处理封装起来,替程序员完成这些工作。
另外,MFC提出了以文档-视图为中心的编程模式,MFC类库封装了对它的支持。
文档是用户操作的数据对象,视图是数据操作的窗口,用户通过它处理、查看数据。
(3)对COM/OLE特性的封装OLE建立在COM模型之上,由于支持OLE的应用程序必须实现一系列的接口(Interface),因而相当繁琐。
MFC中的DC、CDC、HDC、句柄、设备上下文究竟是什么意思?在MFC程序中,我们并不经常直接调用Windows API,而是从MFC类创建对象并调用属于这些对象的成员函数.也就是说MFC封装了Windows API 你说你喜欢C++而MFC换一种说法就是一个用C++写的一个函数库然后你来调用只不过这个类不是你写的MFC提供数百个类,最重要的、也是编写任何VC++应用程序都必不可少的两个类CWinApp和CFrameWnd,这两个类是编写复杂庞大应用程序的基石。
1>封装特性:构成MFC框架的是MFC类库而MFC类库又是C++的一个类库。
这些类封装WIN32应用程序编程接口,OLE(Object Link Embed 对象链接嵌入)特性,ODBC和DAO数据访问的功能。
2>继承特性:MFC抽象出了众多类的共同特性,并设计出一些基类作为实现其他类的基础,这些类中最重要的类是CObject类和CCmdTarget类,程序员可以从适当的MFC类中派生出自己的类,实现特定的功能达到编程的目的。
3>虚拟和消息映射:MFC是以C++为基础,当然支持虚函数,但作为一个编程框架必须要解决的是效率问题:如果MFC仅仅通过虚函数来支持动态约束必然会产生大量的虚函数表这样编程框架过于臃肿而且消耗更多的内存。
但是MFC建立了消息映射机制这样降低了内存的使用却大大提高了效率消息映射是一个将消息和成员函数相互关联的表,当应用程序的框架窗口接收到一个消息时,MFC将搜索该窗口的消息映射,如果存在一个处理消息的处理程序,那么就调用该处理程序.它通过宏来实现消息到成员函数的映射,而且这些函数不必是虚拟的成员函数,这样不需要为消息映射函数生成一个很大的虚拟函数表(V表),节省内存。
MFC消息映射机制:将消息与消息处理函数联系起来,形成一一对应的机制。
消息映射宏声明:DECLARE_MESSAGE_MAP定义:BEGIN_MESSAGE_MAPON_COMMANDON_CONTROLON_MESSAGEEND_MESSAGE_MAPMFC主要组成部分:类、宏和全局函数。
1.MFC概述1.MFC是一个编程框架MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。
因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。
Microsoft Visual C++提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。
1.封装构成MFC框架的是MFC类库。
MFC类库是C++类库。
这些类或者封装了Win32应用程序编程接口,或者封装了应用程序的概念,或者封装了OLE特性,或者封装了ODBC和DAO数据访问的功能,等等,分述如下。
(1)对Win32应用程序编程接口的封装用一个C++ Object来包装一个Windows Object。
例如:class CWnd是一个C++ window object,它把Windows window(HWND)和Windows window有关的API函数封装在C++ window object的成员函数内,后者的成员变量m_hWnd就是前者的窗口句柄。
(2)对应用程序概念的封装使用SDK编写Windows应用程序时,总要定义窗口过程,登记Windows Class,创建窗口,等等。
MFC把许多类似的处理封装起来,替程序员完成这些工作。
另外,MFC提出了以文档-视图为中心的编程模式,MFC类库封装了对它的支持。
文档是用户操作的数据对象,视图是数据操作的窗口,用户通过它处理、查看数据。
(3)对COM/OLE特性的封装OLE建立在COM模型之上,由于支持OLE的应用程序必须实现一系列的接口(Interface),因而相当繁琐。
第一部分:MFC导论Visual C++ 不仅仅是一个编译器。
它是一个全面的应用程序开发环境,使用它你充分利用具有面向对象特性的C++ 来开发出专业级的Windows 应用程序。
为了能充分利用这些特性,你必须理解C++ 程序设计语言。
掌握了C++,你就必须掌握Microsoft 基本类库(MFC)的层次结构。
该层次结构包容了Windows API 中的用户界面部分,并使你能够很容易地以面向对象的方式建立Windows 应用程序。
这种层次结构适用于所有版本的Windows 并彼此兼容。
你用MFC 所建立的代码是完全可移植的。
该教程将向你介绍MFC的基本概念和术语以及事件驱动程序设计方法。
在本节中,你将会输入、编译和运行一个简单的MFC程序。
下一节中将向你详细解释这些代码。
第三部分讨论了M FC控制和如何定制它们。
第四部分将介绍消息映射,你将会处理MFC的事件。
什么是MFC?如果你要建立一个Windows 应用程序,应该如何下手?好的开端是从设计用户界面开始。
首先,你要决定什么样的用户能使用该程序并根据需要来设置相应的用户界面对象。
Windows 用户界面有一些标准的控制,如按钮、菜单、滚动条和列表等,这对那些Windows 用户已经是很熟悉了。
要记住的是,作为程序员必须选择一组控制并决定如何把它们安排到屏幕上。
传统上,你需要在纸上做一下用户界面的草图,直到对各元素感到满意为止。
这对于一些比较小的项目,以及一些大项目的早期原型阶段是可以的。
下一步,是要实现代码。
为任何Windows 平台建立应用程序时,程序员都有两种选择:C或C++。
使用C,程序员是在Windows 应用程序界面( API ) 的水平上编写代码。
该界面是由几百个 C 函数所组成,这些函数在Windows API 参考手册中都有介绍。
对于Windows NT, API 被称为"Win32 API",以区别于其用于Windows 3.1的16位API。
MFC 原理結構說明捷胤工業有限公司總合研究所(JISC)捷胤工業有限公司NEW JEIN Corp .J E I N .C O .L TDMFC 簡介•質流控制器(Mass Flow Controller )簡稱MFC 。
簡易的詮釋MFC 是一種流量與控制閥組的精密組機電組合,其測量方式與一般流量計最大的差別,是在於它是利用熱感溫差非接觸方式測量氣體是在於它是利用熱感溫差、非接觸方式測量氣體之質量流速。
•MFC 應用於I C 工業、真空工業、食品工業、化學工業以及醫療儀器等行業,需要求高精確度、高穩定度及高品質等氣體流量控制,如:蝕刻、物理化學氣相沉積高穩定度來達成其應用物理、化學氣相沉積、高穩定度來達成,其應用之層面乃遍佈高科技產業。
捷胤工業有限公司NEW JEIN Corp .J E I N .C O .L TDMFC 主要結構Connector Zero switch PCB Control valve Mass flow sensor Control valve Intel OutletBypass Block 捷胤工業有限公司NEW JEIN Corp .J E I N .C O.L T DMFC 本體(Block)•製程氣體中許多是有腐蝕性或容易液化的氣體,其與氣體接觸的部份均是化的氣體其與氣體接觸的部份均是以抗腐蝕性強的SUS ‐316L 做為材質,整顆鑄造而成。
捷胤工業有限公司NEW JEIN Corp .J E I N .C O .L T DMFC ‐分流器(Bypass)•分流器位於本體主要流道中間,當氣體進入MFC 內,大約有96%以上氣體流經分流器後匯集到控制閥入口,而其餘小部分則流入流量計的感測器管路內。
Disk bypass Linear flow bypass Mesh bypass Disk bypass Linear flow bypass Mesh bypass捷胤工業有限公司NEW JEIN Corp .J E I N .C O .L T DMFC ‐感測器(Sensor)•MFC 準確度要求頗高,所以感測器元件的準確性非常重要,的心臟可說是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对象)。
窗口内除客户区之外的区域即为非客户区。
附表1 MFC类库层次表附表2 ASCII码表 (0~127)附录3 虚拟键码符号常量十六进制值指定的鼠标或键盘按键VK_LBUTTON 01 鼠标左键VK_RBUTTON 02 鼠标右键VK_CANCEL 03 Control-break 过程VK_MBUTTON 04 鼠标中键?05?07 未定义VK_BACK 08 BACKSPACE 键VK_TAB 09 TAB 键?0A?0B 未定义VK_CLEAR 0C CLEAR 键VK_RETURN 0D ENTER 键?0E?0F 未定义VK_SHIFT 10 SHIFT 键VK_CONTROL 11 CTRL 键VK_MENU 12 ALT 键VK_PAUSE 13 PAUSE 键VK_CAPITAL 14 CAPS LOCK 键?15?19 为 Kanji 系统保留?1A 未定义VK_ESCAPE 1B ESC 键?1C?1F 为 Kanji 系统保留VK_SPACE 20 SPACEBARVK_PRIOR 21 PAGE UP 键VK_NEXT 22 PAGE DOWN 键VK_END 23 END 键VK_HOME 24 HOME 键VK_LEFT 25 LEFT ARROW 键VK_UP 26 UP ARROW 键VK_RIGHT 27 RIGHT ARROW 键VK_DOWN 28 DOWN ARROW 键VK_SELECT 29 SELECT 键?2A 由OEM厂商指定VK_EXECUTE 2B EXECUTE 键VK_SNAPSHOT 2C PRINT SCREEN键(用于Windows 3.0及以后版本)VK_INSERT 2D INS 键VK_DELETE 2E DEL 键VK_HELP 2F HELP 键VK_0 30 0 键VK_1 31 1 键VK_2 32 2 键VK_3 33 3 键VK_4 34 4 键VK_5 35 5 键VK_6 36 6 键VK_7 37 7 键VK_8 38 8 键VK_9 39 9 键?3A?40 未定义VK_A 41 A 键VK_C 43 C 键VK_D 44 D 键VK_E 45 E 键VK_F 46 F 键VK_G 47 G 键VK_H 48 H 键VK_I 49 I 键VK_J 4A J 键VK_K 4B K 键VK_L 4C L 键VK_M 4D M 键VK_N 4E N 键VK_O 4F O 键VK_P 50 P 键VK_Q 51 Q 键VK_R 52 R 键VK_S 53 S 键VK_T 54 T 键VK_U 55 U 键VK_V 56 V 键VK_W 57 W 键VK_X 58 X 键VK_Y 59 Y 键VK_Z 5A Z 键VK_LWIN 5B Left Windows 键 (Microsoft自然键盘) VK_RWIN 5C Right Windows 键 (Microsoft自然键盘) VK_APPS 5D Applications 键 (Microsoft自然键盘) ?5E?5F 未定义VK_NUMPAD0 60 数字小键盘上的 0 键VK_NUMPAD1 61 数字小键盘上的 1 键VK_NUMPAD2 62 数字小键盘上的 2 键VK_NUMPAD3 63 数字小键盘上的 3 键VK_NUMPAD4 64 数字小键盘上的 4 键VK_NUMPAD5 65 数字小键盘上的 5 键VK_NUMPAD6 66 数字小键盘上的 6 键VK_NUMPAD7 67 数字小键盘上的 7 键VK_NUMPAD8 68 数字小键盘上的 8 键VK_NUMPAD9 69 数字小键盘上的 9 键VK_MULTIPLY 6A Multiply 键VK_SEPARATOR 6C Separator 键VK_SUBTRACT 6D Subtract 键VK_DECIMAL 6E Decimal 键VK_DIVIDE 6F Divide 键VK_F1 70 F1 键VK_F2 71 F2 键VK_F3 72 F3 键VK_F4 73 F4 键VK_F5 74 F5 键VK_F6 75 F6 键VK_F7 76 F7 键VK_F8 77 F8 键VK_F9 78 F9 键VK_F10 79 F10 键VK_F11 7A F11 键VK_F12 7B F12 键VK_F13 7C F13 键VK_F14 7D F14 键VK_F15 7E F15 键VK_F16 7F F16 键VK_F17 80H F17 键VK_F18 81H F18 键VK_F19 82H F19 键VK_F20 83H F20 键VK_F21 84H F21 键VK_F22 85H F22 键VK_F23 86H F23 键VK_F24 87H F24 键?88?8F 未指定VK_NUMLOCK 90 NUM LOCK 键VK_SCROLL 91 SCROLL LOCK 键?92?B9 未指定?BA?C0 由 OEM 厂商指定?C1?DA 未指定?DB?E4 由 OEM 厂商指定?E5 未指定?E6 由 OEM 厂商指定?E7?E8 未指定?E9?F5 由 OEM 厂商指定VK_ATTN F6 Attn 键VK_CRSEL F7 CrSel 键VK_EXSEL F8 ExSel 键VK_EREOF F9 Erase EOF 键VK_PLAY FA Play 键VK_ZOOM FB Zoom 键VK_NONAME FC 为将来使用保留VK_PA1 FD PA1 键VK_OEM_CLEAR FE Clear 键。
mfc类库结构MFC类库结构是一种用于开发Windows应用程序的框架,它提供了一组丰富的类和函数,使开发者能够更加简单和高效地创建和管理图形界面、处理用户输入、进行数据操作等功能。
下面将从不同角度对MFC类库结构进行描述。
一、概述MFC(Microsoft Foundation Classes)类库是由微软公司开发的一套面向对象的C++类库,用于开发Windows应用程序。
它建立在Windows API之上,提供了一些高级功能和封装,使开发者能够更加方便地进行应用程序开发。
二、类库结构MFC类库结构可以分为三层,分别是应用程序层、框架层和基础层。
1. 应用程序层应用程序层是开发者自定义的代码部分,包含了应用程序的业务逻辑和界面设计。
开发者可以通过继承CWinApp类来创建应用程序对象,并在其中处理应用程序的初始化、消息循环等操作。
在应用程序层中,开发者可以创建对话框、窗口等图形界面元素,并通过MFC提供的类来处理用户输入、响应事件等。
2. 框架层框架层是MFC类库提供的核心部分,包含了一些基础类和框架类。
其中,CWinApp类是应用程序对象的基类,CWinThread类用于管理线程,CFrameWnd类用于创建主窗口,CDocument类用于管理文档,CView类用于显示文档内容等。
开发者可以通过继承这些类来扩展和定制应用程序的功能。
3. 基础层基础层是MFC类库提供的最底层的类和函数,包含了与操作系统交互的接口和一些基础功能的实现。
这些类和函数主要是对Windows API的封装和扩展,如CWnd类封装了窗口的基本功能,CObject类是所有MFC类的基类,CPoint类和CRect类用于表示坐标和矩形区域等。
三、优点和应用范围MFC类库结构的优点在于它提供了一套完整的开发框架,使开发者能够更加高效地进行Windows应用程序的开发。
它具有以下几个特点:1. 高度封装:MFC类库对Windows API进行了封装,提供了一系列易于使用的类和函数,使开发者能够更加方便地进行应用程序开发。
MFC各种控件属性介绍MFC(Microsoft Foundation Classes)是一组用于开发Windows应用程序的C++类库。
它提供了许多用于创建GUI(Graphical User Interface)界面的控件,这些控件可以用于显示和操作数据。
下面是对一些常见的MFC控件属性的介绍:1. Button(按钮)控件:Button控件用于触发事件或执行一些操作。
它有几个常用的属性,如按钮文本(Caption),按钮样式(Style),按钮位置(Position)等。
样式属性可以设置按钮的外观(如3D效果、边框等),并可以选择不同的按钮类型(如radio、checkbox等)。
3. List Box(列表框)控件:List Box控件用于显示一系列列表项。
它有属性用于设置列表框的大小(Size),位置(Position),以及显示模式(SelectionMode)等。
其他属性还包括排序(Sort),可见项数(VisibleItems)以及是否多选(Multiselect)等。
5. Check Box(复选框)控件:Check Box控件用于允许用户选择一个或多个选项。
它有属性用于设置复选框的大小(Size),位置(Position),选择状态(Checked),以及显示文字(Caption)等。
6. Radio Button(单选按钮)控件:Radio Button控件用于只允许用户从一组选项中选择一个。
它有属性用于设置单选按钮的大小(Size),位置(Position),选择状态(Checked),以及显示文字(Caption)等。
一组互斥的单选按钮应该放在同一个命名容器内。
7. Slider(滑动条)控件:Slider控件用于接受用户通过滑动操作选择一个数值。
它有属性用于设置滑动条的大小(Size),位置(Position),范围(Range),以及当前值(Value)等。
其他属性还包括方向(Orientation)和是否显示刻度线(TickMarks)等。
1.MFC概述1.MFC是一个编程框架MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。
因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。
Microsoft Visual C++提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。
1.封装构成MFC框架的是MFC类库。
MFC类库是C++类库。
这些类或者封装了Win32应用程序编程接口,或者封装了应用程序的概念,或者封装了OLE特性,或者封装了ODBC和DAO数据访问的功能,等等,分述如下。
(1)对Win32应用程序编程接口的封装用一个C++ Object来包装一个Windows Object。
例如:class CWnd是一个C++ window object,它把Windows window(HWND)和Windows window有关的API函数封装在C++ window object的成员函数内,后者的成员变量m_hWnd就是前者的窗口句柄。
(2)对应用程序概念的封装使用SDK编写Windows应用程序时,总要定义窗口过程,登记Windows Class,创建窗口,等等。
MFC把许多类似的处理封装起来,替程序员完成这些工作。
另外,MFC提出了以文档-视图为中心的编程模式,MFC类库封装了对它的支持。
文档是用户操作的数据对象,视图是数据操作的窗口,用户通过它处理、查看数据。
(3)对COM/OLE特性的封装OLE建立在COM模型之上,由于支持OLE的应用程序必须实现一系列的接口(Interface),因而相当繁琐。
MFC常用类介绍(一)C++学习2010-06-27 11:43:05 阅读332 评论0 字号:大中小订阅◆CStaticCObject└CCmdTarget└CWnd└CStaticCStatic类提供了一个Windows静态控件的性能。
一个静态控件用来显示一个文本字符串,框,矩形,图标,光标,位图,或增强的图元文件。
它可以被用来作为标签,框,或用来分隔其它的控件。
一个静态控件不接收输入,也不提供输出;但是,如果它是用SS_NOTIFY风格创建的,则它可以通知其父有关设备点击的消息。
创建一个静态控件分两步。
首先,调用构造函数来构造此CStatic对象,然后调用Create成员函数来创建此静态控件并将它与该CStatic对象连接。
如果你是在一个对话框中创建了一个静态控件(通过一个对话框资源),则当用户关闭这个对话框时,此CStatic对象被自动销毁。
如果你是在一个窗口中创建了一个CStatic对象,则必须由你来销毁它。
在一个窗口的堆栈中创建的CStatic对象将自动被销毁。
如果你是使用new函数在堆中创建CStatic对象,则当你使用完后,必须调用delete来销毁这个CStatic 对象。
#include<afxwin.h>请参阅:CWnd,CButton,CComboBox,CEdit,CListBox,CScrollBar,CDialogCStatic类成员构造初始化操作符◆CEditCObject└CCmdTarget└CWnd└CEditCEdit类提供了Windows编辑控件中的功能。
编辑控件是一个子窗口矩形,用户可以向其中输入文本。
可以通过对话模板或直接从代码中创建一个编辑控件。
在两种情形下,首先调用CEdit构造程序构造CEdit 对象,再调用Create成员函数创建Windows编辑控件并将其与CEdit对象连接。
构造在CEdit的派生类中可以单步实现。
为派生类编写构造程序并从构造程序中调用Create。
MFC中路径层
在MFC中,路径层主要运用于在窗口中绘图。
学过Photoshop的同学都知道,我们在设计一张海报时,可能会用到多张图片进行合成,而在合成之前是要对每张图片进行各自处理的。
这个时候我们就要给每一张图片定制一个它独有的处理空间---路径层。
在各个独立的空间---路径层上,我们对每张图片进行处理而互相不受影响。
类似地,MFC中,在一块窗口上我们也可以定制多个路径层并在各个路径层上进行绘图或输出字符的操作。
MFC中,我们利用CDC类提供的成员函数BeginPath()和EndPath()这两个函数来实现一个路径层的创建。
(一)BeginPath()
CDC::BeginPath
BOOL BeginPath( );
Return Value
Nonzero if the function is successful; otherwise 0.//如果打开路径层成功则返回值为一个非零值,否则返回0;
Remarks
Opens a path bracket in the device context. After a path bracket is open, an application can begin calling GDI drawing functions to define the points that lie in the path. An application can close an open path bracket by calling the EndPath member function. When an application calls BeginPath, any previous paths are discarded.
//在设备描述表中打开一个路劲层,一个路径层打开后,应用程序就可以调用GDI函数(图形设备接口函数),去设置处在这个路径层中的点,应用程序通过调用EndPath函数将路径层关闭。
当应用程序调用BeginPath的时候,之前的路径就会被弃置不理。
(二)EndPath()
CDC::EndPath
BOOL EndPath( );
Return Value
Nonzero if the function is successful; otherwise 0..//如果关闭路径层成功则返回值为一个非零值,否则返回0;
Remarks
Closes a path bracket and selects the path defined by the bracket into the device context.
//用于关闭一个路径层,并且将由这个路径层定义的路径选入设备描述表当中
在绘图时,如果希望图的某一部分与其他部分分开处理,就可以利用路径层的独立性
(三) SelectClipPath
CDC::SelectClipPath
BOOL SelectClipPath( int nMode );//此函数的作用是将所建立的路径层作为一个剪辑区域,将原来的路径层作为另一个剪辑区域,然后对这两个区域进行取交集、并集的操作得到一个新的剪辑区域,并在这个新的剪辑区域里进行互操作。
Return Value
Nonzero if the function is successful; otherwise 0.//函数成功返回值为非零,否则为0;
Parameters
nMode //函数形参可取如下值
Specifies the way to use the path. The following values are allowed:
//指定使用路径的方式,以下值是可取的
RGN_AND The new clipping region includes the intersection (overlapping areas) of the current clipping region and the current path.
//交集,也就是说,如果在两个剪辑区域里面都有作图的话,最后的效果是只
在剪辑区的交集处显示图形
RGN_COPY The new clipping region is the current path.
//新的剪辑区就是新建路径层上的剪辑区
RGN_DIFF The new clipping region includes the areas of the current clipping region, and those of the current path are excluded.
//新的剪切区是旧的剪切区中除去路径层的部分
RGN_OR The new clipping region includes the union (combined areas) of the current clipping region and the current path.
//新的剪切区是旧的剪切区和路径层的并集
RGN_XOR The new clipping region includes the union of the current clipping region and the current path, but without the overlapping areas.
//新的剪切区是旧的剪切区和路径层的并集,但除去他们的交集部分
Remarks
Selects the current path as a clipping region for the device context, combining the new region with any existing clipping region by using the specified mode. The device context identified must contain a closed path.。