Vc_MFC教程

Vc_MFC教程
Vc_MFC教程

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的OLE类封装了OLE API大量的复杂工作,这些类提供了实现OLE的更高级接口。

(4)对ODBC功能的封装

以少量的能提供与ODBC之间更高级接口的C++类,封装了ODBC API的大量的复杂的工作,提供了一种数据库编程模式。

2.继承

首先,MFC抽象出众多类的共同特性,设计出一些基类作为实现其他类的基础。这些类中,最重要的类是CObject和CCmdTarget。CObject是MFC的根类,绝大多数MFC类是其派生的,包括CCmdTarget。CObject 实现了一些重要的特性,包括动态类信息、动态创建、对象序列化、对程序调试的支持,等等。所有从CObject派生的类都将具备或者可以具备CObject所拥有的特性。CCmdTarget通过封装一些属性和方法,提供了消息处理的架构。MFC中,任何可以处理消息的类都从CCmdTarget派生。

针对每种不同的对象,MFC都设计了一组类对这些对象进行封装,每一组类都有一个基类,从基类派生出众多更具体的类。这些对象包括以下种类:窗口对象,基类是CWnd;应用程序对象,基类是CwinThread;文档对象,基类是Cdocument,等等。

程序员将结合自己的实际,从适当的MFC类中派生出自己的类,实现特定的功能,达到自己的编程目的。

3.虚拟函数和动态约束

MFC以“C++”为基础,自然支持虚拟函数和动态约束。但是作为一个编程框架,有一个问题必须解决:如果仅仅通过虚拟函数来支持动态约束,必然导致虚拟函数表过于臃肿,消耗内存,效率低下。例如,CWnd封装 Windows

窗口对象时,每一条Windows消息对应一个成员函数,这些成员函数为派生类所继承。如果这些函数都设计成虚拟函数,由于数量太多,实现起来不现实。于是,MFC建立了消息映射机制,以一种富有效率、便于使用的手段解决消息处理函数的动态约束问题。

这样,通过虚拟函数和消息映射,MFC类提供了丰富的编程接口。程序员继承基类的同时,把自己实现的虚拟函数和消息处理函数嵌入MFC的编程框架。MFC编程框架将在适当的时候、适当的地方来调用程序的代码。本书将充分的展示MFC调用虚拟函数和消息处理函数的内幕,让读者对MFC的编程接口有清晰的理解。

4.MFC的宏观框架体系

如前所述,MFC实现了对应用程序概念的封装,把类、类的继承、动态约束、类的关系和相互作用等封装起来。这样封装的结果对程序员来说,是一套开发模板(或者说模式)。针对不同的应用和目的,程序员采用不同的模板。例如,SDI应用程序的模板,MDI应用程序的模板,规则DLL应用程序的模板,扩展DLL应用程序的模板,OLE/ACTIVEX应用程序的模板,等等。

这些模板都采用了以文档-视为中心的思想,每一个模板都包含一组特定的类。典型的MDI应用程序的构成将在下一节具体讨论。

为了支持对应用程序概念的封装,MFC内部必须作大量的工作。例如,为了实现消息映射机制,MFC编程框架必须要保证首先得到消息,然后按既定的方法进行处理。又如,为了实现对DLL编程的支持和多线程编程的支持,MFC 内部使用了特别的处理方法,使用模块状态、线程状态等来管理一些重要信息。虽然,这些内部处理对程序员来说是透明的,但是,懂得和理解MFC内部机制有助于写出功能灵活而强大的程序。

总之,MFC封装了Win32 API,OLE API,ODBC API等底层函数的功能,并提供更高一层的接口,简化了Windows编程。同时,MFC支持对底层API的直接调用。

MFC提供了一个Windows应用程序开发模式,对程序的控制主要是由MFC框架完成的,而且MFC也完成了大部分的功能,预定义或实现了许多事件和消息处理,等等。框架或者由其本身处理事件,不依赖程序员的代码;或者调用程序员的代码来处理应用程序特定的事件。

MFC是C++类库,程序员就是通过使用、继承和扩展适当的类来实现特定的目的。例如,继承时,应用程序特定的事件由程序员的派生类来处理,不感兴趣的由基类处理。实现这种功能的基础是C++对继承的支持,对虚拟函数的支持,以及MFC实现的消息映射机制。

2.MDI应用程序的构成

本节解释一个典型的MDI应用程序的构成。

用AppWizard产生一个MDI工程t(无OLE等支持),AppWizard创建了一系

列文件,构成了一个应用程序框架。

这些文件分四类:头文件(.h),

实现文件(.cpp),资源文件(.rc),

模块定义文件(.def),等。

1.构成应用程序

的对象

图1-1解释了该应用程序的结构,

箭头表示信息流向。

从CWinApp、CDocument、CView、

CMDIFrameWnd、CMDIChildWnd类对

应地派生出CTApp、CTDoc、CTView、

CMainFrame、CChildFrame五个类,这五个类的实例分别是应用程序对象、文档对象、视对象、主框架窗口对象和文档边框窗口对象。主框架窗口包含了视窗口、工具条和状态栏。对这些类或者对象解释如下。

(1)应用程序

应用程序类派生于CWinApp。基于框架的应用程序必须有且只有一个应用程序对象,它负责应用程序的初始化、运行和结束。

(2)边框窗口

如果是SDI应用程序,从CFrameWnd类派生边框窗口类,边框窗口的客户子窗口(MDIClient)直接包含视窗口;如果是MDI应用程序,从CMDIFrameWnd 类派生边框窗口类,边框窗口的客户子窗口(MDIClient)直接包含文档边框窗口。

如果要支持工具条、状态栏,则派生的边框窗口类还要添加CToolBar和CStatusBar类型的成员变量,以及在一个OnCreate消息处理函数中初始化这两个控制窗口。

边框窗口用来管理文档边框窗口、视窗口、工具条、菜单、加速键等,协调半模式状态(如上下文的帮助(SHIFT+F1模式)和打印预览)。

(3)文档边框窗口

文档边框窗口类从CMDIChildWnd类派生,MDI应用程序使用文档边框窗口来包含视窗口。

(4)文档

文档类从CDocument类派生,用来管理数据,数据的变化、存取都是通过文档实现的。视窗口通过文档对象来访问和更新数据。

(5)视

视类从CView或它的派生类派生。视和文档联系在一起,在文档和用户之间起中介作用,即视在屏幕上显示文档的内容,并把用户输入转换成对文档的操作。

(6)文档模板

文档模板类一般不需要派生。MDI应用程序使用多文档模板类CMultiDocTemplate;SDI应用程序使用单文档模板类CSingleDocTemplate。

应用程序通过文档模板类对象来管理上述对象(应用程序对象、文档对象、主边框窗口对象、文档边框窗口对象、视对象)的创建。

2.构成应用程序的对象之间的关系

这里,用图的形式可直观地表示

所涉及的MFC类的继承或者派生

关系,如图1-2所示意。

图1-2所示的类都是从CObject

类派生出来的;所有处理消息的

类都是从CCmdTarget类派生的。

如果是多文档应用程序,文档模

板使用CMultiDocTemplae,主框

架窗口从CMdiFarmeWnd派生,它

包含工具条、状态栏和文档框架窗口。文档框架窗口从CMdiChildWnd派生,文档框架窗口包含视,视从CView 或其派生类派生。

3.构成应用程序的文件

通过上述分析,可知AppWizard产生的MDI框架程序的内容,所定义和实现的类。下面,从文件的角度来考察AppWizard生成了哪些源码文件,这些文件的作用是什么。表1-1列出了AppWizard所生成的头文件,表1-2列出了了AppWizard所生成的实现文件及其对头文件的包含关系。

表1-1 AppWizard所生成的头文件

表1-2 AppWizard所生成的实现文件

从表1-2中的包含关系一栏可以看出:

CTApp 的实现用到所有的用户定义对象,包含了他们的定义;CView 的实现用到CTdoc;其他对象的实现只涉及自己的定义;

当然,如果增加其他操作,引用其他对象,则要包含相应的类的定义文件。

对预编译头文件说明如下:

所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。

预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。

编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令

#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。

因此,所有的CPP实现文件第一条语句都是:#include "stdafx.h"。

另外,每一个实现文件CPP都包含了如下语句:

#ifdef _DEBUG

#undef THIS_FILE

static char BASED_CODE THIS_FILE[] = __FILE__;

#endif

这是表示,如果生成调试版本,要指示当前文件的名称。__FILE__是一个宏,在编译器编译过程中给它赋值为当前正在编译的文件名称。

2.MFC和Win32

1.MFC Object和Windows Object的关系

MFC中最重要的封装是对Win32 API的封装,因此,理解Windows Object和MFC Object (C++对象,一个C++类的实例)之间的关系是理解MFC的关键之一。所谓Windows Object(Windows对象)是Win32下用句柄表示的Windows

操作系统对象;所谓MFC Object (MFC

对象)是C++对象,是一个C++类的实例,

这里(本书范围内)MFC Object是有特

定含义的,指封装Windows Object的C++

Object,并非指任意的C++ Object。

MFC Object 和Windows Object是不一样的,但两者紧密联系。以窗口对象为例:

一个MFC窗口对象是一个C++ CWnd类(或派生类)的实例,是程序直接创建的。在程序执行中它随着窗口类构造函数的调用而生成,随着析构函数的调用而消失。而Windows窗口则是Windows系统的一个内部数据结构的实例,由一个“窗口句柄”标识,Windows系统创建它并给它分配系统资源。Windows窗口在MFC窗口对象创建之后,由CWnd类的Create成员函数创建,“窗口句柄”保存在窗口对象的m_hWnd成员变量中。Windows窗口可以被一个程序销毁,也可以被用户的动作销毁。MFC窗口对象和Windows窗口对象的关系如图2-1所示。其他的Windows Object和对应的MFC Object也有类似的关系。

下面,对MFC Object和Windows Object作一个比较。有些论断对设备描述表(MFC类是CDC,句柄是HDC)可能不适用,但具体涉及到时会指出。

1.从数据结构上比较

MFC Object是相应C++类的实例,这些类是MFC或者程序员定义的;Windows Object是Windows系统的内部结构,通过一个句柄来引用;

MFC给这些类定义了一个成员变量来保存MFC Object对应的Windows Object 的句柄。对于设备描述表CDC类,将保存两个HDC句柄。

2.从层次上讲比较

MFC Object是高层的,Windows Object是低层的;

MFC Object封装了Windows Object的大部分或全部功能,MFC Object的使用者不需要直接应用Windows Object的HANDLE(句柄)使用Win32 API,代替它的是引用相应的MFC Object的成员函数。

3.从创建上比较

MFC Object通过构造函数由程序直接创建;Windows Object由相应的SDK

函数创建。

MFC中,使用这些MFC Object,一般分两步:

首先,创建一个MFC Object,或者在STACK中创建,或者在HEAP中创建,这时,MFC Object的句柄实例变量为空,或者说不是一个有效的句柄。

然后,调用MFC Object的成员函数创建相应的Windows Object,MFC的句柄变量存储一个有效句柄。

CDC(设备描述表类)的创建有所不同,在后面的2.3节会具体说明CDC及其派生类的创建和使用。

当然,可以在MFC Object的构造函数中创建相应的Windows对象,MFC的GDI 类就是如此实现的,但从实质上讲,MFC Object的创建和Windows Object 的创建是两回事。

4.从转换上比较

可以从一个MFC Object得到对应的Windows Object的句柄;一般使用MFC Object的成员函数GetSafeHandle得到对应的句柄。

可以从一个已存在的Windows Object创建一个对应的MFC Object;一般使用MFC Object的成员函数Attach或者FromHandle来创建,前者得到一个永久性对象,后者得到的可能是一个临时对象。

5.从使用范围上比较

MFC Object对系统的其他进程来说是不可见、不可用的;而Windows Object 一旦创建,其句柄是整个Windows系统全局的。一些句柄可以被其他进程使用。典型地,一个进程可以获得另一进程的窗口句柄,并给该窗口发送消息。

对同一个进程的线程来说,只可以使用本线程创建的MFC Object,不能使用其他线程的MFC Object。

6.从销毁上比较

MFC Object随着析构函数的调用而消失;但Windows Object必须由相应的Windows系统函数销毁。

设备描述表CDC类的对象有所不同,它对应的HDC句柄对象可能不是被销毁,而是被释放。

当然,可以在MFC Object的析构函数中完成Windows Object的销毁,MFC Object的GDI类等就是如此实现的,但是,应该看到:两者的销毁是不同的。

每类Windows Object都有对应的MFC Object,下面用表格的形式列出它们之间的对应关系,如表2-1所示:

表2-1 MFC Object和Windows Object的对应关系

表2-1中的OBJECT分以下几类:

Windows对象,

设备上下文对象,

GDI对象(BITMAP,BRUSH,FONT,PALETTE,PEN,RGN),

菜单,

图像列表,

网络套接字接口。

从广义上来看,文档对象和文件可以看作一对MFC Object和Windows Object,分别用CDocument类和文件句柄描述。

后续几节分别对前四类作一个简明扼要的论述。

1.Windows Object

用SDK的Win32 API编写各种Windows应用程序,有其共同的规律:首先是编写WinMain函数,编写处理消息和事件的窗口过程WndProc,在WinMain 里头注册窗口(Register Window),创建窗口,然后开始应用程序的消息循环。

MFC应用程序也不例外,因为MFC是一个建立在SDK API基础上的编程框架。对程序员来说所不同的是:一般情况下,MFC框架自动完成了Windows登记、创建等工作。

下面,简要介绍MFC Window对Windows Window的封装。

1.Windows的注册

一个应用程序在创建某个类型的窗口前,必须首先注册该“窗口

类”(Windows Class)。注意,这里不是C++类的类。Register Window把窗口过程、窗口类型以及其他类型信息和要登记的窗口类关联起来。

1.“窗口类”的数据结构

“窗口类”是Windows系统的数据结构,可以把它理解为Windows系统的类型定义,而Windows窗口则是相应“窗口类”的实例。Windows使用一个结构来描述“窗口类”,其定义如下:

typedef struct _WNDCLASSEX {

UINT cbSize; //该结构的字节数

UINT style; //窗口类的风格

WNDPROC lpfnWndProc; //窗口过程

int cbClsExtra;

int cbWndExtra;

HANDLE hInstance; //该窗口类的窗口过程所属的应用实例

HICON hIcon; //该窗口类所用的像标

HCURSOR hCursor; //该窗口类所用的光标

HBRUSH hbrBackground; //该窗口类所用的背景刷

LPCTSTR lpszMenuName; //该窗口类所用的菜单资源

LPCTSTR lpszClassName; //该窗口类的名称

HICON hIconSm; //该窗口类所用的小像标

} WNDCLASSEX;

从“窗口类”的定义可以看出,它包含了一个窗口的重要信息,如窗口风格、窗口过程、显示和绘制窗口所需要的信息,等等。关于窗口过程,将在后面消息映射等有关章节作详细论述。

Windows系统在初始化时,会注册(Register)一些全局的“窗口类”,例如通用控制窗口类。应用程序在创建自己的窗口时,首先必须注册自己的窗口类。在MFC环境下,有几种方法可以用来注册“窗口类”,下面分别予以讨论。

2.调用AfxRegisterClass注册

AfxRegisterClass函数是MFC全局函数。AfxRegisterClass的函数原型:

BOOL AFXAPI AfxRegisterClass(WNDCLASS *lpWndClass);

参数lpWndClass是指向WNDCLASS结构的指针,表示一个“窗口类”。

首先,AfxRegisterClass检查希望注册的“窗口类”是否已经注册,如果是则表示已注册,返回TRUE,否则,继续处理。

接着,调用::RegisterClass(lpWndClass)注册窗口类;

然后,如果当前模块是DLL模块,则把注册“窗口类”的名字加入到模块状态的域m_szUnregisterList中。该域是一个固定长度的缓冲区,依次存放模块注册的“窗口类”的名字(每个名字是以“\n\0”结尾的字符串)。之所以这样做,是为了DLL退出时能自动取消(Unregister)它注册的窗口类。至于模块状态将在后面第9章详细的讨论。

最后,返回TRUE表示成功注册。

3.调用AfxRegisterWndClass注册

AfxRegisterWndClass函数也是MFC全局函数。AfxRegisterWndClass的函数原型:

LPCTSTR AFXAPI AfxRegisterWndClass(UINT nClassStyle,

HCURSOR hCursor, HBRUSH hbrBackground, HICON hIcon)

参数1指定窗口类风格;

参数2、3、4分别指定该窗口类使用的光标、背景刷、像标的句柄,缺省值是0。

此函数根据窗口类属性动态地产生窗口类的名字,然后,判断是否该类已经注册,是则返回窗口类名;否则用指定窗口类的属性(窗口过程指定为缺省窗口过程),调用AfxRegisterCalss注册窗口类,返回类名。

动态产生的窗口类名字由以下几部分组成(包括冒号分隔符):

如果参数2、3、4全部为NULL,则由三部分组成。

“Afx”+“:”+模块实例句柄”+“:”+“窗口类风格”

否则,由六部分组成:

“Afx”+“:”+模块实例句柄+“:”+“窗口类风格”+“:”+光标句柄

+“:”+背景刷句柄+“:”+像标句柄。比如:

“Afx:400000:b:13de:6:32cf”。

该函数在MFC注册主边框或者文档边框“窗口类”时被调用。具体怎样用在5.3.3.3节会指出。

4.隐含的使用MFC预定义的的窗口类

MFC4.0以前的版本提供了一些预定义的窗口类,4.0以后不再预定义这些窗口类。但是,MFC仍然沿用了这些窗口类,例如:

用于子窗口的“AfxWnd”;

用于边框窗口(SDI主窗口或MDI子窗口)或视的“AfxFrameOrView”;

用于MDI主窗口的“AfxMDIFrame”;

用于标准控制条的“AfxControlBar”。

这些类的名字就是“AfxWnd”、“AfxFrameOrView”、“AfxMdiFrame”、“AfxControlBar”加上前缀和后缀(用来标识版本号或是否调试版等)。它们使用标准应用程序像标、标准文档像标、标准光标等标准资源。为了使用这些“窗口类”,MFC会在适当的时候注册这些类:或者要创建该类的窗口时,或者创建应用程序的主窗口时,等等。

MFC内部使用了函数

BOOL AFXAPI AfxEndDeferRegisterClass(short fClass)

来帮助注册上述原MFC版本的预定义“窗口类”。参数fClass区分了那些预定义窗口的类型。根据不同的类型,使用不同的窗口类风格、窗口类名字等填充WndClass的域,然后调用AfxRegisterClass注册窗口类。并且注册成功之后,通过模块状态的m_fRegisteredClasses记录该窗口类已经注册,这样该模块在再次需要注册这些窗口类之前可以查一下

m_fRegisteredClasses,如果已经注册就不必浪费时间了。为此,MFC内部使用宏

AfxDeferRegisterClass(short fClass)

来注册“窗口类”,如果m_fRegisteredClasses记录了注册的窗口类,返回TRUE,否则,调用AfxEndDeferRegisterClass注册。

注册这些窗口类的例子:

MFC在加载边框窗口时,会自动地注册“AfxFrameOrView”窗口类。在创建视时,就会使用该“窗口类”创建视窗口。当然,如果创建视窗口时,该“窗口类”还没有注册,MFC将先注册它然后使用它创建视窗口。

不过,MFC并不使用”AfxMDIFrame”来创建MDI主窗口,因为在加载主窗口时一般都指定了主窗口的资源,MFC使用指定的像标注册新的MDI主窗口类(通过函数AfxRegisterWndClass完成,因此“窗口类”的名字是动态产生的)。

MDI子窗口类似于上述MDI主窗口的处理。

在MFC创建控制窗口时,如工具栏窗口,如果“AfxControlBar”类还没有注册,则注册它。注册过程很简单,就是调用::InitCommonControl加载通用控制动态连接库。

5.调用::RegisterWndClass。

直接调用Win32的窗口注册函数::RegisterWndClass注册“窗口类”,这样做有一个缺点:如果是DLL模块,这样注册的“窗口类”在程序退出时不会

自动的被取消注册(Unregister)。所以必须记得在DLL模块退出时取消它所注册的窗口类。

6.子类化

子类化(Subclass)一个“窗口类”,可自动地得到它的“窗口类”属性。

1.MFC窗口类CWnd

在Windows系统里,一个窗口的属性分两个地方存放:一部分放在“窗口类”里头,如上所述的在注册窗口时指定;另一部分放在Windows Object本身,如:窗口的尺寸,窗口的位置(X,Y轴),窗口的Z轴顺序,窗口的状态(ACTIVE,MINIMIZED,MAXMIZED,RESTORED…),和其他窗口的关系(父窗口,子窗口…),窗口是否可以接收键盘或鼠标消息,等等。

为了表达所有这些窗口的共性,MFC设计了一个窗口基类CWnd。有一点非常重要,那就是CWnd提供了一个标准而通用的MFC窗口过程,MFC下所有的窗口都使用这个窗口过程。至于通用的窗口过程却能为各个窗口实现不同的操作,那就是MFC消息映射机制的奥秘和作用了。这些,将在后面有关章节详细论述。

CWnd提供了一系列成员函数,或者是对Win32相关函数的封装,或者是CWnd 新设计的一些函数。这些函数大致如下。

(1)窗口创建函数

这里主要讨论函数Create和CreateEx。它们封装了Win32窗口创建函数::CreateWindowEx。Create的原型如下:

BOOL CWnd::Create(LPCTSTR lpszClassName,

LPCTSTR lpszWindowName, DWORD dwStyle,

const RECT& rect,

CWnd* pParentWnd, UINT nID,

CCreateContext* pContext)

Create是一个虚拟函数,用来创建子窗口(不能创建桌面窗口和POP UP窗口)。CWnd的基类可以覆盖该函数,例如边框窗口类等覆盖了该函数以实现边框窗口的创建,视类则使用它来创建视窗口。

Create调用了成员函数CreateEx。CWnd::CreateEx的原型如下:

BOOL CWnd::CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName,

LPCTSTR lpszWindowName, DWORD dwStyle,

int x, int y, int nWidth, int nHeight,

HWND hWndParent, HMENU nIDorHMenu, LPVOID lpParam)

CreateEx有11个参数,它将调用::CreateWindowEx完成窗口的创建,这11个参数对应地传递给::CreateWindowEx。参数指定了窗口扩展风格、“窗口类”、窗口名、窗口大小和位置、父窗口句柄、窗口菜单和窗口创建参数。

CreateEx的处理流程将在后面4.4.1节讨论窗口过程时分析。

窗口创建时发送WM_CREATE消息,消息参数lParam指向一个CreateStruct 结构的变量,该结构有11个域,其描述见后面4.4.1节对窗口过程的分析,Windows使用和CreateEx参数一样的内容填充该变量。

(2)窗口销毁函数

例如:

DestroyWindow函数销毁窗口

PostNcDestroy( ),销毁窗口后调用,虚拟函数

(3)用于设定、获取、改变窗口属性的函数,例如:

SetWindowText(CString tiltle) 设置窗口标题

GetWindowText() 得到窗口标题

SetIcon(HICON hIcon, BOOL bBigIcon);设置窗口像标

GetIcon( BOOL bBigIcon ) ;得到窗口像标

GetDlgItem( int nID);得到窗口类指定ID的控制子窗口

GetDC(); 得到窗口的设备上下文

SetMenu(CMenu *pMenu); 设置窗口菜单

GetMenu();得到窗口菜单

(4)用于完成窗口动作的函数

用于更新窗口,滚动窗口,等等。一部分成员函数设计成或可重载(Overloaded)函数,或虚拟(Overridden)函数,或MFC消息处理函数。这些函数或者实现了一部分功能,或者仅仅是一个空函数。如:

?有关消息发送的函数:

SendMessage( UINT message,WPARAM wParam = 0, LPARAM lParam = 0 ); 给窗口发送发送消息,立即调用方式

PostMessage(( UINT message,WPARAM wParam = 0, LPARAM lParam = 0 ); 给窗口发送消息,放进消息队列

?有关改变窗口状态的函数

MoveWindow( LPCRECT lpRect, BOOL bRepaint = TRUE );

移动窗口到指定位置

ShowWindow(BOOL );显示窗口,使之可见或不可见

….

?实现MFC消息处理机制的函数:

virtual LRESULT WindowProc( UINT message, WPARAM wParam, LPARAM lParam ); 窗口过程,虚拟函数

virtual BOOL OnCommand( WPARAM wParam, LPARAM lParam );处理命令消息

?消息处理函数:

OnCreate( LPCREATESTRUCT lpCreateStruct );MFC窗口消息处理函数,窗口创建时由MFC框架调用

OnClose();MFC窗口消息处理函数,窗口创建时由MFC框架调用

?其他功能的函数

CWnd的导出类是类型更具体、功能更完善的窗口类,它们继承了CWnd的属性和方法,并提供了新的成员函数(消息处理函数、虚拟函数、等等)。

常用的窗口类及其层次关系见图1-1。

1.在MFC下创建一个窗口对象

MFC下创建一个窗口对象分两步,首先创建MFC窗口对象,然后创建对应的Windows窗口。在内存使用上,MFC窗口对象可以在栈或者堆(使用new创建)中创建。具体表述如下:

?创建MFC窗口对象。通过定义一个CWnd或其派生类的实例变量或者动态创建一个MFC窗口的实例,前者在栈空间创建一个MFC窗口对象,后者在堆空间创建一个MFC窗口对象。

?调用相应的窗口创建函数,创建Windows窗口对象。

例如:在前面提到的AppWizard产生的源码中,有CMainFrame(派生于CMDIFrame(SDI)或者CMDIFrameWnd(MDI))类。它有两个成员变量定义如下:

CToolBar m_wndToolBar;

CStatusBar m_wndStatusBar;

当创建CMainFrame类对象时,上面两个MFC Object也被构造。

CMainFrame还有一个成员函数

OnCreate(LPCREATESTRUCT lpCreateStruct),

它的实现包含如下一段代码,调用CToolBar和CStatusBar的成员函数Create来创建上述两个MFC对象对应的工具栏HWND窗口和状态栏HWND窗口:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (!m_wndToolBar.Create(this) ||

!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

{

TRACE0("Failed to create toolbar\n");

return -1; // fail to create

}

if (!m_wndStatusBar.Create(this) ||

!m_wndStatusBar.SetIndicators(indicators,

sizeof(indicators)/sizeof(UINT)))

{

TRACE0("Failed to create status bar\n");

return -1; // fail to create

}

}

关于工具栏、状态栏将在后续有关章节作详细讨论。

在MFC中,还提供了一种动态创建技术。动态创建的过程实际上也如上所述分两步,只不过MFC使用这个技术是由框架自动地完成整个过程的。通常框架窗口、文档框架窗口、视使用了动态创建。介于MFC的结构,CFrameWnd 和CView及其派生类的实例即使不使用动态创建,也要用new在堆中分配。理由见窗口的销毁(2.2.5节)。

至于动态创建技术,将在下一章具体讨论。

在Windows窗口的创建过程中,将发送一些消息,如:

在创建了窗口的非客户区(Nonclient area)之后,发送消息WM_NCCREATE;

在创建了窗口的客户区(client area)之后,发送消息WM_CREATE;

窗口的窗口过程在窗口显示之前收到这两个消息。

如果是子窗口,在发送了上述两个消息之后,还给父窗口发送

WM_PARENATNOTIFY消息。其他类或风格的窗口可能发送更多的消息,具体参见SDK开发文档。

1.MFC窗口的使用

MFC提供了大量的窗口类,其功能和用途各异。程序员应该选择哪些类来使用,以及怎么使用他们呢?

直接使用MFC提供的窗口类或者先从MFC窗口类派生一个新的C++类然后使用它,这些在通常情况下都不需要程序员提供窗口注册的代码。是否需要派生新的C++类,视MFC已有的窗口类是否能满足使用要求而定。派生的C++类继承了基类的特性并改变或扩展了它的功能,例如增加或者改变对消息、事件的特殊处理等。

主要使用或继承以下一些MFC窗口类(其层次关系图见图1-1):

框架类CFrameWnd,CMdiFrameWnd;

文档框架CMdiChildWnd;

视图CView和CView派生的有特殊功能的视图如:列表CListView,编辑CEditView,树形列表CTreeView,支持RTF的CRichEditView,基于对话框的视CFormView等等。

对话框CDialog。

通常,都要从这些类派生应用程序的框架窗口和视窗口或者对话框。

工具条CToolBar

状态条CStatusBar

其他各类控制窗口,如列表框CList,编辑框CEdit,组合框CComboBox,按钮Cbutton等。

通常,直接使用这些类。

2.在MFC下窗口的销毁

窗口对象使用完毕,应该销毁。在MFC下,一个窗口对象的销毁包括HWND 窗口对象的销毁和MFC窗口对象的销毁。一般情况下,MFC编程框架自动地处理了这些。

(1)对CFrameWnd和CView的派生类

这些窗口的关闭导致销毁窗口的函数DestroyWindow被调用。销毁Windows 窗口时,MFC框架调用的最后一个成员函数是OnNcDestroy函数,该函数负责Windows清理工作,并在最后调用虚拟成员函数PostNcDestroy。CFrameWnd 和CView的PostNcDestroy调用delete this删除自身这个MFC窗口对象。

澳洲维省高中课程VCE Mathematical methods与国内数学对比研究

关于Further Mathematics 与Mathematics Methods 注:11年级的课时计划会打乱书上章节的顺序 ●分析: 1) Further Mathematics内容覆盖广(6年级~大一),与现行高中数学教材接轨小,在内容上仅有不到20%相同的地方,且难度较小,但除应用性强外,对国内数学帮助不大;但国内高中数学对Math有较大帮助。 2) Mathematics Methods 内容与国内高中数学内容相近,大约有70~80%相同,尽管在要求上更重于应用,理论难度要略低于国内数学,但它与国内数学互相辅助程度较大。然而要考虑的是:学生的英语水平及难度会对学生的VCE总分产生影响。 3) 假设只学习Mathematical Methods,根据Mathematical Methods教学安排调整中文数学的教学顺序例如:中文数学中的数列、向量内容后置,将Mathematical Methods中的概率统计前移。 ●方向 1)为了保证学生VCE的总分,应该保留Further Mathematic; 2)而为了让学生在报考国外大学的专业时有更多的选择(尤其指理工科)或得到更高的分数,应该学习Mathematical Methods,且Methods与国内数学的关系更为紧密。只是在学科的课时上,外教的配置上,学生的学费改变与否上考虑。 ●建议: 1、鉴于学生水平的参差不齐,理想状态:所有学生必修Further Mathematic,数学不错的(将来可 能报国外理科专业)的同学选修Mathematical Methods。这将会增加学生的课时。 2、学生学Further Mathematic和Mathematical Methods,多增加一门Mathematical Methods。 ------- 11年级学生学习Further Mathematic的3,4单元;12年级学生学习Mathematical Methods的3,4单元,最后参加5个学科的VCE大考。若这样可行,则可在不增加课时的基础上,多学了一个VCE学科。 ●初拟结论: 1、Methods代表国内数学的课改趋势 2、Methods尽管难度提高了,但因为计算的是标准分(按标准分折算),故与Victoria省比较,应该占优,并不影响VCE总分。 3、Methods与国内数学接近,更利于二者的整合与互助。 4、Methods与国内数学接近,更利于学生对中外数学的统一认识------即:要学好Math,就必须将国内数学学好,反之亦然。尽管它们在内容和深度上还各有特点。

vce教程

VCE题库打开软件Visual CertExam详细使用教程 VCE题库打开软件-Visual Certexam Suite免费版 https://www.360docs.net/doc/4f8164453.html,/thread-36170-1-1.html 发现论坛有的会员对VCE软件使用不熟悉,影响做题效率,现在给大家奉上一个详细的使用教程。感谢各位会员对鸿鹄论坛的支持,我们一直在努力做到更好! 1.打开Visual CertExam软件

2.选择Add按钮添加.VCE格式后缀题库文件

3.选择start直接可以做题,但是该软件不仅仅有这些功能,请往下看吧,选择Exam按钮 4.如上图所示选择history,对了,这就是每次做题的历史记录,可以看到自己历次的成绩。

5.再回到3中选择Operation选项,如图所示 Randomize questions--勾选表示随机抽题,不勾选表示从题库的第一题开始做,建议刚开始接触题库的同学不用勾选,先熟悉一遍题目,等熟悉了再勾选随机抽题选项。 Randomize choices where enable-勾选表示题目的ABCD等选项也是随机出现的,不勾选表示选项跟题库给的顺序一样。

6.回到2中,选strat开始做题,可以选择做所有题目或者自己选择题目的类型,这样便于重点练习自己不熟悉的知识点,查漏补缺,底部Time on选项,默认考试时间是120分钟,可以根据自己的情况适当设置做题时间。 7. 点击上图的OK按钮,会有题库的介绍和相关说明如下图所示,按Begin按钮正式开始答题。

8. 选择题有单选跟多选,题干会题库该题有几个选项,注意下图左上角的Mark按钮,勾选表示对该题做了标记。黄色M即表示标记的题目。

Visual CertExam(VCE)试题制作教程

制作方案一:将PDF制作成VCE文件 制作相关软件: 1、Exam Formatter (把PDF转成RTF) 2、Visual CertExam Suite (主要用designer把RTF转成VCE) 具体操作步骤: 1、打开exam formatter软件 2、选择file->import导入相应PDF文件 3、自动导入后,exam formatter如下 4、选择file->save as,保存成rtf文件 5、运行visual certexam designer->import导入刚才保存的rtf文件 6、next->选择rtf格式(刚才保存的为rtf格式)) 8、next,选择刚才保存的rtf文件 9、next,选择第三项 10、next,进行导入预览 11、next->import导入完成 12、file->save as保存成vce文件 详情请参阅:https://www.360docs.net/doc/4f8164453.html,/s/blog_6c991f270101a7bj.html 感谢@明旭2010分享的制作方案 制作方案二:将PDF转换成TXT后,制作成VCE文件 用第一种方案制作,依赖于Exam Formatter 对PDF的OCR识别,但事实上Exam Formatter并不是一款专业的OCR识别软件,它对PDF的文字识别效果很差。通过方案一制作出来的.VCE文件通常是这样的:

上面图片所属题库里面有280多道题,用方案一只识别出来9道题,而且题目标题,不同的题目也不能识别开来,所以方案一只适用于Exam Formatter 能对PDF完全识别的少部分情况。 VCE题库文件制作2种方法:一种是PDF文件导入(方案一),另一种就是直接将TXT文件导入designer 制作。既然Exam Formatter对PDF的文字识别效果不好,那我们可不可以先用专业的PDF文字识别软件现将题库文字识别出来,再用TXT来制作VCE题库呢? 制作相关软件: 1、CAJViewer 7.2 :中国知网的专用浏览器,文字识别效果尚可。(免费) 2、ABBYY_FineReader:一家俄罗斯软件公司开发的OCR识别软件,识别准确率可以达到95% 以上。(收费) 3、Visual CertExam Suite (主要用designer把TXT转成VCE) 具体操作步骤: 1、用CAJViewer 7.2 打开你要识别的PDF文件 2、选择文件->另存为,在弹出的选项框里面,保存类型选择TXT 3、打开你识别好的TXT文件: 将QUESTION 替换成Q ,比如QUESTION1=Q1,QUESTION2=Q2以此类推 将Correct Answer 替换成Answer

澳州VCE高中课程

澳州VCE高中课程 什么是 VCE? ●澳大利亚维多利亚州授予的高中证书 ●一个单元是一门学科一学期的课程,需要通过至少16个单元以完成学业 ●成绩由学校内部考试和学校外部维州统一考试及综合评估组成,取得规定学 分,即获得澳大利亚高中VCE证书 谁认可VCE? ●VCE在世界范围内被广泛承认,尤其是英语国家 ●所有澳大利亚的大学认可VCE,录取取决于你的VCE评估成绩在澳洲的排名 有哪些VCE课程? ●VCE课程与澳大利亚维洲开设的完全一致 ●起初开设4至6门核心科目,通常是英语、数学、中文和商科或科学等科目●第一学期开设英语预备课程,以确保学生达到接受英语授课的能力 如果管理VCE项目? ●澳大利亚维州教育评估署官员每年都要对海外学校进行检查 ●澳洲半岛学校经常性派专业人士现场访问指导 ●澳洲半岛学校为在中国教授相同学科的老师提供指导老师 ●学生的成绩报告及学籍档案由澳洲半岛学校统一存档管理 VCE课程有哪些特色? ●VCE课程全部用英语教学 ●由维州教育评估署提供教学大纲和考试评估 ●由澳洲半岛学校提供课程计划,浦外参与整合设置 ●绝大多数教学和评估资源在澳洲准备并与澳洲同步 VCE课程有何益处? ●VCE课程为中国学生开辟了一条入读澳大利亚和其它国家大学的途径 ●学生可在自己的国家中学习得到世界承认的优质学历课程 ●节省了到国外就读高中所需的高额度的生活费用 ●学生可习得流利的英语,英语教学的经历为前去英语国家大学深造作好了充 分的准备 如果招生? ●VCE课程学制:全日制三年,全部在浦外校园学习。 ●今年9月开班,计划招生100名。本市具有较好英语水平的初中毕业生,通 过相应的考核,即可成为课程项目正式学生就读。

最详细最好的Multisim仿真教程

第13章Multisim模拟电路仿真本章Multisim10电路仿真软件,讲解使用Multisim进行模拟电路仿真的基本方法。 目录 1. Multisim软件入门 2. 二极管电路 3. 基本放大电路 4. 差分放大电路 5. 负反馈放大电路 6. 集成运放信号运算和处理电路 7. 互补对称(OCL)功率放大电路 8. 信号产生和转换电路 9. 可调式三端集成直流稳压电源电路 13.1 Multisim用户界面及基本操作 13.1.1 Multisim用户界面 在众多的EDA仿真软件中,Multisim软件界面友好、功能强大、易学易用,受到电类设计开发人员的青睐。Multisim用软件方法虚拟电子元器件及仪器仪表,将元器件和仪器集合为一体,是原理图设计、电路测试的虚拟仿真软件。 Multisim来源于加拿大图像交互技术公司(Interactive Image Technologies,简称IIT公司)推出的以Windows为基础的仿真工具,原名EWB。 IIT公司于1988年推出一个用于电子电路仿真和设计的EDA工具软件Electronics Work Bench(电子工作台,简称EWB),以界面形象直观、操作方便、分析功能强大、易学易用而得到迅速推广使用。 1996年IIT推出了EWB5.0版本,在EWB5.x版本之后,从EWB6.0版本开始,IIT对EWB进行了较大变动,名称改为Multisim(多功能仿真软件)。 IIT后被美国国家仪器(NI,National Instruments)公司收购,软件更名为NI Multisim,Multisim经历了多个版本的升级,已经有Multisim2001、Multisim7、Multisim8、Multisim9 、Multisim10等版本,9版本之后增加了单片机和LabVIEW虚拟仪器的仿真和应用。 下面以Multisim10为例介绍其基本操作。图13.1-1是Multisim10的用户界面,包括菜单栏、标准工具栏、主工具栏、虚拟仪器工具栏、元器件工具栏、仿真按钮、状态栏、电路图编辑区等组成部分。

澳大利亚维州VCE会计课程教育与思考

摘要教育国际化引发越来越多的国际高中课程进入了中国学生的视野。中国学生在国内就能参加全球各国的大学入学考试,顺利进入世界各地的大学深造学习。本文将介绍澳大利亚维多利亚州的高中VCE课程体系中的会计学科,比较中澳两国在课程设计、教育目标以及评价体系中的差异,并对我国会计课程教学现状给出分析、建议和思考。关键词澳大利亚VCE会计高中教育评价体系Analysis and Reflection on VCE Accounting Curriculum Education in Australian State of Victoria//TangXiaominAbstractWiththeprocessofinternationalizationofeducation,moreandmoreinternationalhighschoolcurriculumgetintotheChinesestudents'horizons.Chinesestudentswillbeabletopar-ticipateintheglobalnationalcollegeentranceexams.Australianeducationenjoysahighinternationalreputation,thisarticlewilldetailtheAustralianstateofVictoriaHighSchoolVCEaccount-ingeducationcurriculumobjectives,curriculumdesign,teachingmethods,andevaluationsystem,andanalysisandgiverecom-mendationstoChineseeducation. Key wordsVCE;accounting;highschooleducation;evaluationsystem 随着教育国际化的进程,越来越多的国际高中课程进入了中国学生的视野。例如英联邦国际的A-level课程,澳大利亚VCE课程,美国的IB、GAT课程,德国课程等,中国学生在国内就能参加全球各国的大学入学考试,顺利进入世界各地的大学深造学习。本文将介绍澳大利亚维多利亚州的高中VCE课程体系中的会计学科,比较中澳两国在课程设计、教育目标以及评价体系中的差异,并对我国会计课程教学现状给出分析、建议和思考。 1澳大利亚VCE会计(Accounting)课程设置澳大利亚维多利亚州高中阶段VCE教育课程是指“theVictorianCertificateofEducation”教育证书,该教育证书既是学生高中毕业的证明,也是澳大利亚大学录取的重要指标,它得到全球认证,不仅仅可以申请澳大利亚大学,还可以申请世界范围内包括英国、美国、加拿大、中国香港、新加坡等一流大学。澳大利亚VCE的高中学习科目设置多元化。高中阶段学科设置有数学(专业数学、数学方法等)、社会学科(中文、会计、经济、地理、历史等)、自然科学(IT、物理、生物、化学等)以及语言学科(中文、法语、英语、英语文学、英语作为第二语言等)。在澳大利亚高中阶段就开设实用性很强的会计学对学生了解商业运营模式,很具有实践意义[1]。 澳大利亚维多利亚州VCE的高中阶段就开设了中国国内只有在本科教育中才有的会计课程(Accounting),供学生选择学习[2]。会计课程不仅是学生在大学阶段学习会计、商科、经济、金融等专业的必修课程,还为学生从中学起就了解社会商业运转,设定未来职业理想目标提供了良好的基础。 2澳大利亚VCE会计课程教学特点 澳大利亚VCE会计教学方法体现了自主性、灵活性和多样性。会计学科又具备其独特的特点,是知识性和实践性紧密结合的学科。 澳洲VCE会计教学的特点之一就是强调自主性。澳大利亚的高中更像国内的大学,学生没有固定的教室,可以自己挑选每年学习的科目。学校拥有先进的教学设备,老师在教学中使用电脑投影,学生们听课都使用电脑,每个人都有无线网络账号,能随时上网,这不论对老师的课堂控制力还是学生的学习自觉性都是一种考验。仔细研究校园网络系统,发现每个学生所选课程安排、上课内容、待完成的作业及时间安排等都有详细的模块分类,这也是每个学生每天必看的。首先上课前老师会把本堂课提纲通过学校网络发给每个同学,学生可以先作预习,在上课时在老师的提纲上将笔记补充完整,起到了提纲挈领的作用。既让学生明确了本节课学习的目标,又能进一步检查学生掌握程度,同时也锻炼了学生的动手能力,会计课程教学就注重学生的笔记的完善,条理的清楚,以便于抓住重点复习考试,而作业等也是直接在电脑上完成即可。当然有利也有弊,老师在讲课时就得有所要求,比如合上电脑等。会计这门学科教学要求中有计算机完成部分,例如运用OFFICE的软件Excel、现在国际通用的会计软件Quickbook进行操作练习等,多样性的教学让学生有更多的机会将会计教学融入到社会实践中。通过多种途径建构学生的会计知识,并且这部分的成绩在学校评价体系(SAC)中占到一定比重。 澳洲VCE会计教学的特点之二是强调计划性和目的性。通常每天只有四节课,每节课70分钟,早上9点开始, 澳大利亚维州VCE会计课程教育分析与思考 唐晓敏 (南京外国语学校仙林分校国际高中部江苏·南京210023)中图分类号:G424文献标识码:A文章编号:1672-7894(2013)21-0090-02 作者简介:唐晓敏(1982—),女,湖北荆州人,经济学硕士。 教改教法 90

stata入门教程

Stata 快速入门 1、Stata的窗口 ?在最上方有一排菜单,即“File Edit Data Graphics Statistics User Window Help”。?左上“Review”(历史窗口):此窗口记录着自启动Stata以来执行过的命令。?右上“Variables”(变量窗口):此窗口记录着目前Stata内存中的所有变量。?正上方“Results”(结果窗口):此窗口显示执行Stata命令后的输出结果。 ?正下方“Command”(命令窗口):在此窗口输入想要执行的Stata命令。 2、将数据导入Stata ?打开Stata软件后,点击Data Editor(Edit)图标(也可以点击菜单“Window”→“Data Editor”),即可打开一个类似Excel的空白表格。 ?用Excel打开文件“nerlove.xls”,复制文件中的所有数据,并粘贴到Data Editor 中。 ?导入数据的另一方法是,点击菜单“File”→“Import”,然后导入各种格式的数据。但这种方法有时不如直接从Excel表中粘贴数据来得方便直观。 3、变量窗口 ?关闭Data Editor后,即会看到右上方的“Variables”窗口出现了5个变量:?分别为tc(total cost,总成本),q(total output, 总产量),pl(price of labor,小时工资率),pf(price of fuel,燃料价格),与pk(user cost of capital,资本的租赁价格。 4、存为dta数据文件 ?此时,可以点击Save图标(也可以点击菜单“File”→“Save”),将数据存为Stata格式的文件(扩展名为dta),比如nerlove.dta。 ?以后就可以用Stata直接打开这个数据集了(不需要再从Excel表中粘贴过来)。 5、打开dta数据文件 打开的方式有三种: 1.点击Open图标(也可以点击菜单“File”→“Open”),然后寻找要打开的dta 文件的位置。 2.直接双击想要打开的dta文件 3.在命令窗口输入以下命令(假设文件在E盘的根目录)并回车(按Enter键)

封装FA分析教程

第二单元 集成电路芯片封装可靠性知识—郭小伟 (60学时) 第一章、可靠性试验 1.可靠性试验常用术语 试验名称 英文简称 常用试验条件 备注 温度循环 TCT (T/C ) -65℃~150℃, dwell15min, 100cycles 试验设备采用气冷的方式,此温度设置为设备的极限温度 高压蒸煮 PCT 121℃,100RH., 2ATM,96hrs 此试验也称为高压蒸汽,英文也称为autoclave 热冲击 TST (T/S ) -65℃~150℃, dwell15min, 50cycles 此试验原理与温度循环相同,但温度转换速率更快,所以比温度循环更严酷。 稳态湿热 THT 85℃,85%RH., 168hrs 此试验有时是需要加偏置电压的,一般为Vcb=0.7~0.8BVcbo,此时试验为THBT 。 易焊性 solderability 235℃,2±0.5s 此试验为槽焊法,试验后为10~40倍的显微镜下看管脚的 上锡面积。 耐焊接热 SHT 260℃,10±1s 模拟焊接过程对产品的影响。 电耐久 Burn in Vce=0.7Bvceo, Ic=P/Vce,168hrs 模拟产品的使用。(条件主要针 对三极管) 高温反偏 HTRB 125℃, Vcb=0.7~0.8BVcbo, 168hrs 主要对产品的PN 结进行考核。回流焊 IR reflow Peak temp.240℃ (225℃) 只针对SMD 产品进行考核,且 最多只能做三次。 高温贮存 HTSL 150℃,168hrs 产品的高温寿命考核。 超声波检测 SAT CSCAN,BSCAN,TSCAN 检测产品的内部离层、气泡、裂缝。但产品表面一定要平整。

澳大利亚维多利亚州教育课程VCE简介

VCE课程简介 VCE(Victorian Certificate of Education),是澳大利亚维多利亚州教育课程评估署(VCAA)向完成国际高中课程学习并达到教学要求的毕业生颁发的学历证书。 VCE证书是衡量学生能否进入澳洲各大学进行本科课程学习的主要标准,毕业后可直接申请澳洲大学,并广泛地被世界主要发达国家的高等学府所承认。 VCE留学课程以满足学生对国际化教育的需求为目标,提供澳洲模式的课程,融合中外课程的核心内容,既有严谨高效卓越的中方课程管理优势,又强调国外教育的创新思维和灵活运用能力,开阔国际视野,培养高端素质,使学生具备国际竞争力。 1、适应学生群体 VCE项目实质上等于把澳大利亚的高中课程与考试体系放到了中国来进行,所以招生范围主要是应届初中优秀毕业生。考试结束后得到和澳大利亚本地高中生在同一平台被大学录取的机会。 2、课程模式——“双证班” 参与 VCE课程的学生将在中国的主办高中和澳大利亚高中同时注册。VCE将中国高中学历教育和澳大利亚高中教育融合在一起,取双方教育教学之长,实现中西教育珠联璧合的一种新的教育教学模式。被VCE班录取的学生,注册中澳两国学籍,既可接受中国的高中教育,学习中国的基础高中课程,参加学业水平考试成绩合格后被授

予中国的高中毕业证书,同时接受澳大利亚的高中教育,学习澳大利亚的相关课程成绩合格后被授予澳大利亚的高中毕业证书。 3、VCE核心课程 总体来说,VCE课程分两个阶段进行: 第一阶段(高一):在学习中国高一课程同时,补充学习澳洲文化及语言课,由澳洲教育部门认可的具有丰富高中英语教学经验的外籍教师担任。该课程作为VCE预备课程,使学生尽快提高英语能力、熟悉澳大利亚文化背景,潜移默化地培养澳大利亚学习方法,逐步适应之后的澳大利亚VCE课程授课模式。 第二阶段(高二和高三):在学习中国高二课程同时,主要学习澳大利亚高中的 5 门核心课程。推荐的 5 门 VCE课程是:a) EAL b) CHI c) MME/MMFU d) PHY 上述课程从内容上与中国现有教学大纲相似,可作为中国对应课程的延伸和补充。 4、“VCE双证班”教学特点 以学生为中心,尊重学生,在轻松、平等的氛围和环境中与学生沟通、交流并传授知识和技能,启发式教学,鼓励团队合作和交流,注重学生的独立思考和动手能力。分层教学,照顾学生的个性需求。 跨越三年的 VCE课程项目的教学采用中、英文双语教学。学生学习澳方课程全部用英语完成作业,并用纯正英文完成各种考试,从而使学生在三年学习中接触英文词汇量可以达到近万个,并可以掌握几千个词汇。同时英语听、说、读、写等方面的强化将渗透在整个教

ADS晶体管直流仿真教程

2 . This chapter introduces the mixer circuit and shows all the basics of DC simulations, including a family of curves and device biasing calculations. Lab 2: DC Simulations

Lab 2: DC Simulations 2-2 OBJECTIVES ? Build a symbolized sub-circuit for use in the hierarchy ? Create a family of curves for the device used in the mixer ? Sweep variables, pass parameters, and the plot or list the data ? Use equations to calculate bias resistor values from simulation data NOTE about this lab: This lab and the remaining labs will use the BJT mixer to demonstrate all types of simulations. Regardless of the type of circuit you design, the techniques and simulations presented in these labs will be applicable to many other circuit configurations. PROCEDURE The following steps are for creating the mixer BJT sub-circuit with package parasitics and performing the dc simulations as part of the design process.1. Create a New Project and name it: mixer 2. Open a New Schematic Window and save it as: bjt_pkg 3. Setup the BJT device and model: a. Insert the BJT generic device and model: In the schematic window, select the palette: Devices–BJT . Select the BJT-NPN device and insert it onto the schematic. Next insert the BJT Model (model card with default Gummel Poon parameters).

中澳(VCE)数学课程的研究与实践

中澳(VCE)数学课程的研究与实践 VCE即Victoria Certificate of Education的英文缩写,是澳大利亚维多利亚州课程评估署VCAA(全称Victorian Curriculum and Assessment Authority)向完成11、12年级(相当于我国国内的高二和高三)的学习,并达到教学要求的毕业生颁发的学历证书,所得成绩将直接进入澳大利亚的大学录取系统。我校与澳大利亚维多利亚州HAILEYBURY COLLEGE的课程合作是一个“双学籍、双文凭、双通道”的项目,其中VCE数学课程引进澳大利亚原版英文教材《Mathematic Methods》,学生通过学习,与澳大利亚本土学生同时参加全英文环境的VCE数学课程评估。 一、中澳(VCE)数学课程比较 中澳(VCE)双方的数学课程目标都是为了提高学生作为未来公民所必要的数学素养,以满足个人发展与社会进步的需要。 1、从课程结构设置看 VCE数学课程有四种教材可供学生选择,根据知识侧重点和难度的不同设有Further Mathematics,Specialist Mathematics,Mathematical Methods和Mathematical Methods CAS,学生一旦选定教材就参加相应的课程评估,我校VCE课程合作班选择的是Mathematical Methods,这套教材侧重于数理知识和数学方法,强调数学在日常生活和社会中的广泛应用。我国的数学新课程由必修和选修两部分构成,学生通过对必修部分不同的模块和根据自己兴趣选择的选修部分的学习,参加统一形式的考试。相比而言,VCE 数学对教材的分类比较固定,相对应的考试统一度高;国内新课程模块分类细致,特别是选修部分各系列的选择灵活性强,有利于学生兴趣的培养和今后的延续学习。 2、从课程内容看(见表1) 表 1:课程内容比较表

ADS教程第3章

实验三、直流仿真和建立电路模型 概述 本章将介绍参数的子网络,在分层设计中如何创建和使用它们。我们将从一个元件建模开始。对于性能较好的元件模型,最低层的子网络应包括封装寄生参数。一个测试模板将用来对一个可以计算,建立并检验的偏置网络的响应进行仿真并输出响应曲线。该实验中的电路是本教材中其它实验使用的放大器基础。 任务 ●建立一个考虑寄生参数的通用BJT模型,并保存在自电路中。 ●设置并运行大量DC仿真来确定其性能。 ●在数据显示中计算偏置电阻。 ●在DC仿真基础上建立一个偏置网络。 ●测试偏置网络。 目录 1.新建任务:amp_1900 (37) 2.设置一个通用BJT符号和模型卡 (37) 3.对电路添加寄生参数和连接部分 (39) 4.观察缺省符号 (39) 5.设置设计参数和内建符号 (40) 6.用曲线指示模板测试bjt_pkg的子电路 (42) 7.修改参数扫描模板 (43) 8.在Beta=100和160时仿真 (44) 9.打开一个新设计,并在主窗口中查看你的所有文件 (45) 10.对直流偏置的参数扫描进行设置并仿真 (46) 11.计算共射电路偏置电阻Rb, Rc的值 (49) 12.偏置网络 (50) 13.对直流解作仿真和注释 (51) 14.选学:温度扫描 (52)

步骤 1、新建任务:amp_1900 a. 如果你还没有创建该任务,就请现在创建。然后在该信任务amp_1900中打 开一个新的原理图窗口并以bjt_pkg为名保存它,并在Option→preferences 中进行你希望的设置。 2、设置一个通用BJT符号和模型卡 a. 在原理图窗口中,选择面板Devices-BJT.。选择BJT-NPN放入原理图中, 如下所示。 b. 插入BJT_Model模型元件,如下所示。

射频识别(RFID)实验教程IV

第4章 RFID实验系统的检测与调试 4.1 电感元件的检测 RFID实验系统中的电感元件包括高频阻流线圈L1、L3和耦合(谐振)线圈L2、L4,它们分别对实现载波信号(能量)传送和编码信号(信息)解调(检波)起着关键作用。 电感元件采用QBG-3D型高频Q表进行检测,检测项目有电感量和Q 值,可在QBG-3D型高频Q表上一次完成。QBG-3D型高频Q表的使用方法参看附录3。 下面介绍电感元件测试方法: (1)高频阻流线圈L1、L3的测量: ①将待测试线圈接入测试回路接线柱17左边两个电感接入端; ②调整工作频段选择按键5或7,选定700KHz~1.95 MHz频段; ③调整谐振点搜索按键9,将谐振频率选定为795KHz; ④调整调谐回路的副调谐电容器调谐旋钮14,使刻度盘刻度 对“0”; ⑤调整调谐回路的主调谐电容器调谐旋钮15,使达到谐振(Q值调 谐指 示表12指示值最大),读取刻度盘刻度所指的电感值。 (2)耦合(谐振)线圈L2、L4的测量: ①将待测试线圈接入测试回路接线柱17左边两个电感接入端; ②调整工作频段选择按键5或7,选定5.2MHz~17 MHz频段; ③调整谐振点搜索按键9,将谐振频率选定为7.95MHz; ④调整调谐回路的副调谐电容器调谐旋钮14,使刻度盘刻度 对“0”; ⑤调整调谐回路的主调谐电容器调谐旋钮15,使达到谐振(Q值调 谐指 示表12指示值最大),读取刻度盘刻度所指的电感值。

4.2 高频振荡器的检测与调整 高频振荡器主要检测其输出信号的频率和波形及幅度,可用XJ4452型数字存储示波器在电路输出端(图2-5中U1B-12脚)进行检测。 XJ4452型数字存储示波器的使用方法参看附录4。 只要电路元件质量可靠、电路连接正确,其输出信号的频率和波形幅度均能达到要求。输出信号的频率应为13.56MHz,输出信号的幅度(峰-峰值)应为3V P-P左右。如果信号的频率有误差,可在C5上并联一只5~30P的可调电容进行调整。该点的信号波形不是标准的正弦波,但经过高频功率放大后在谐振线圈上可以得到波形很好的正弦波。 4.3 高频功率放大器的检测与调整 高频功率放大器是本实验系统的关键电路,要反复耐心的调整。 (1)高频功率放大管工作点的调整: ①将数字存储示波器探头接在高频功率放大管T1的C极检测该点的信号电压,选择5V/格档,加电后观察信号幅度,调整可调电阻RP2,使该点信号幅度达到最大,该点信号幅度应为20V P-P~30V P-P。 ②检测高频功率放大管T1的e极直流电压V e,该电压应为3V左右。 ③断开电源,检测高频功率放大管T1的e极对地电阻值R e,计算高频功率放大管直流工作电流I c≈I e=V e/R e和直流耗散功率P c=I c V ce,P c应不大于400mW,否则,高频功率放大管会发热烧坏。 (2)输出谐振回路的调整: 将数字存储示波器探头接在输出谐振回路元件C9//C10与L2连接点,检测该点的信号电压,选择10V/格档,加电后观察信号幅度,调整可调电容C9,使该点信号幅度达到最大,该点信号幅度应为55V P-P~80V P-,且波形很好。但将应答器天线L4靠近阅读器天线线圈L2时,该点信P 号可幅度降低为20V P-P左右。 4.4 应答器电路的检测与调整 (1)应答器耦合信号的检测: 数字存储示波器探头接在应答器天线L4耦合信号输入端a(图2-

澳维VCE国际班课程方案

澳维VCE国际班课 程方案

北京澳维教育咨询有限公司 CVE国际高中课程方案 (拟定)

北京澳维VCE国际高中课程方案 课程设置与学制 VCE,即澳大利亚维多利亚州高中教育证书——Victorian Certificate of Education,是澳大利亚维多利亚州教育课程评估署VCAA向完成11、级(相当于中国高中高二和高三)学习并达到教学要求的毕业生颁发的学历证书。VCE证书是衡量维州学生进入澳大利亚各大学深造本科课程的主要标准。 “澳维VCE国际高中课程”的学生将在2年+2月内完成18-20个单元纯英语教学的VCE课程,除了学习VCE核心课程外,还可利用晚自习或周末时间自修雅思/托福课程,毕业时获得澳大利亚维多利亚州教育部颁发的维多利亚高中毕业文凭(即VCE文凭)。凭此文凭和语言成绩,学生不光具备了直接申请澳洲所有大学的资格、还包括了申请英联邦、北美和欧洲所有英语授课大学的资格,包括哈佛、耶鲁、牛津和剑桥等。 一、澳方合作院校名单: 该项目对接澳洲高中学校均选折当地排名靠前,拥有雄厚教学实力,具有VCE教育资格的优秀学校。北京澳维教育咨询有限公司拥有多所澳洲高中资源,我们将于中方学校一起,在保证教学质量的前提下,综合考量多方面因素,选折最适宜的澳方合作高中。澳洲备选高中(不但限于)如下: THE PENINSULA SCHOOL;

Eltham College of Education ; Balwyn High School; boxhill high school; Glen wavely Secondary College. 二、国际班的课程设置可分为两种模式 1.标准VCE国际高中班(2年2月):VCE预备课程(6个月) +VCE核心课程(20个月); 2.一年制VCE核心课程班:VCE预备课程(2个月)+ VCE核心 课 程3、4单元(12个月)。这一模式主要针对普高高一和高二在读学生,为她们进入VCE国际班多提供了一次升学机会。◆标准VCE国际班课程设置 以 9月入学新生为例 第一阶段(级:/9- /1):主修VCE国际高中预备课程,强化英语教学,帮助学生达到学习VCE核心课程所需的要求和能力;第二阶段(级: /2- /10):VCE核心课程1、2单元; 第三阶段(级:/11- /11):VCE核心课程3、4单元,并于6月、11月参加澳洲统一的VCE大联考。 ◆一年制VCE核心课程设置 VCE核心课程班的学生9月份升入国际班后经过两个月的语言强化课程,直接进入标准VCE课程第三阶段,开始学习VCE核心课程3、4单元。

最新 融通《牛津高中英语》与VCE课程EAL的教学策略-精品

融通《牛津高中英语》与VCE课程EAL 的教学策略 本文以我校VCE课程EAL教学为研究对象,探讨了《牛津高中》高中和EAL教学在课程设置上的异同,并融通两套教材在词汇、语法、阅读和写作等方面的共通之处,更好地提高我校VCE课程EAL教学的教学质量。 1.课题研究背景 江苏省厅和连云港市教育局制定的教育发展纲要明确指出,要加快高中办学特色化、多样化的进程,要求各级各类学校积极开展国际交流,大力推进教育国际化的进程。 中澳VCE国际教育项目基地于2011年3月在我校揭牌,标志着国际化教育真正落户港城。VCE课程是澳大利亚维多利亚州高中课程的简称,这个项目将中国高中教育和澳大利亚高中教育融为一体,取双方教育教学之长,是实现中西教育珠联璧合的新型教育教学模式,它为中国学生进入澳洲和英联邦国家大学深造奠定了坚实的基础。 我校的VCE课程班由我校和澳大利亚维多利亚州墨尔本市的托马斯·卡尔中学合作办学,托马斯·卡尔中学是墨尔本市西部的一所天主教教会学校,该校成立于1997年,招收七至十二年级的学生,与我校的学生年龄相仿,现有学生1000余名,已经为澳大利亚众多一流大学输送了很多优质生源。 我校的VCE高中课程班采用中、英文双语教学模式,学生在三年的学习中要完成国内的高中教学计划,同时完成澳洲高中的五门核心课程: 中国课程用中文教学,澳洲课程用中、英文教学,学生全部用英文完成作业及各种考试,从而使学生在三年的学习中掌握英文词汇上万个,把对英语听、说、读、写等方面的强化训练渗透在整个教学过程中,使学生的英语成绩和实际运用英语的能力均得到显著提高。与国际教育无缝对接的学习方式有利于中国学生综合素质的提升,并在思维方式、学习方式、融合和语言沟通等方面展现优势。 中澳VCE国际教育项目是连云港市第一个具有“双学籍、双文凭、双通道、双语教学”特色的中澳高中课程合作班,即把澳洲高中课程以同等质量移植到连云港外国语学校,进行省时、省钱、省心、省力又高效的高中课程合作项目。 双学籍即学生具有中澳两国的高中学籍,分别享受两国高中生同等待遇。 双文凭即学生完成学业成绩合格后,可获得国内高中毕业证书和澳大利亚高中VCE证书。

相关主题
相关文档
最新文档