Windows系统开发教程最完整版
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
缺点:在没有安装VC的机器上不能运行 解决办法:将vc下相关的DLL文件拷贝到Windows文 件夹中
作为静态的DLL:编译时所有用到的库都被链接。
缺点:程序较大
6
自动生成相关的类
ChelloView:视类,可选择基类,用来显示文档 数据并和用户交互
如果在第五步中选择MFC风格,则基类为CView类, 若选择资源管理器风格,则为CListView类
2、MFC应用程序框架
使用MFC应用程序生成向导创建Hello World程序
File → New… → Projects → MFC AppWizard(exe)
1 单文档
应用程序类型
多文档
对话框
文档/视图结构体系支持:即是否支持文档/视图结构
2
数据库支持
否:不支持 标题文件:不支持,但预留接口 查看数据库不使用文件支持:支持 查看数据库使用文件支持:支持
File → New…
Visual C++6.0 可以创建的文件类型
文件类型 Active Server Page Binary File Bitmap File C/C++ Header File C++ Source File Cursor File HTML Page Icon File Resource Script Resource Template SQL Script File Text File 说明 网页制作 创建二进制文件 创建位图文件 创建 C/C++头文件 创建 C++源文件 创建光标文件 创建 HTML 文件 创建图标文件 创建资源脚本文件 创建资源模板文件 创建 SQL 脚本文件 文本文件
DC:Device Context,即设备上下文或设备描述表 或设备环境
引入原因: Windows不容许用户直接操作硬件,所以定义 了一个抽象层DC,所有与绘图或显示相关操作封装在CDC 类中,要访问显示设备就必须使用CDC类中提供的函数
应用程序
DC
例如:显示器、打印机等 显示设备
硬件设备
Visual C++的编程方式
1 SDK: MFC:
Microsoft Foundation Class, 交互式的编程法, 对API函数进行了封 装,包含许多类。
2
Software Development Kit, 传统编程法,采用 windows API 函数进行编程。
1、Visual C++开发环境
画笔
• BLACK_PEN Black pen(默认) • NULL_PEN Null pen • WHITE_PEN White pen
画刷
• BLACK_BRUSH Black brush • DKGRAY_BRUSH Dark gray brush • GRAY_BRUSH Gray brush • HOLLOW_BRUSH Hollow brush • LTGRAY_BRUSH Light gray brush • NULL_BRUSH Null brush • WHITE_BRUSH White brush
载入库存对象
SelectStockObject(int nIndex );
例如:pDC->SelectStockObject(WHITE_PEN); 例如:pDC->SelectStockObject(GRAY_BRUSH);
自定义对象
自定义画笔 自定义画刷
自定义画笔 CPen( int nPenStyle, int nWidth, COLORREF crColor );
自动:例如在Word和Excel中都支持VB,可以在 Word和Excel中用VB(确切的说叫VBA)编程, 而VC则不支持,要使VC支持,则要选中自动 ActiveX:第三方控件,与开发平台无关
4
程序的外观
选中相关项后,在左端会有图例显示
5
风格、备注、及MFC库的支持
风格
源代码备注:例提示客户代码的书写位臵 作为共享的DLL:运行时才添加mfc库
Device Context
GDI (图形设备 接口,进行 绘图工作)
画笔
画刷 字体
绘图 工具
Βιβλιοθήκη Baidu
调色板
位图
CDC* pDC CDC:封装了所有的绘制和打印函数 pDC为指向CDC类的指针,可以使用pDC访 问CDC类中的函数(pDC->) OnDraw函数被调用的情况: 程序运行后自动调用 窗口重绘之后,例如窗口的大小被改变、窗口 被覆盖
3
对复合文档类型和ActiveX的支持
注:复合文档是OLE(Object Linking and Embedding )的一项技术
没有,不需要 容器:例如,在Word中运行Excel程序,Word 相对与Excel就是容器 微型服务器:例如,在Excel中的一些资源,其它 程序可以调用,Excel就是服务器 完整服务器 容器和服务器
关键代码说明
Helloview.h: CHelloView类的定义
Private Protected Public
GetDocument()
•定义变量 •定义函数
Helloview.cpp #include “helloView.h”
构造函数:变量初始化
析构函数
PreCreateWindow():在窗口创建之前要做的工 作
起始点坐标
常用绘图函数
画点: SetPixel( int x1, int y1 , COLORREF crColor ); 绘制线: MoveTo( int x1, int y1 ); LineTo( int x2, int y2 ); 绘制矩形: Rectangle ( int x1, int y1, int x2, int y2 ); 绘制椭圆: Ellipse( int x1, int y1, int x2, int y2 ); 例:pDC->Ellipse(0,200,100,120);
File → New…
VC6.0 可以创建的工程文件类型
项目类型 ATL COM AppWizard Win32 Dynamic-Link Library MFC ActiveX ControlWizard MFC AppWizard(dll) Database Project Win32 Application ISAPI Extension Wizard MFC AppWizard(exe) 说明 创建 ATL 应用程序 创建 Win32 动态链接库 创建 ActiveX 控件程序 创建 MFC 动态链接库 创建数据库工程文件 创建 Win32 应用程序 创建 Internet 服务器或过滤器 创建 MFC 可执行程序
Java: 适合开发基于Web 的应用程序
Windows 运行机制
Windows 应用程序
函 ③ 数 ④ 消 息
Windows 操作系统
①
② 输入输出设备
注:
操作系统所能够完成的每一个功能都有一个函数 与其对应,也就是说,操作系统把它能够完成的 功能以函数的形式提供给应用程序使用,这些函 数的集合就是Windows操作系统提供给应用程序 的编程接口(Application Programming Interface),简称Windows API。
例如:CreateWindow():创建一个窗口
应用程序
调用函数
操作系统
实现创建窗口的功能
消息:报告有关事件发生的通知,是一种 数据结构
例如:鼠标单击窗口
鼠标单击事件发生
windows操作系统获取到这一事件,并将事件 以消息的形式传递给应用程序
应用程序获取消息,并调用响应函数处理消息
例如,设计字处理软件,则要选择CEditView类
ChelloDoc:文档类,用于管理文档数据
CMainFrame:框架类,用来产生应用程序的主 框架窗口
ChelloApp:应用程序类,用来管理应用程序实 例,放入口函数
在vc中将数据显示和数据本身分开
文档:数据,CDocument
例如:CBrush brush(HS_CROSS,RGB(0,0,255));
可省,默认为实心
载入自定义对象
SelectObject(CPen* pPen );
例如: CPen pen(PS_DOT,1,RGB(255,0,0)); pDC->SelectObject(&pen); 非1时会出现什么情况?
计算机与信息工程学院
Windows系统开发
主讲教师:郭迎春
guoyc@imau.edu.cn
驱动程序开发
DDK、WDK、DriverStudio、Windriver
应用软件开发
Windows操作系 统核心代码采用
Windows应用软件开发 语言
C/C++: 主流的开发工具为 Visual C++,它以 c++语言为基础 。 特点:代码执行效 率高
Hello World程序
void CHelloView::OnDraw(CDC* pDC) { CHelloDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here pDC->TextOut( 0,0,"hello world"); }
• 作用:数据存储,加载等
视图:显示,CView
• 作用:数据显示,修改等
VC++的项目工作区窗口
ClassView ResourceView FileView
运行
运行 VC工程文件夹下的文件
Debug:exe文件所在的位臵 Res:资源文件夹 hello.cpp和hello.h:包含CExamApp类 helloView.cpp和helloView.h helloDoc.cpp和helloDoc.h MainFrame.cpp和MainFrame.h StdAfx.h:标准的全局函数定义
常用的画笔样式: PS_SOLID
PS_DASH PS_DOT PS_DASHDOT
颜色: RGB(nRed, nGreen,nBlue)
蓝色值 绿色值 红色值 RGB(0, 0, 255) RGB(0, 255, 0) RGB(255, 0, 0)
例:CPen pen(PS_DOT,1,RGB(255,0,0));
自定义画刷
CBrush(int nIndex, COLORREF crColor );
画刷的样式(nIndex): HS_BDIAGONAL Downward hatch at 45 degrees HS_CROSS Horizontal and vertical crosshatch HS_DIAGCROSS Crosshatch at 45 degrees HS_FDIAGONAL Upward hatch at 45 degrees HS_HORIZONTAL Horizontal hatch HS_VERTICAL Vertical hatch
OnDraw(CDC* pDC) CExamDoc* pDoc = GetDocument(); •获取文档的地址放在pDoc中,要使用文档 中的数据则可以使用pDoc→ •例如,文档中的x,则使用pDoc→x获取值 ASSERT_VALID(pDoc); •宏定义,确保上条语句的结果有效 CDC
常用绘图工具
画笔:负责绘制直线和曲线的工具 画刷:负责填充图形的工具
绘图的一般过程:
创建或取得设备环境(DC) 创建绘图工具(画笔、画刷等)(否则采用默 认的绘图工具) 将绘图工具选入设备环境 绘制图形 释放获得的设备环境
创建和载入绘图工具
库存对象(StockObject)(基本工具)
Windows程序设计的核心就是消息的传递 和处理
帮助文档:msdn 资料:
孙鑫vc++视频教学 VC技术内幕(可做参考)
1
2 3 4 5
Visual C++开发环境
MFC应用程序框架 基本事件处理 映射模式和滚动视图 MFC资源
6
7 8 9 10
ActiveX控件
动态链接库(DLL) 多线程编程 文档与视图 数据库编程
作为静态的DLL:编译时所有用到的库都被链接。
缺点:程序较大
6
自动生成相关的类
ChelloView:视类,可选择基类,用来显示文档 数据并和用户交互
如果在第五步中选择MFC风格,则基类为CView类, 若选择资源管理器风格,则为CListView类
2、MFC应用程序框架
使用MFC应用程序生成向导创建Hello World程序
File → New… → Projects → MFC AppWizard(exe)
1 单文档
应用程序类型
多文档
对话框
文档/视图结构体系支持:即是否支持文档/视图结构
2
数据库支持
否:不支持 标题文件:不支持,但预留接口 查看数据库不使用文件支持:支持 查看数据库使用文件支持:支持
File → New…
Visual C++6.0 可以创建的文件类型
文件类型 Active Server Page Binary File Bitmap File C/C++ Header File C++ Source File Cursor File HTML Page Icon File Resource Script Resource Template SQL Script File Text File 说明 网页制作 创建二进制文件 创建位图文件 创建 C/C++头文件 创建 C++源文件 创建光标文件 创建 HTML 文件 创建图标文件 创建资源脚本文件 创建资源模板文件 创建 SQL 脚本文件 文本文件
DC:Device Context,即设备上下文或设备描述表 或设备环境
引入原因: Windows不容许用户直接操作硬件,所以定义 了一个抽象层DC,所有与绘图或显示相关操作封装在CDC 类中,要访问显示设备就必须使用CDC类中提供的函数
应用程序
DC
例如:显示器、打印机等 显示设备
硬件设备
Visual C++的编程方式
1 SDK: MFC:
Microsoft Foundation Class, 交互式的编程法, 对API函数进行了封 装,包含许多类。
2
Software Development Kit, 传统编程法,采用 windows API 函数进行编程。
1、Visual C++开发环境
画笔
• BLACK_PEN Black pen(默认) • NULL_PEN Null pen • WHITE_PEN White pen
画刷
• BLACK_BRUSH Black brush • DKGRAY_BRUSH Dark gray brush • GRAY_BRUSH Gray brush • HOLLOW_BRUSH Hollow brush • LTGRAY_BRUSH Light gray brush • NULL_BRUSH Null brush • WHITE_BRUSH White brush
载入库存对象
SelectStockObject(int nIndex );
例如:pDC->SelectStockObject(WHITE_PEN); 例如:pDC->SelectStockObject(GRAY_BRUSH);
自定义对象
自定义画笔 自定义画刷
自定义画笔 CPen( int nPenStyle, int nWidth, COLORREF crColor );
自动:例如在Word和Excel中都支持VB,可以在 Word和Excel中用VB(确切的说叫VBA)编程, 而VC则不支持,要使VC支持,则要选中自动 ActiveX:第三方控件,与开发平台无关
4
程序的外观
选中相关项后,在左端会有图例显示
5
风格、备注、及MFC库的支持
风格
源代码备注:例提示客户代码的书写位臵 作为共享的DLL:运行时才添加mfc库
Device Context
GDI (图形设备 接口,进行 绘图工作)
画笔
画刷 字体
绘图 工具
Βιβλιοθήκη Baidu
调色板
位图
CDC* pDC CDC:封装了所有的绘制和打印函数 pDC为指向CDC类的指针,可以使用pDC访 问CDC类中的函数(pDC->) OnDraw函数被调用的情况: 程序运行后自动调用 窗口重绘之后,例如窗口的大小被改变、窗口 被覆盖
3
对复合文档类型和ActiveX的支持
注:复合文档是OLE(Object Linking and Embedding )的一项技术
没有,不需要 容器:例如,在Word中运行Excel程序,Word 相对与Excel就是容器 微型服务器:例如,在Excel中的一些资源,其它 程序可以调用,Excel就是服务器 完整服务器 容器和服务器
关键代码说明
Helloview.h: CHelloView类的定义
Private Protected Public
GetDocument()
•定义变量 •定义函数
Helloview.cpp #include “helloView.h”
构造函数:变量初始化
析构函数
PreCreateWindow():在窗口创建之前要做的工 作
起始点坐标
常用绘图函数
画点: SetPixel( int x1, int y1 , COLORREF crColor ); 绘制线: MoveTo( int x1, int y1 ); LineTo( int x2, int y2 ); 绘制矩形: Rectangle ( int x1, int y1, int x2, int y2 ); 绘制椭圆: Ellipse( int x1, int y1, int x2, int y2 ); 例:pDC->Ellipse(0,200,100,120);
File → New…
VC6.0 可以创建的工程文件类型
项目类型 ATL COM AppWizard Win32 Dynamic-Link Library MFC ActiveX ControlWizard MFC AppWizard(dll) Database Project Win32 Application ISAPI Extension Wizard MFC AppWizard(exe) 说明 创建 ATL 应用程序 创建 Win32 动态链接库 创建 ActiveX 控件程序 创建 MFC 动态链接库 创建数据库工程文件 创建 Win32 应用程序 创建 Internet 服务器或过滤器 创建 MFC 可执行程序
Java: 适合开发基于Web 的应用程序
Windows 运行机制
Windows 应用程序
函 ③ 数 ④ 消 息
Windows 操作系统
①
② 输入输出设备
注:
操作系统所能够完成的每一个功能都有一个函数 与其对应,也就是说,操作系统把它能够完成的 功能以函数的形式提供给应用程序使用,这些函 数的集合就是Windows操作系统提供给应用程序 的编程接口(Application Programming Interface),简称Windows API。
例如:CreateWindow():创建一个窗口
应用程序
调用函数
操作系统
实现创建窗口的功能
消息:报告有关事件发生的通知,是一种 数据结构
例如:鼠标单击窗口
鼠标单击事件发生
windows操作系统获取到这一事件,并将事件 以消息的形式传递给应用程序
应用程序获取消息,并调用响应函数处理消息
例如,设计字处理软件,则要选择CEditView类
ChelloDoc:文档类,用于管理文档数据
CMainFrame:框架类,用来产生应用程序的主 框架窗口
ChelloApp:应用程序类,用来管理应用程序实 例,放入口函数
在vc中将数据显示和数据本身分开
文档:数据,CDocument
例如:CBrush brush(HS_CROSS,RGB(0,0,255));
可省,默认为实心
载入自定义对象
SelectObject(CPen* pPen );
例如: CPen pen(PS_DOT,1,RGB(255,0,0)); pDC->SelectObject(&pen); 非1时会出现什么情况?
计算机与信息工程学院
Windows系统开发
主讲教师:郭迎春
guoyc@imau.edu.cn
驱动程序开发
DDK、WDK、DriverStudio、Windriver
应用软件开发
Windows操作系 统核心代码采用
Windows应用软件开发 语言
C/C++: 主流的开发工具为 Visual C++,它以 c++语言为基础 。 特点:代码执行效 率高
Hello World程序
void CHelloView::OnDraw(CDC* pDC) { CHelloDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here pDC->TextOut( 0,0,"hello world"); }
• 作用:数据存储,加载等
视图:显示,CView
• 作用:数据显示,修改等
VC++的项目工作区窗口
ClassView ResourceView FileView
运行
运行 VC工程文件夹下的文件
Debug:exe文件所在的位臵 Res:资源文件夹 hello.cpp和hello.h:包含CExamApp类 helloView.cpp和helloView.h helloDoc.cpp和helloDoc.h MainFrame.cpp和MainFrame.h StdAfx.h:标准的全局函数定义
常用的画笔样式: PS_SOLID
PS_DASH PS_DOT PS_DASHDOT
颜色: RGB(nRed, nGreen,nBlue)
蓝色值 绿色值 红色值 RGB(0, 0, 255) RGB(0, 255, 0) RGB(255, 0, 0)
例:CPen pen(PS_DOT,1,RGB(255,0,0));
自定义画刷
CBrush(int nIndex, COLORREF crColor );
画刷的样式(nIndex): HS_BDIAGONAL Downward hatch at 45 degrees HS_CROSS Horizontal and vertical crosshatch HS_DIAGCROSS Crosshatch at 45 degrees HS_FDIAGONAL Upward hatch at 45 degrees HS_HORIZONTAL Horizontal hatch HS_VERTICAL Vertical hatch
OnDraw(CDC* pDC) CExamDoc* pDoc = GetDocument(); •获取文档的地址放在pDoc中,要使用文档 中的数据则可以使用pDoc→ •例如,文档中的x,则使用pDoc→x获取值 ASSERT_VALID(pDoc); •宏定义,确保上条语句的结果有效 CDC
常用绘图工具
画笔:负责绘制直线和曲线的工具 画刷:负责填充图形的工具
绘图的一般过程:
创建或取得设备环境(DC) 创建绘图工具(画笔、画刷等)(否则采用默 认的绘图工具) 将绘图工具选入设备环境 绘制图形 释放获得的设备环境
创建和载入绘图工具
库存对象(StockObject)(基本工具)
Windows程序设计的核心就是消息的传递 和处理
帮助文档:msdn 资料:
孙鑫vc++视频教学 VC技术内幕(可做参考)
1
2 3 4 5
Visual C++开发环境
MFC应用程序框架 基本事件处理 映射模式和滚动视图 MFC资源
6
7 8 9 10
ActiveX控件
动态链接库(DLL) 多线程编程 文档与视图 数据库编程