第1讲案例 涉及Windows与Visual C++基础

Slides:



Advertisements
Similar presentations
第3章 MFC基本应用程序的建立 3.1 Windows编程基础
Advertisements

Oracle数据库 Oracle 子程序.
基于VC++的数字图像特效处理系统的设计与实现
第14章 c++中的代码重用.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
计算机基础知识 丁家营镇九年制学校 徐中先.
第一章 認識Visual C 環境架構 1-1 認識Visual C Visual Studio 概觀
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
OpenMP简介和开发教程 广州创龙电子科技有限公司
第5章 图形和文本输出.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
第1章 .NET与C# 为什么要设计一门新的编程语言? C#在微软的.Net平台中占据什么样的地位?
Visual C++ Windows Programming
第4讲 Windows编程基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
6.4 Notification 通知栏.
第5章 文本与字体 2018/12/3 面向对象与可视化 程序设计 --Visual C++ 编程 主讲教师: 唐 龙教授 (计算机科学与技术系) 黄维通博士 (计算机与信息管理中心) 清 华 大 学 2001年2月 2018/12/3 Huang Weitong.
VISUAL C++ 简介.
简要回顾 了解课程体系、课程目的和主要内容 掌握Windows编程涉及的一些主要概念 DOS程序和Windows程序的主要区别 窗口和程序
第1章 Windows应用程序框架的 创建与消息处理
走进编程 程序的顺序结构(二).
辅导课程六.
网络游戏开发语言基础 ——Windows程序设计
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
第4章 MFC编程 4.1 MFC概述 4.2 MFC和Win CObject类 4.4 消息映射的实现
Visual C++ Windows Programming
Windows 7 的系统设置.
DevDays ’99 The aim of this mission is knowledge..
第八章 文档/视图结构应用程序 8.1 文档/视图结构 8.2 图形与文字输出 8.3 定时器 8.4 鼠标和键盘消息处理 8.5 对话框
第七章 操作符重载 胡昊 南京大学计算机系软件所.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
第十五讲 MFC与消息处理 MFC简介 Windows编程机制 MFC应用程序框架原理 创建应用程序框架 消息及其分类 消息映射机制
程序设计工具实习 Software Program Tool
版权所有 复制必究 第 6 章 MFC原理与方法.
SOA – Experiment 2: Query Classification Web Service
VISUAL C++ 编程中的图形 图形设备接口(Graphic device interface)
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
《面向对象程序设计与Visual C++6.0教程》
本节内容 消息的分发 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Visual C++ Windows Programming
VisComposer 2019/4/17.
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
MFC及其应用.
实验七 安全FTP服务器实验 2019/4/28.
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
_08文件的基本操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
計算機程式 Visual BASIC 程式設計
第六章 素材的加工与处理 第13讲 用GoldWave进行音频的截取、合并、淡入淡出操作
瞻前顧後 Windows程式開發方式的重要演進
_13简单的GDI绘图操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
Chapter 18 使用GRASP的对象设计示例.
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
本节内容 消息的接收 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Lync 2013 for Android 课程摘要卡 加入 Lync 会议 登录并开始使用 在会议中启动您的视频 更改状态或注销
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
MFC的六大核心 机制 命令传递 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang
_01自己实现简单的消息处理框架模型 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
Presentation transcript:

第1讲案例 涉及Windows与Visual C++基础

本讲目标 Windows编程的基本思想 MFC(Microsoft Foundation Class) 程序的基本结构 事件驱动和消息传递机制 MFC(Microsoft Foundation Class) 程序的基本结构 程序组成及各部分的作用

Windows编程的基本思想 事件驱动 运行机制 消息种类 程序的控制流不确定 根据用户的输入(消息)进行处理 程序开始运行时,处于等待消息状态,根据取得的消息作出相应的反应,处理完毕后又返回处于等待消息的状态 消息种类 输入消息、控制消息、系统消息、用户消息

工作流程图 消息队列 取得消息 处理消息 键盘消息 鼠标消息 其它消息

API Win32 API Application Programming Interface 早期的Windows应用程序开发 数以百计函数,难于记忆和应用

Win32 API程序流程 (1)用户启动应用程序,调用WinMain函数。 (2)WinMain函数注册一个窗口类(注意这里的类不同于C++中的类),用于标志应用程序主窗口的类型,同时采用WinMain函数来设置窗口程序函数名。 (3)WinMain函数调用CreateWindows API函数来创建应用程序主窗口。 (4)WinMain函数调用ShowWindows API函数来显示窗口。 (5)WinMain函数调用UpdateWindows API函数使应用程序重新绘制客户区中的内容。 (6)WinMain函数进入一个消息循环,等待接受各种消息。 (7)一个窗口在收到Windows消息后,分析消息的类型,并执行相应的消息处理函数。如果没有该消息的处理函数,则调用DefWindowsProc API函数来提供默认的处理。 (8)直到当应用程序消息循环遇到一个WM_QUIT消息时,退出WinMain函数,终止应用程序的运行。

MFC Microsoft Foundation Classes Library MFC封装了大部分的Win32 API,包含用来开发C++应用程序和Windows应用程序的一组类,大大简化了Windows应用程序的开发 提供了Windows应用程序的框架

MFC 提供了大量的代码用于 你所需做的是 管理windows, menus, and dialog boxes; 执行basic input/output; 存储collections of data objects等 你所需做的是 在这个应用程序框架中加入自己的代码 可以容易地扩展或重载 MFC framework所提供的基本功能

MFC的类层次结构图 采用单一继承,从根类CObject层层派生出绝大多数MFC中的类,其层次结构是最典型。

编写MFC应用程序简介 一个MFC应用程序必须有且只能有一个CWinApp派生类的全局对象,其控制应用程序中的所有其它对象 CWinApp类封装了Windows应用程序从开始运行、消息传递、结束运行的所需步骤 开始时“不拘小节”,由浅入深、循序渐进、日积月累 利用VC++开发工具:AppWizard,ClassWizard,联机帮助等

Demo 1 例1-1 SDI版的“Hello World” 建立SDI项目, 并对视图类(CMyView)的OnDraw成员函数进行扩充以显示该字符串。 通过Workspace的ClassView迅速定位到OnDraw函数,并加入代码。 运行程序,在窗口中显示了一个矩形框,框中显示相应文字,而且无论怎样改变窗口的大小,矩形框总在窗口的中央。

Demo 1程序分析 Windows应用程序由frame window和其显示的document(s)组成,用户与document(s)进行交互 有两大类型: Single Document Interface (SDI) frame window Multiple Document Interface (MDI) frame window. 本例属于SDI类型

Demo 1程序分析 Windows负责管理用户与frame window的交互: moving, resizing, closing, minimizing&maximizing 程序员负责处理frame window内的contents。 本例中加入了在框架窗口内显示矩形和“Hello World”的代码

Demo 1程序分析 5个类及其基类: CAboutDlg(CDialog) CMainFrame(CFrameWnd) CMyApp(CWinApp) CMyDoc(CDocument) CMyView(CView)

Demo 1程序分析 各类的功能及其相互关系: view,frame和document之间的关系 CAboutDlg: 显示对话框,用于交互 CMainFrame: 管理框架,起容器作用 CMyApp: 管理程序:启动、初始化、结束 CMyDoc: 管理数据,通常用于永久数据的存取 CMyView: 显示数据,通常充当用户和Doc的中介 view,frame和document之间的关系 在app初始化时由CDocTemplate对象建立

SDI应用程序中的对象关系

Frame Window and View

Demo 1程序分析 CView::OnDraw 用于绘制窗口客户区内容 每当窗口重新绘制时,由程序框架调用

Demo 2 例2-1 鼠标和键盘的响应: 当鼠标在客户区点击时,弹出对话框并显示鼠标点击的坐标。 按下任意键时,弹出对话框并显示该键的名称。

Demo 2程序分析 处理2种事件:鼠标左击和键盘按键 相应的消息(输入消息): 相应的消息处理过程: WM_KEYDOWN WM_LBUTTONDOWN 相应的消息处理过程: afx_msg void OnKeyDown(...); afx_msg void OnLButtonDown(...);

Demo 2程序分析 消息循环机制和消息处理机制在MFC中通过以下方式实现: message-map(消息映射) 消息映射成员函数 BEGIN_MESSAGE_MAP(CMyView, CView) ON_WM_KEYDOWN() ON_WM_LBUTTONDOWN() END_MESSAGE_MAP() 消息映射成员函数 afx_msg void OnKeyDown(...); afx_msg void OnLButtonDown(...);

Demo 2程序分析 View可以处理各种输入: 有些消息可以根据需要由其它类来处理 消息在各类中的传递过程如下 keyboard input mouse input input via drag-and-drop commands from menus, toolbars, or scroll bars 有些消息可以根据需要由其它类来处理 消息在各类中的传递过程如下 视窗类->文档类->框架类->应用程序类

Demo 2程序分析 在CMyView的类声明中添加重载函数原型: 在CMyView的类声明中添加宏: afx_msg void OnKeyDown(...); afx_msg void OnLButtonDown(...); 在CMyView的类声明中添加宏: DECLARE_MESSAGE_MAP()

Demo 2程序分析 在CMyView的类实现中给出消息映射: 在CMyView的类实现中根据需要实现重载函数: BEGIN_MESSAGE_MAP(CMyView, CView) ON_WM_KEYDOWN() ON_WM_LBUTTONDOWN() END_MESSAGE_MAP() 在CMyView的类实现中根据需要实现重载函数: void OnKeyDown(...){...} void OnLButtonDown(...){...}

Demo 2程序分析 当按下鼠标左键时,产生WM_LBUTTONDOWN消息 通过CMyView的OnLButtonDown成员函数响应该事件。

相关案例 案例1~案例9

忠 告 学好程序设计语言的唯一途径是 上机练习 你的编程能力与你在计算机上投入的时间成 正比

联系方式 教师:王群慧、庄天红 办公室电话:34204410 Mail: wang-qh@cs.sjtu.edu.cn zhuang-th@cs.sjtu.edu.cn ftp: ftp://ftp.cs.sjtu.edu.cn/wang-qh ftp://ftp.cs.sjtu.edu.cn/zhuang-th ftp://cbase.sjtu.edu.cn/course-case

最终考试成绩 课时:3×18=54 最后总成绩: 平时上课情况(出勤+练习)占20% 平时作业占30% 最终大作业50%

讲解案例 基础案例3-5讲 MESSAGES: 俄罗斯方块(w) 苹果棋 RESOURCES: 机械仿真(w) 交通灯 DOCUMENTS&VIEW: 绘图程序(w) 简单翻译 DIALOG: 图示梵塔(w) 模拟时钟