MFC学习笔记.doc_第1页
MFC学习笔记.doc_第2页
MFC学习笔记.doc_第3页
MFC学习笔记.doc_第4页
MFC学习笔记.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

关于API 应用程序利用函数调用来通知操作系统来执行相应的工作,也就是说操作系统以函数的形式把它的功能提供给应用程序使用,这个调用就称为系统调用,这些函数的集合就是应用程序编程的接口,API(Application Programming Interface) 比如Create Window就是一个API函数,应用程序调用这个函数,操作系统就会产生一个相应的窗口。关于消息和消息队列操作系统将感知到的事件(比如键盘上按下了那个键)传递给应用程序,是通过消息机制来实现的,操作系统将每个事件都包装成一个成为消息的结构体MSG,来传递给应用程序。MSG结构体定义如下 通过MSDN在线帮助系统可查看Typedef struct tagMSGHWND hwnd; /新的数据类型,指示一个窗口的句柄,也就是打开一个矩形的区域,可以作为变量来存放窗口的标示。消息和哪一个窗口相关句柄:资源的标示类似指针,用来索引资源,可细分为图标句柄(HICON),光标句柄(HCURSOR),窗口句柄(HWND),应用程序实例句柄(HINSTANCE)。操作系统给每一个窗口指定一个唯一的标示号即窗口句柄。UINT message;/无符号整形,表示一个句柄的消息,作为整数的表示方式传递消息。常用宏来表示具体的消息,后便会讲。消息本身是什么WPARAM wParam;/ 首先WPARAM是由UINT_PTR定义的,定义语句为/ typedef UINT_PTR WPARAM; 而UINT_PTR就是一个整形其定义方式为/ typedef _w64 unsigned int UINT_PTR;LPARAM lParam;/同理WPARAM,都表示了关于这个消息的附加信息。比如我们按一个A键,那么返回的是一个WM_CHAR信息,而其字符代码就被保存在WPARAM或LPARAM中。 之所以用一个新定义的WPARAM,LPARAM而不用整形,是为了程序的便于理解和表示。消息的附加信息是什么DWORD time;/double word,双16位类型,表示消息被传递出去的时间POINT pt;/POINT 为一个结构体类型,点结构体,定义如下Typedef structtagPOINT LONG x; LONG y;POINT,*PPOINT;实际上也即是定义了坐标,以表示当消息被投递的时候,鼠标的位置。 MSG;WinMan函数Windows 程序的入口函数 int WINAPI WinMan( HINSTANCE hinstance,/指示当前运行实例的句柄 HINSTANCE hPrevInstance,/指示先前运行实例的句柄,该参数现在一般不需要,总是为空 LPSTR ipCmdLine,/LP代表长指针,str是字符串,指向字符串的常指针。接受命令行的参数。 int nCmdShow/ 显示的状态,指定程序的窗口如何显示。比如窗口大小。);这只是入口函数由操作系统调用而不是我们调用,因此里面的参数由操作系统赋值。有了入口函数之后,接下来就是窗口的创建。步骤:1.设计一个窗口类。/设计窗口的图标,背景等设计窗口类Typedef struct_WNDCLASSUINT style;指定了类的类型。怎么使用? 比如 WNDCLASS wndclass; wndclass.style=CS_HREDEAW | CS_VREDRAW; 后边的两个赋值参数分别表示窗口垂直重画和水平重画,也就是窗口在水平拉动和垂直拉动下所作出的变化。WNDPROC lpfnWndProc;窗口过程的类型,用来接收函数指针。也成为回调函数,当应用程序收到某个窗口的消息时就应该调用某一函数来处理这条消息,这一调用过程有操作系统完成,但回调函数本身的代码必须由应用程序自己完成,对于这一条消息,操作系统到底调用哪个函数来处理呢,就是接收窗口所属类型中的lpfnWndProc成员指定搞的函数。每一种不同类型的窗口都有自己的专用的回调函数。都是通过lpfnWndProc成员指定搞得。int cbClsExtr;指示的是类的额外的数据。也可以成为类的附加内存,属于类的所有窗口所共享。通常设为零int cbWndExtra;窗口附加内存,通常设置为0;HINSTACN hInstance;实例号,代表了应用程序当前的实例号HICON hIcon; 图标句柄 用法 wndclass.hIcon=LaodIcon(NULL,IDC_APPLICATION(表示应用程序的图标));LaodIcon装载图标函数函数HICON LoadIcon(HINSTANCE hInstance,实例号,设定实例号,当标准图标被加载时,可设为空。LPCTSTR lpIconName;设定装载的图表名) 当然也可以创建一个图标。有相应的函数。 HCURSOR hcursor;光标 实例 wndclass.hcursor=LoadCursor(NULL,IDC_ARROW),标准光标时实例号设置为空。第二个参数的意思是光标的形状为箭头型。HCURSOR LoadCursor( Hinstance hInstance; LPCTSTR lpcursorname); HBRUSH hbrBackground;句柄,画刷子句柄。这里我们用的是,GetStocobject(DKGRAY_BRUSH)这个函数。只有一个参数,目的是获取一个句柄,画刷,调色板之类的句柄。不同的画刷会造成不同的背景。但在之前要进行强制类型转换转换成HBRUSH。 LPCTSTR lpszMenuName; LPCTSTR lpszClassName;类名设置2.注册窗口类。/ RegisterClass 注册一个窗口类 ATOM RegisterClass( CONST WNDCLASS *lpwndclass);应用形式 RegsiterClass(&wndclass);3.创建窗口。/首先定义一个窗口句柄HWND hwnd;hwnd=creatwindow(“类名”,”窗口的名字”,窗口类型,”,”,”) creatwindow函数HWND Creatwindow( LPCTSTR lpclassname,类名 LPCTSTR lpwindowname,窗口的名字 DWORD dwStyle,窗口类型 int x, int y, 窗口水平垂直位置 int nWidth, int nHeight,定义窗口的宽和高 HWND hWndParent,父窗口句柄,当多个窗口时会出现父窗口句柄。 HMENU hMenu,菜单句柄。 HINSTANCE hInstance,实例号 LPVOID lpParam);数据指针,在创建多文档时会用到。4.显示及更新窗口/ Showwindow(HWND hWnd,/要显示的窗口 int ncmdShow/显示的状态。 比如最大化或者最小化或正常显示显示。) 然后调用更新窗口,将窗口刷新一下 UpdateWindow(hwnd); 消息循环MSG msgWhile(GetMessage(&msg,null,0,0) TranslateMessage(&msg);/消息转换函数。产生一个新消息。 DispatchMessage(&msg);将收到的消息传递到窗口的回调函数。 GetMessage函数从消息队列中取出消息BOOL GetMessage( LPMAG lpMsg, 消息信息,利用消息结构体变量返回。 HWND hwnd, 句柄,指示获取那一个消息,当设置为NULL时表示获取所有的消息。UINT wMagFilterMin,UINT wMsgFilterMax,设置消息的范围。分别设定最小和最大值。如果都设置为0则表示所有的范围。);GetMessage 是一个返回值类型,如果得到一个消息则返回一个真,所以可以放到while循环。BeginPaint(HWND hwnd,LPPAINSTRUCT lpaint)第二堂课 掌握 C+ 一 c+的标准输入输出流Cin ,coout ,cerr.在C+中结构体内可以封装函数。C语言不行。在C+中可以吧结构体看成一种特殊的类。C+规定每个类都必须有一个构造函数,没有构造函数就不能创造对象,当然没有明显定义构造函数的话,C+会默认定义一个构造函数只负责创建对象。很显然当对象结束时,C+同样会提供一个函数来回收内存,也就是析构函数构造函数。可以有多个构造函数,根据带参的不同则函数的功能不能,这也就是函数的重载。当然函数重载并不仅限于构造函数。 但必须满足两个条件 要么参数类型不同要么参数个数不同。隐含指针this指针的作用。它指向对象本身,代表对象的地址。类的继承。Class Fish: public Animal;在子类中向基类的带参构造函数传递参数。 Fish:Animal(22,33)函数的覆盖。发生在父类和子类之间,参数类型和个数相同的函数,子类中的函数会覆盖父类的函数。 不允许被覆盖则需要加一个属于符号: 类型转换。关键看是否兼容。虚函数virtual,定义虚函数的目的是在某一特定情况下调用子类的函数。也就是多态的概念。多态性:当C+编译器在编译的时候,发现Animal类的breath()函数是虚函数,那么这个时候C+就会采用迟绑定的技术,在运行时依据对象的类型确认调用哪一个函数。纯虚函数 Virtual void breath()=0;表明不被实现的函数名称。比如这种行为我们不太确定,但又是必须具有的行为,那么我们就要声明一个纯虚函数,让子类去实现。引用的概念Int a=6;Int &b=a;这段语句就是引用b和a公用一块内存空间,如果改变b的值那么a的值也会改变。但指

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论