您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > Windows编程概述
C++大学基础教程小学期讲义——Windows编程Windows编程的特点事件驱动消息循环图形输出事件驱动传统的MS-DOS程序是一系列预先定义好的操作序列的组合,他或者是顺序的、分支的、循环的,由程序直接控制过程的顺序。这样的程序设计方法是交互性差。事件驱动程序设计是一种全新的程序设计方法,它根据事件的发生来控制。也就是说,通过与用户交互的结果来控制程序的运行顺序。消息循环事件驱动是靠消息循环机制来实现的。Windows的消息类别输入消息:窗口中接收的键盘、鼠标消息控制消息:按钮、下拉框等接收的消息系统消息:屏幕刷新等用户消息:自定义的消息消息循环模型当用户触发一个事件后,产生一个消息号,OS根据消息号的不同将消息发送给不同的窗口,由各个窗口的消息处理函数响应。图形输出DOS下是字符模式,每一个输出都是按行列字符格式输出Windows下图形模式,按照像素、点坐标的格式输出Windows应用程序组成多文件结构1.CPP源程序文件2.H头文件3资源文件Windows应用程序组成1.CPP源程序文件源程序文件包含了应用程序的数据、类实现、包括事件处理、用户界面对象初始化等。2.H头文件:头文件包含了.CPP源文件中所有数据、模块、类的声明。当一个CPP源文件要调用另一个CPP中所定义的模块功能时,需要包含那个CPP文件对应的头文件。Windows应用程序组成3.资源文件包含了应用程序所使用的全部资源定义,通常以.RC为后缀名。注意这里说的资源是应用程序所能够使用的一类预定义工具中的对象,包括:字符串资源、加速键表、对话框、菜单、位图、光标、工具条、图标、版本信息和用户自定义资源等。什么是MFC?为了方便用户编写Windows程序,Microsoft公司提供了MFC类库MFC是MicrosoftFoundationClassLibrary),提供了图形环境下应用程序框架及创建应用程序的组件,通过VC的Wizard功能实现。向导概述什么是程序框架?MFC提供了三种程序框架,区别是基于对话框的程序不具被标准的标题栏、主菜单、工具栏、状态栏;单文档的窗口每次只能打开一个文档,比如Word,多文档窗口可以同时打开多个文档,比如VC。SingleDocumentMutipleDocumentDialogBased概述MFC提供了什么应用程序组件?应用程序组件就是MFC类,包括窗口类、对话框类、控件类、文件类、画图类等等。开发人员不需要自己在编程绘制各种窗口,直接调用MFC提供的这些类,就能够轻松实现一个Windows程序。学习步骤1、学生管理系统1)基于对话框的程序结构2)对话框的使用3)各种控件的使用2、画笔1)单文档的结构2)菜单和工具栏的使用3)CDC类的使用1、学生管理系统关键知识点1、程序框架——基于对话框的应用程序2、什么是对话框?3、什么是控件?基于对话框的应用程序列表按钮组合框组框标签对话框1、程序结构1、DialogBased每个应用程序都包含一个应用程序类CWinApp类,应用程序的入口就是CWinApp类的InitInstance()成员函数。每个应用程序可以多个对话框,但基于对话框的应用程序只有唯一的一个主对话框,也叫主窗口,当程序运行显示主窗口,主窗口关闭,应用程序关闭。多文件结构什么是多文件结构?一个应用程序中包含多个.h文件和.cpp文件,这就是多文件结构。.h文件:存放类声明.cpp文件:存放类实现例子:工程名Test例子:工程名TestCTestApp类InitInstance():应用程序入口InitInstance()中的关键代码CTestDlgdlg;//系统默认生成的对话框m_pMainWnd=&dlg;//指定为主对话框intnResponse=dlg.DoModal();//弹出对话框例子:工程名TestCTestDlg类系统默认提供的一个对话框类。CTestDlg类DoDataExchage():DDX机制实现OnInitDialog():对话框初始化函数OnPaint():屏幕刷新函数对话框和控件说明对话框和控件是MFC类,具有共同的基类CWnd,所不同的是对话框相当于一个容器,在对话框上面可以放置各种控件。对话框每个对话框包含1、resource:外观2、class:1)普通的成员变量2)控件对应的成员变量(DDX机制)3)普通的成员函数4)事件处理成员函数对话框对话框的基类是CDialog,该类不能直接使用。每一个用户创建的对话框都是从CDialog类中派生出来的,对话框上的控件相当于该对话框的成员变量,通过操作派生出来的对话框的对象,来操作对话框。创建对话框的步骤:1、创建资源2、创建CDialog的派生类对话框两类1、有模式对话框绝大部分对话框都是有模式对话框。特点是当对话框打开时,控制由父窗口转移到新打开的对话框上,直到对话框关闭,控制权才交还给父窗口。2、无模式对话框父窗口和弹出的对话框可以同时显示,哪一个获得了焦点,控制权就属于哪一个。比如:查找对话框对话框如何使用有模式对话框?对话框创建完毕后,1、在父窗口中创建该对话框类的对象2、通过该对象的成员变量和成员函数操作对话框有模式对话框有模式对话框中最重要的成员函数doModal();弹出对话框,该函数的返回值表示使用哪一个按钮关闭窗口。对话框中最重要的事件处理成员函数1、初始化窗口在窗口弹出前执行OnInitDialog()2、关闭窗口在窗口关闭前执行OnOK()或OnCancel()函数。控件每个控件包含1、resource:外观2、class:1)成员变量2)普通的成员函数3)事件处理成员函数比如:按钮控件Resurce:每一个Resource都由一个资源ID标识Class:CButton类每一个按钮都是CButton类的一个对象比如:按钮控件我们编程通过操作按钮对应的对象,来操纵按钮。比如:改变按钮的显示文本CButtonb1;b1.SetWindowText(“测试”);我们怎么能够知道这个对象b1对应哪一个按钮的Resource呢?通过DDX机制(重要)通过DDX机制(重要)什么是DDX机制?DDX是对话框数据交换,系统通过下面的代码,将一个资源IDC_BUTTON1和一个对象m_b1关联起来,我们可以通过编程操作这个对象m_b1来操作控件。DDX_Control(pDX,IDC_BUTTON1,m_b1);资源ID资源对应的对象通过DDX机制(重要)系统通过classWizard工具自动生成控件所对应的类对象,也称为控件变量,一般有两种类型:1)值对应变量,仅仅与控件的内容一一对应;使用UpdateData()获取和设置控件的内容。2)控件对应变量,这种是与控件完全一一对应的,使用控件类型的成员函数控制控件。比如:按钮控件当点击按钮时,可以触发一个事件,这就是Windows著名的消息机制消息机制包含1、消息号:比如:BN_CLICKED、BN_DOUBLECLICKED2、事件处理成员函数3、消息映射比如:按钮控件当点击按钮时,系统获取消息号,根据消息映射机制,调用对应的消息处理函数。下面的代码就是消息映射机制的实现BEGIN_MESSAGE_MAP(CStudyDlg,CDialog)ON_BN_CLICKED(IDC_BUTTON1,OnButton1)END_MESSAGE_MAP()消息号资源ID消息处理函数消息机制(重要)系统通过classWizard工具自动生成消息映射,但具体的事件处理函数,由用户自己编写。事件处理函数的通过前缀afx_msg标识,与普通的成员函数的区别。1、学生管理系统理论知识1、DDX机制的使用2、消息机制的使用主要参考vc经典教程.chm中的第5、6课2、画笔基于单文档的程序框架标题栏菜单栏工具栏状态栏单文档框架结构包含四个主要的类:应用类CWinApp每个应用程序都仅有一个,作为程序入口主框架窗口类包括菜单,工具栏、状态栏、窗口标题文档类负责存放程序数据并读写磁盘文件数据视图类负责与用户进行交互。单文档框架结构这4个类的生成顺序应用类-文档类-框架类-视图类画笔程序的主要功能在视图类中完成关键知识点菜单在resource中创建、修改,每个应用程序,都有一个指定的主菜单IDR_MAINFRAME工具栏在resource中创建、修改,每个应用程序,都有一个指定的主工具栏IDR_MAINFRAME菜单和工具栏菜单项和工具栏按钮只有两种消息1、COMMAND点击菜单时触发2、UPDATE_COMMAND_UI改变菜单或工具栏的状态,比如选中和非选中状态屏幕操作绘图类CDC类用来在屏幕上绘制各种颜色的图形、文本、图片等等。每个应用程序都有自己的默认的CDC类,在系统绘制屏幕函数OnDraw()函数中可以获得。CDC使用的工具GDIOBject类(基类)CBitmap位图类CBrush绘图方式类CFont字体/字型类CPalette调色板类CPen绘图工具类CRgn绘图区域类CDC类和CGDIObject类的关系CDC通过SelectObject()成员函数选择不同CPen类,可以绘制不同颜色、宽窄的直线、矩形边框等;通过选择不同CBrush类,可以绘制不同颜色填充图形;选择不同Cbitmap类,可以显示不同的图片……
本文标题:Windows编程概述
链接地址:https://www.777doc.com/doc-2867675 .html