第2章 Windows编程基础.

Slides:



Advertisements
Similar presentations
软件开发技术基础 第 3 章 操作系统及程序设计 讲授教师:卫颜俊. 主 要 内 容 主 要 内 容 操作系统及其功能 进程管理应用程序设计 内存管理应用程序设计 设备与文件管理应用程序设计 人机接口管理应用程序设计.
Advertisements

第3章 MFC基本应用程序的建立 3.1 Windows编程基础
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
插入超链接 高邮市第一实验小学 范太国 任务一:设置文本超链接 任务一:设置文字超链接 步骤:1、选定文字并右击,在快捷菜单 中选择“超链接”命令。 2、在弹出的对话框中选择左侧“链接到:”中的“本文档中的位置(A)”项,在“请选择文档中的位置(C):”中选择需要链接的幻灯片,单击“确定”按钮。
Oracle数据库 Oracle 子程序.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
第二十九章 DLL / LIB函式庫開發 當我們開發程式到一個階段之後,我們一定會希望各個Component的程式碼可以分開的越清楚越好。而這一章最主要就是要告訴各位讀者,我們常在Windows系統中看到的dll或是lib的檔案該怎麼實作?做出這樣的library我們又該如何運用?為什麼使用dll或是lib有利於我們開發程式?以上這些疑問都將會在這一章中得到解答。
第4讲 Windows编程基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第5章 文本与字体 2018/12/3 面向对象与可视化 程序设计 --Visual C++ 编程 主讲教师: 唐 龙教授 (计算机科学与技术系) 黄维通博士 (计算机与信息管理中心) 清 华 大 学 2001年2月 2018/12/3 Huang Weitong.
简要回顾 了解课程体系、课程目的和主要内容 掌握Windows编程涉及的一些主要概念 DOS程序和Windows程序的主要区别 窗口和程序
第1章 Windows应用程序框架的 创建与消息处理
SVN服务器的搭建(Windows) 柳峰
走进编程 程序的顺序结构(二).
辅导课程六.
第3章 Windows 应用程序基础 2018/12/6 第2讲 Windows 应用程序基础 VC++面向对象与可视化程序设计.
MFC WinSock类的编程 为简化套接字网络编程,更方便地利用Windows的消息驱动机制,微软的基础类库(Microsoft Foundation Class Libary,简称MFC),提供了两个套接字类,在不同的层次上对Windows Socket API函数进行了封装,为编写Windows.
网络游戏开发语言基础 ——Windows程序设计
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
DM81X 视频采集处理 ——简单采集显示例程讲解 广州创龙电子科技有限公司
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第一讲: 基本流程(1).
第4章 MFC编程 4.1 MFC概述 4.2 MFC和Win CObject类 4.4 消息映射的实现
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
Visual C++ Windows Programming
Windows 7 的系统设置.
第八章 文档/视图结构应用程序 8.1 文档/视图结构 8.2 图形与文字输出 8.3 定时器 8.4 鼠标和键盘消息处理 8.5 对话框
第十五讲 MFC与消息处理 MFC简介 Windows编程机制 MFC应用程序框架原理 创建应用程序框架 消息及其分类 消息映射机制
程序设计工具实习 Software Program Tool
版权所有 复制必究 第 6 章 MFC原理与方法.
SOA – Experiment 2: Query Classification Web Service
Visual Studio 2010简捷入门.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
《面向对象程序设计与Visual C++6.0教程》
本节内容 消息的分发 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第1章 c++概述 1.1 C++语言的简史及特点 1.2 简单的C++程序 1.3 C++语言的基本组成
Visual C++ Windows Programming
姚金宇 MIT SCHEME 使用说明 姚金宇
实验七 安全FTP服务器实验 2019/4/28.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第4章 Excel电子表格制作软件 4.4 函数(一).
动态链接库 主讲人:孙鑫
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
第九节 赋值运算符和赋值表达式.
iSIGHT 基本培训 使用 Excel的栅栏问题
_13简单的GDI绘图操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
Visual Basic程序设计 第13章 访问数据库
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
第10章媒体控制接口 10.1 MCI设备类型 10.2 MCI编程步骤 10.3使用MCIWnd窗口类.
本节内容 消息的接收 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
MFC控件 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
MFC的六大核心 机制 命令传递 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
本节内容 导出表 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
实验六、COM类型病毒分析实验 实验开发教师: 刘乃琦 谌黔燕.
手工编写第一个 MFC程序 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
Presentation transcript:

第2章 Windows编程基础

2.1.1 简单的Windows应用程序 简单的Windows应用程序。 [例Ex_HelloMsg] 一个最简单的Windows应用程序 (1) 运行Microsoft Visual C++ 6.0后,选择“文件”“新建”菜 单命令,打开应用程序向导,显示出“新建”对话框。

2.1.1 简单的Windows应用程序 (2)在工程名称框中键入Win32应用程序项目名称elloMsg。 (3)单击[确定]按钮继续。 (4)再次选择“文件”“新建”菜单命令,显示出“新建”对话框。 “新建”对话框文件页面

2.1.1 简单的Windows应用程序 (6)在文档窗口中输入下面的代码: #include <windows.h> int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance ,LPSTR lpCmdLine, int nCmdShow) { MessageBox (NULL, "你好,我的Visual C++世界!", "问候", 0) ; return 0 ; }

2.1.1 简单的Windows应用程序 编译并运行程序从上面的程序可以看出: WinMain函数的原型如下: int WINAPI WinMain ( HINSTANCE hInstance, // 当前实例句柄 HINSTANCE hPrevInstance, // 以前的实例句柄 LPSTR lpCmdLine, // 指向命令行参数的指针 int nCmdS // 窗口的显示状态 每一个Win32应用程序都需要Windows.h头文件,包含了一些Windows头文件。 程序中,MessageBox是一个Win32 PI(ApplicationProgramming Interface, 应用程序接口)函数,用来弹出一个对话框窗口,显示短信息。

2.1.1 简单的Windows应用程序 [例Ex_HelloWin] 一个较完成的Windows应用程序 (1) 按照Ex_HelloMsg示例方法,创建一个An empty project类型的Win32 Application(Win32 应用程序)项目Ex_HelloWin。 (2)选择“文件”“新建”菜单命令,显示出“新建”对话框。单击“文件”标签,在左边的列表框中选择C++ Source File项,在右边的“文件”框中键入Ex_HelloWin.cpp,单击[确定]按钮。 (3)在文档窗口中输入代码: Ex_HelloMsg示例相比,Ex_HelloWin要复杂的多,可以将其分是两个基本函数的程序结构。 函数WndProc用来接收和处理各种不同的消息,而WinMain函数通常要完成以下几步工作: 定义并调用API函数RegisterClass注册应用程序的窗口类。

2.1.1 简单的Windows应用程序 函数CreateWindow用来创建已注册窗口类的窗口。CreateWindow函数具有下列原型: HWND CreateWindow( LPCTSTR lpClassName, // 已注册的窗口类名 LPCTSTR lpWindowName, // 窗口标题 DWORD dwStyle, // 窗口风格 int x, // 窗口的水平位置 int y, // 窗口的垂直位置 int nWidth, // 窗口宽度 int nHeight, // 窗口高度 HWND hWndParent, // 父窗口句柄 HMENU hMenu, // 菜单句柄或控件标识 HINSTANCE hInstance, // 应用程序实例句柄 LPVOID lpParam // 其他窗口创建时的参数数据

2.1.1 简单的Windows应用程序 API函数GetMessage 和DispatchMessage就是起到这样的作用。 如果接收到WM_QUIT消息,则退出应用程序。 (4) 编译运行程序,窗口中单击鼠标左键,会弹出对话框。

2.1.1 简单的Windows应用程序 Windows应用程序的基本流程:

2.1.2 Windows编程特点 完整的Windows应用程序除了WinMain函数外,包含用于处理用户动作和窗口消息的窗口函数。 消息驱动机制 图形设备接口(GDI) 基于资源的程序设计 动态链接库 1. 消息驱动机制 Windows程序和控制台应用程序之间一个最根本区别,在于控制台应用程序是通过调用系统函数来获得用户输入,而Windows程序则是通过系统发送的消息来处理用户输入。 Windows操作环境中,无论是系统产生的动作或用户运行应用程序产生的动作,称为事件(Events)产生的消息(Message)。

2.1.2 Windows编程特点 KERNEL32.DLL用来处理存储器低层功能、任务和资源管理等Windows核心服务; 2. 图形设备接口(GDI) 而Windows则提供了一个抽象的接口,称为图形设备接口,使得用户直接利用系统的GDI函数就能方便实现图形和文本的输出。 基于资源的程序设计 Windows应用程序包含众多图形元素,如光标、菜单、工具栏、位图、对话框等。 4. 动态链接库 在Windows操作系统中,最主要的DLL有KERNEL32.DLL、GDI32.DLL和USER32.DLL。 KERNEL32.DLL用来处理存储器低层功能、任务和资源管理等Windows核心服务; GDI32.DLL提供图形设备接口,管理用户界面和图形绘制,包括Windows元文件、位图、设备描述表和字体等; USER32.DLL负责窗口的管理,包括消息、菜单、光标、计时器及其它与控制窗口显示相关的一些功能。

2.1.3 Windows基本数据类型 Windows常用的基本数据类型 : Windows所 数据类型 对应的基本数据类型 说明 BOOL 布尔值 BSTR unsigned short * 32位字符指针 BYTE unsigned char 8位无符号整数 COLORREF unsigned long 用作颜色值的32位值 DWORD 32位无符号整数,段地址和相关的偏移地址 LONG long 32位带符号整数 LPARAM 作为参数传递给窗口过程或回调函数的32位值 LPCSTR const char * 指向字符串常量的32位指针 LPSTR char * 指向字符串的32位指针 LPVOID void * 指向未定义类型的32位指针 LRESULT 来自窗口过程或回调函数的32位返回值 UINT unsigned int 32位无符号整数 WORD unsigned short 16位无符号整数 WPARAM 当作参数传递给窗口过程或回调函数的32位值

2.1.3 Windows基本数据类型 HINSTANCE和LPSTR等,这样的数据类型只是一些基本数据类型的别名,在Windows编程中常用的基本数据类型。 需要说明的是: 这些基本数据类型都是用大写字符来表示,以与一般C++基本数据类型相区别。 凡是数据类型的前缀是P或LP,则表示该类型是一个指针或长指针数据类型。若前缀是U,则表示无符号数据类型,等等。 Windows还提供一些宏来处理上述基本数据类型。例如,LOBYTE和HIBYTE分别用来获取16位数值中的低位和高位字节;LOWORD和HIWORD分别用来获取32位数值中的低位字和高位字;MAKEWORD是将两个16位无符号值结合成一个32位无符号值,等等。

2.2.1 绘制文本 Windows窗口通常有标题栏和边框,其中默认背景色为白色区域称为窗口的客户区。 [例Ex_WinText] 文本绘制 (1)新建一个“An empty project”类型的Win32 pplication(Win32 应用程序)项目Ex_WinText。 (2)新建一个C++源文件(Source File)Ex_WinText.cpp。 (3)编译并运行程序, Ex_WinText运行结果:

2.2.1 绘制文本 hdc定义的是句柄HDC变量,TextOut等GDI函数都要通过这样的HDC句柄来绘制图形和文本。 2.2.1 绘制文本 hdc定义的是句柄HDC变量,TextOut等GDI函数都要通过这样的HDC句柄来绘制图形和文本。 EndPaint用来释放设备描述表句柄,并使先前无效区域变为有效,使Windows不再发送M_PAINT消息。 PAINTSTRUCT是“绘图信息结构”,BeginPaint和EndPaint函数都需要PAINTSTRUCT结构变量作为自己的参数。 TextOut函数是用来显示文本的最常用的GDI函数,有下列原型: BOOL TextOut( HDC hdc, // 设备描述表句柄 int nXStart, // 文本显示的水平起始位置 int nYStart, // 文本显示的垂直起始位置 LPCTSTR lpString, // 要显示的文本 int cbString // 要显示的文本长度

2.2.2 使用控件 在Win32应用程序中,可在窗口基础上通过CreateWindow函 数来创建一个控件窗口。 2.2.2 使用控件 在Win32应用程序中,可在窗口基础上通过CreateWindow函 数来创建一个控件窗口。 例Ex_WinControl] 控件的使用 (1) 新建一个“An empty project”类型的Win32 ApplicationWin32 应用程序)项目Ex_WinControl。 (2) 新建一个C++源文件(Source File) _WinControl.cpp,并输入代码 (3) 编译并运行程序,填入一元二次方程的系数后,单击[计算]按钮,求解的结果就会显示出来,

2.3.1 MFC概述 微软公司为应用程序设计者提供了Win16 API,在此基础 上推出了Windows GUIMFC类的基本层次结构如图 : CCmdTarget CWnd CDocument CFrameWnd CObject CWinTread CWinApp CView CDialog及控件 CMDIChildWnd CMDIFrameWnd CMiniFrameWnd

2.2.3 设计一个MFC程序 例Ex_HelloMFC] 一个MFC应用程序。 (1) 创建一个“An empty project”类型的Win32 Application(Win32 应用程序)项目Ex_HelloMFC。 (2) 选择“文件”“新建”菜单命令,显示出“新建”对话框。单击“文件”标签,在左边的文件类型列。 (3) 表框中选择C++ Source File项,在右边的“文件”下的编辑框中键入Ex_HelloMFC.cpp,单击[确定]按钮。在文档窗口中输入代码 。 (4) 选择“工程”“设置”菜单命令,在出现的对话框中选择“General”标签。然后在“Microsoft Foundation Classes”组合框中,选择“Use MFC in a Shared DLL”。单击[OK]按钮。 (5) 程序运行后,单击鼠标左键,就会弹出一个对话框,结果同Ex_HelloWin。

2.3.3 理解程序代码 1. 程序运行机制 MFC是使用afxwin.h来代替头文件windows.h,在Ex_HelloMFC程序中却看不到Windows应用程序所必须的程序入口函数inMain。 自动查找该应用程序类CHelloApp的全局变量eApp,然后自动调用CHelloApp的虚函数InitInstance,该函数会进一步调用相应的函数来完成主窗口的构造和显示工作。 首先执行的是: m_pMainWnd = new CMainFrame(); 然后执行后面两 句,用作窗口的显示和更新。 m_pMainWnd->ShowWindow(m_nCmdShow); m_pMainWnd->UpdateWindow(); 最后返回TRUE,表示窗口创建成功。

2.3.3 理解程序代码 映射一个消息的过程是由三个部分组成的: (1) 在处理消息的类中,使用消息宏LARE_MESSAGE_MAP() 声明对消息映射的支持,并在该宏之前声明消息处理函数。 (2) 使用BEGIN_MESSAGE_MAP和END_MESSAGE_MAP 宏在类声明之后的地方定义该类支持的消息映射入口点,所 有消息映射宏都添加在这里,当然不同的消息MFC都会有不 同的消息映射宏。 (3) 定义消息处理函数。例如: void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point) { MessageBox ("你好,我的Visual C++世界!", "问候", 0) ; CFrameWnd::OnLButtonDown(nFlags, point); }

2.3.4 使用MFC AppWizard 表2.2 MFC AppWizard创建的应用程序类型 名 称 项 目 名 称 项 目 ATL COM MFC AppWizard 创建ATL(Active Template Library)应用模块工程 Cluster Resource Type Wizard 创建Cluster Resource(用于Windows NT服务器) Custom MFC AppWizard 创建自己的应用程序向导 Database Project 创建数据库应用程序 DevStudio Add-in Wizard 创建ActiveX组件或VBScript宏 Extended Stored Proc Wizard 创建基于SQL服务器下的外部存储过程 ISAPI Extension Wizard 创建Internet Server程序 MakeFile 创建独立于Visual C++开发环境的应用程序 MFC ActiveX ControlWizard 创建ActiveX Control应用程序 MFC AppWizard(dll) MFC的动态链接库 MFC AppWizard(exe) 一般MFC的Windows应用程序 Utility Project 创建简单实用的应用程序 Win32 Application 其他Win32的Windows应用程序 Win32 Console Application Win32的控制台应用程序 Win32 Dynamic-Link Library Win32的动态链接库 Win32 Static Library Win32的静态链接库

2.3.4 使用MFC AppWizard [例Ex_SDIDemo] 创建一个默认的单文档应用程序 1.开始 选择“文件”“新建”菜单,在弹出的“新建”对话框中选择“工程”标签,这时显示出一系列的应用程序项目类型; 2 .选择程序类型 (1) 从应用程序类型单个文档(Single Document,简称SDI)、 多重文档(Multiple Document ,简称MDI)和基本对话框(Dia log Based,基于对话框的应用程序)中选择“单个文档”。 (2) 决定应用程序中是否需要MFC的文档视图(“文档/查看体 系结构支持”)结构的支持。

2.3.4 使用MFC AppWizard (3) 选择资源所使用的语言 3. 简单创建 保留其他的默认选项,单击[完成]按钮出现一个对话框,显示 出用户在步骤中作出的选择,单击[确定]按钮系统开始创建。 4. 编译并运行 到这里为止,用户虽然没有编写任何程序代码,但MFC AppW izard已经根据用户的选择内容自动生成基本的应用程序框架。 单击编译工具条 上的运行工具按钮 ”或按快捷键Ctrl+F5,系统开始编连并运行生成的单文档应用程序可执行文件Ex_SDIDemo.exe

习 题 (1) 分别编写一个Win32 API应用程序和一个Win32 MFC应用程序,给定一元二次方程的系数,然后将求 习 题 (1) 分别编写一个Win32 API应用程序和一个Win32 MFC应用程序,给定一元二次方程的系数,然后将求 解的结果用消息对话框显示出来。 (2) 编写一个Win32 API应用程序,在主窗口中创建 一个编辑框和一个按钮,单击按钮后,将编辑框的内 容用消息对话框显示出来。 (3) 用MFC AppWizard创建一个单文档应用程序,看 看该文档应用程序组成的类,并说明各类的基类,然 后简要说明各类的作用。 (4) 上机练习本章的示例。