Windows编程基础主要内容
Windows编程基础
用 MFC创建 Windows应用程序
用 AppWizard生成 MFC应用程序
C,C++,VC之比较
C vs,C++
c和 c++都是程序设计的语言
c是 c++的子集,C++增强了 c的功能
c++增加了面向对象的功能,以事件驱动程序执行
VC vs,C++
vc是工具,而 c++是程序设计语言
vc是基于 c++的可视化集成开发环境,拥有 C++编译器和 MFC( 微软基础类库)等。
c++增加了面向对象的功能,以事件驱动程序执行
MFC
c++编译器编译器
C++C
Windows编程基础键盘消息事件消息队列提取消息处理消息应用程序其他消息鼠标消息多任务执行环境
windows为运行的应用程序创建消息队列,当相应的事件发生后,windows将其转换为消息,然后放入消息队列,应用程序不断地从队列中取出消息,然后根据消息发送到对应的窗口中执行相应的程序代码。
事件:
单击键盘和鼠标、改变窗口大小 ……
被发送到对应的 窗口基本概念
窗口:
由应用程序创建的一个用于接收用户输入和显示输出的矩形区域。
由非客户区和客户区组成
是 windows界面显示的基本单位
根据应用程序拥有的窗口特点可分为单文档应用程序、
多文档应用程序、对话框式应用程序编写 windows应用程序应首先创建一个或多个窗口,
随后程序的运行过程就是窗口内部、窗口和窗口之间、窗口与系统间进行数据处理和数据交换。
再看事件驱动
句柄:
--一个 32位 数值,用于标识 windows的各种对象,
它是 windows系统内部表的索引值,而非对象所在的内存地址。
类型 含义 类型 含义
HANDLE 通用对象句柄 HCURSOR 光标句柄
HWND 窗口对象句柄 HBRUSH 刷子句柄
HDC 设备描述表句柄 HPEN 画笔句柄
HMENU 菜单句柄 HFONT 字体对象句柄
HICON 图标句柄 HINSTANCE 实例句柄表中句柄的类型均为 void*,是一个 32位的指针。
消息:
Windows的消息由三部分组成:消息号、字参数和长参数。
可分为系统定义消息和用户自定义消息。 Windows
对不同的系统定义消息采用不同的前缀。
消息 含义
WM_ACTIVATE 窗口变为活动或不活动时发送
WM_MOVE 移动窗口时发送
WM_CLOSE 关闭窗口时发送
WM_PAINT 重绘应用程序窗口一部分时发送
WM_QUIT 终止应用程序的请求
WM_SIZE 改变窗口大小后发送常用 windows窗口消息
消息 MSG的数据结构:
typedef struct tagMSG
{
}tagMSG
HWND hwnd; //检索消息的窗口句柄
UNIT message; //代表一条消息的值
WPARAM wParam; //消息附加信息的字参数
LPARAM lParam; //消息附加信息的长参数
DWORD time; //消息入队的时间
POINT pt; //消息附加信息的长参数
//来自 windows.h文件说明:
消息 MSG是一个结构体类型的数据结构。
WNDCLASS:
--包含窗口类的全部信息
typedef struct tagWNDCLASS
{
}tagMSG
UNIT style; //窗口样式,一般为 0
WNDPROC lpfWndProc; //指向窗口函数的指针
int cbClsExtra; //分配在窗口类结构后的字节数
int cbWndExtra; //分配在窗口实例后的字节数
HINSTANCE hinstance; //窗口类应用程序实例句柄
HICON hIcon; //窗口类的图标
HCURSOR hCursor; //窗口类的光标
HBRUSH hbrBackground; //窗口类的背景刷
HPCSTR hpszMenuName; //窗口类菜单资源名
HPCSTR hpszClassName; //窗口类名
Windows编程中的常用基本数据结构数据结构 描述
MSG 应用程序消息的结构
WNDCLASS 定义窗口类
PAINTSTRUCT 定义窗口用户域的绘制消息
RECT 定义矩形
POINT 定义点
SIZE 定义矩形的长度和宽度图形设备界面 (GDI)简介
对比 DOS环境下向显示设备输出数据
--DOS,物理设备和应用程序是紧耦合
--windows,物理设备和应用程序是松耦合 --GDI
设备环境 (DC,Device Context)
--GDI保存的 数据结构,包含输出设备的绘图特征 。
--在输出设备上输出的先决条件是获得该设备的 DC。
--DC包含一些抽象的对象(画笔、画刷、字体)用于图形绘制。
资源资源即数据,包含在应用程序的,exe文件中,通常资源留在磁盘上,只有当 windows需要某一资源时,才将其装入内存中。
VC中有十种资源,分别是加速键、位图、光标、对话框、图标、菜单、串表、工具条和版本信息。
资源在称为,资源描述文件,(.rc)的 ASCII码文件中定义。 VC对所有类型的资源都提供了资源编辑器进行可视化编辑。
MFC概述
应用程序接口 (Application Programming Interface,API)
--调用 windows的各种服务。
--大多数 API位于三个核心 DLL中:
user32.dll,GDI32.dll,kernel32.dll
--采用其开发 windows应用程序过于繁琐。
微软基础类库 (Microsoft Foundation Class,MFC)
--封装:封装了 windows API
--类库,MFC是一个庞大的类库,扩展了 C++的类结构
--文档 /视图模型:使应用程序和界面元素相分离文档:维护、管理数据。如数据的读取、修改、存储视图:接收并显示数据,将数据处理交给文档
--消息映射机制:自动处理消息,将 windows消息映射到一个成员函数进行处理,简化消息处理方式。
MFC的层次结构
绝大部分类派生自基类 Cobject(VC中类均以 C开头 )。
少部分非 Cobject派生类主要被用作封装 Windows的数据结构或对 MFC库特定属性进行支持。
类 功能
CCmdUI 为菜单项和控制条按钮的允许或禁止提供支持
Cpoint 对 windows系统的 PONIT结构提供封装
CRunTimeClass 定义一个静态数据结构以便存放类的属性细节
Csize 对 windows系统的 SIZE结构提供封装
CString 支持动态字符串
CObject的主要派生类
窗口类窗框类又可以划分为 框架窗口,视图窗口、
对话框、控件四个类别。
类名 说明
CWnd 通用窗口类
CFrameWnd 单文档应用程序的主框架窗口
CMDIFrameWnd 多文档应用程序的主框架窗口
CMDIChildWnd 多文档应用程序的子窗口
CSplitterWnd 拆分窗口图形类图形类可进一步划分为两个子类:设备环境和图形设备。
--设备环境类:完成对 windows设备环境的封装
--图形设备类:用于绘图的类,如画笔、字体、画笔应用程序类
--Cdocument,文档类,保存应用程序数据,并提供磁盘文件操作;
--CWinApp,应用程序类,提供程序的初始化等功能
Windows应用程序类型
单文档窗体
多文档应用程序
对话框应用程序
VC常用文件名介绍
.cpp是源程序代码 C++文件
.h是包含函数声明和变量定义的头文件
.rc是定义资源的资源脚本文件
.dsp是工程文件,记录当前工程的有关信息
.dsw是工作区文件,一个工作区可能包含一个或多个工程