第八章 文档/视图结构应用程序 8.1 文档/视图结构 8.2 图形与文字输出 8.3 定时器 8.4 鼠标和键盘消息处理 8.5 对话框

Slides:



Advertisements
Similar presentations
While 迴圈 - 不知重複執行次數
Advertisements

我的未来不是梦 攀枝花市经贸旅游学校. 1. 文中案例王萍苦恼的原因是 什么? 2. 你有哪些办法可以帮助王萍? 导入 思考  谁来帮帮她?
第八章 互换的运用.
我在哈佛、麥肯錫 學到的一流工作術 富坂美織◎著.
四資二甲 第三週作業 物件導向程式設計.
过程性保存文本格式的实现 计算概论小课题 王元康.
交通事故處置 當事人責任與損害賠償 屏東縣政府警察局交通隊.
AI人工智慧報告 黑白棋 班級:資工四乙 學號:498G0009 姓名:盧冠妤.
计算机高级程序设计 第五章.
第1讲案例 涉及Windows与Visual C++基础
C++程序设计 王希 图书馆三楼办公室.
Using C++ The Weird Way Something about c++11 & OOP tricks
第六章 三维真实感物体显示技术 虚拟现实(Virtual Reality,简称VR)技术是一种逼真的模拟人在自然环境中视觉、听觉、运动等行为的人机界面技术。其目的是:不仅能够在多维空间仿真建模,而且能够帮助人们获取知识和形成新的概念,Mark Green给出了一个简明的虚拟现实应用系统模型,如图6.1所示。
第5章 图形和文本输出.
Screen Layout & Background Image
Visual C++ Windows Programming
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
程式撰寫流程.
第5章 文本与字体 2018/12/3 面向对象与可视化 程序设计 --Visual C++ 编程 主讲教师: 唐 龙教授 (计算机科学与技术系) 黄维通博士 (计算机与信息管理中心) 清 华 大 学 2001年2月 2018/12/3 Huang Weitong.
第七章 基于对话框的应用程序 7.1 Windows编程基础 7.2 基于对话框的应用程序 7.3 静态文本框
VISUAL C++ 简介.
简要回顾 了解课程体系、课程目的和主要内容 掌握Windows编程涉及的一些主要概念 DOS程序和Windows程序的主要区别 窗口和程序
第1章 Windows应用程序框架的 创建与消息处理
走进编程 程序的顺序结构(二).
辅导课程六.
第十一讲 MFC常用控件的使用(3) 严宣辉 数学与计算机科学学院
MFC WinSock类的编程 为简化套接字网络编程,更方便地利用Windows的消息驱动机制,微软的基础类库(Microsoft Foundation Class Libary,简称MFC),提供了两个套接字类,在不同的层次上对Windows Socket API函数进行了封装,为编写Windows.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第 10 章 Windows用户界面 10.1 Windows消息与命令 10.2 单文档与多文档程序 10.3 对话框与常用组件
计算机图形学实验 用VC++在屏幕上绘图.
第7章图形、文本和位图 7.1概述 7.2图形设备接口 7.3图形绘制 7.4字体与文字处理 7.5在对话框及控件中绘图 7.6综合应用.
Visual C++ Windows Programming
第七章 操作符重载 胡昊 南京大学计算机系软件所.
Animation(動畫) 靜宜大學資工系 蔡奇偉 副教授
程序设计工具实习 Software Program Tool
04 03 add your text. add your text. add your text. add your text add your text. add your text. add your text. add your text. add your text add your text.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第十二讲 菜单、工具栏和状态栏 严宣辉 数学与计算机科学学院
《面向对象程序设计与Visual C++6.0教程》
Visual C++ Windows Programming
VisComposer 2019/4/17.
MFC及其应用.
保留字與識別字.
程式的時間與空間 Time and Space in Programming
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
CLICK HERE TO ADD YOUR TITLE
第5章 文本与字体 2019/4/25 面向对象与可视化 程序设计 --Visual C++ 编程 主讲教师: 唐 龙教授 (计算机科学与技术系) 黄维通博士 (计算机与信息管理中心) 清 华 大 学 2001年2月 2019/4/25 Huang Weitong.
第二章 Java语法基础.
第二章 类型、对象、运算符和表达式.
_13简单的GDI绘图操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第10章媒体控制接口 10.1 MCI设备类型 10.2 MCI编程步骤 10.3使用MCIWnd窗口类.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
二维裁剪 计算机科学与技术系.
Python 环境搭建 基于Anaconda和VSCode.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
本章主題 C++的程式結構 資料型態與宣告 算術運算 簡易的輸入輸出指令 程式編譯(Compile)的過程與原理.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
本课内容 接下来的几节课,我们要利用C语言开发一些游戏 本节课开发一个俄罗斯方块游戏 游戏规则.
基本資料型態 變數與常數 運算子 基本的資料處理 授課:ANT 日期:2014/03/03.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
本课内容 接下来的几节课,我们要利用C语言开发一些游戏 本节课开发一个俄罗斯方块游戏 游戏规则.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第二章 Java基本语法 讲师:复凡.
手工编写第一个 MFC程序 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
Presentation transcript:

第八章 文档/视图结构应用程序 8.1 文档/视图结构 8.2 图形与文字输出 8.3 定时器 8.4 鼠标和键盘消息处理 8.5 对话框 第八章 文档/视图结构应用程序 8.1 文档/视图结构 8.2 图形与文字输出 8.3 定时器 8.4 鼠标和键盘消息处理 8.5 对话框 8.6 菜单设计 8.7 程序举例

8.1 文档/视图结构 文档:用于管理应用程序的数据 视图:用户界面,用于显示、打印文档中的数据 管理与用户的交互。 数据的管理与显示分离的思想简化了开发过程 文档/视图结构应用程序: SDI MDI

【例8.1】在窗口中显示一个矩形框,框中显示“同舟共济 自强不息” 【例8.1】在窗口中显示一个矩形框,框中显示“同舟共济 自强不息” 工程名为 TEST BOOL CTESTDoc::OnNewDocument() { if (!CDocument::OnNewDocument()) return FALSE; // TODO: add reinitialization code here // (SDI documents will reuse this document) r=CRect(100,60,260,100); s="同舟共济 自强不息"; return TRUE; } 1. 生成SDI应用程序框架 2. 在CTESTDoc类中添加数据成员: public: CRect r; CString s; 3. 在文档类中对数据成员初始化

4. 在CTESTView类的OnDraw()函数添加代码: void CTESTView::OnDraw(CDC* pDC) { CTESTDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here pDC->Rectangle(pDoc->r); pDC->TextOut(110,70,pDoc->s); } 说明: (1)ClassView有5个类和1个全局对象: CAboutDlg类:about对话框类,由CDialog派生。 CMainFrame类:窗口框架类,由CFrameWnd派生 CTESTApp类:应用程序类,由CWinApp派生 CTESTDoc类:文档类,由CDocument派生 CTESTView类:视图类,由CView派生 theApp全局对象

(2)CRect描述一个矩形,有4个数据成员: left、top、right和bottom。 (3)GetDocument() 返回值指向当前文档的指针。 示例:CTESTDoc* pDoc= GetDocument(); 作用:让pDoc指向当前文档 (4)输出在OnDraw()中完成 pDC指向窗口中央的客户区对象 void CTESTView::OnDraw(CDC* pDC) { CTESTDoc* pDoc = GetDocument(); // 获得指向文档类对象的指针 ASSERT_VALID(pDoc); // 检查pDoc是否有效,若无效结束程序 // TODO: add draw code for native data here } (5) OnDraw()的调用 自动调用:当窗口发生变化时 手工调用:调用Invalidate()和InvalidateRect()函数时 Invalidate(TRUE) //擦除窗口原有的内容,重新绘制。 Invalidate(FALSE) //窗口原有的内容保留,再进行绘制。 InvalidateRect(矩形, TRUE) //重新绘制这个矩形区域。 InvalidateRect(矩形, FALSE) //原有内容保留,再绘制矩形区域。

BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount); (2)画点 (1)文字输出 BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount); (2)画点 COLORREF SetPixel(int x, int y, COLORREF crColor); COLORREF SetPixel(POINT point, COLORREF crColor); 说明: 例如: COLORREF C1=RGB(0, 0, 0)) //合成黑色 COLORREF C2=RGB(255, 0, 0)) //合成红色 COLORREF C3=RGB(255, 255, 0)) //合成黄色 COLORREF C4=RGB(255, 255, 255)) //合成白色 POINT:MFC的结构类型,表示平面上的一个点, 数据成员是x和y COLORREF:32位整数类型,表示颜色 COLORREF C1=RGB(0, 0, 0)) //合成黑色 COLORREF C2=RGB(255, 0, 0)) //合成红色 COLORREF C4=RGB(255, 255, 255)) //合成白色

(3)画线 起点: CPoint MoveTo(int x,int y); CPoint MoveTo(POINT point); 终点: BOOL LineTo(int x, int y); BOOL LineTo(POINT point); (4)画矩形 BOOL Rectangle(int x1, int y1, int x2, int y2); BOOL Rectangle(LPCRECT lpRect); (5)画椭圆 BOOL Ellipse(int x1, int y1, int x2, int y2); BOOL Ellipse(LPCRECT lpRect); (6)获取客户区的大小 void GetClientRect( LPRECT lpRect ) const;

【例8.2】改变窗口时,矩形框和文字总是显示在窗口的中央 void CTESTView::OnDraw(CDC* pDC) { CTESTDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here CRect a,b; int w=160; int h=40; GetClientRect(&a); b.left=(a.Width()-w)/2; b.top=(a.Height()-h)/2; b.right=b.left+w; b.bottom=b.top+h; pDC->Rectangle(b); pDC->TextOut(b.left+10,b.top+10,"同舟共济、自强不息!"); }

【例8.3】绘制-2π~2π之间的sin曲线。 在TEST.CPP中添加命令: #include "math.h" void CTESTView::OnDraw(CDC* pDC) { CTESTDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here CRect rect; GetClientRect(rect); int x0=rect.Width()/2; int y0=rect.Height()/2; pDC->MoveTo(20,y0); pDC->LineTo(rect.Width()-20,y0); pDC->MoveTo(x0,20); pDC->LineTo(x0,rect.Height()-20); double step=3.14159/100; for(int i=-200;i<200;i++ ) pDC->SetPixel(x0+(i/300.0)*rect.Width()/2,y0-sin(step*i)*rect.Height()/4,RGB(255,0,0)); }