《Visual C++面向对象与可视化程序设计》期末复习资料

Posted kaka0010

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Visual C++面向对象与可视化程序设计》期末复习资料相关的知识,希望对你有一定的参考价值。

SDK编程

3.1 Windows编程基础知识

3.1.3 句柄和Windows消息

句柄是整个Windows编程的基础,一个句柄是指Windows使用的一个唯一的PVOID型的数据,是一个4字节长的数值。
常 用 句 柄 及 其 说 明 常用句柄及其说明

句柄类型说明
HWND标识窗口句柄
HINSTANCE标识当前实例句柄
HCURSOR标识光标句柄
HFONT标识字体句柄
HPEN标识画笔句柄
HBRUSH标识画刷句柄
HDC标识设备环境句柄
HBITMAP标识位图句柄
HICON标识图标句柄
HMENU标识菜单句柄
HFILE标识文件句柄

3.2 Windows应用程序常用消息

  1. WM_LBUTTONDOWN
    单击鼠标左键时产生的消息,其附加消息参数wParam标识鼠标键的单击状态。
  2. WM_KEYDOWN
    这是按下一个非系统键时产生的消息。系统键是指实现系统操作的组合键,例如Alt与某个功能键的组合。
  3. WM_CHAR
    这也是按下一个非系统键时产生的消息。
  4. WM_CREATE
    此消息由CreateWindow函数发出的信息。
  5. WM_CLOSE
    关闭窗口时产生此消息。
  6. WM_DESTORY
    消除窗口时由DestroyWindow函数发出此消息。
  7. WM_QUIT
    这是退出应用程序时由PostQuitMessage函数发出的消息。
  8. WM_PAINT
    当发生用户区移动或显示事件、用户窗口改变大小的事件、用户窗口改变大小的事件、程序通过滚轮条滚动窗口时,均产生一条WM_PAINT消息。

3.3 Windows中的事件驱动程序设计

基于DOS的应用程序主要通过使用顺序的、过程驱动程序设计方法。
基于Windows的应用程序设计方法是事件驱动的,是围绕着消息的产生与处理而展开的。

3.4 Windows 应用程序的基本结构

3.4.1 Windows应用程序的组成

一个完整的Windows应用程序通常由五种类型的文件组成。

拓展名文件类型
c或cppC语言源程序文件
h头文件
def模块定义文件
rc资源描述文件
vcproj项目文件

3.4.2 源程序组成结构

Windows应用程序具有相对固定的基本结构,其中由入口函数WinMain和窗口函数WndProc构成的基本框架,并包含各种数据类型、数据结构与函数等。

1. WinMain函数

WinMain函数是所有Windows应用程序的入口,类似于C语言中的main函数,其功能是完成一系列的定义和初始化工作,并产生消息循环。消息循环是整个程序运行的核心。WinMain函数实现以下功能:
1) 注册窗口类,建立窗口及执行其他必要的初始化工作。
2) 进入消息循环,根据从应用程序消息队列接收的信息,调用相应的处理过程。
3) 当消息循环检索到WM_QUIT消息时终止程序运行。

2. 窗口函数
1)窗口函数定义了应用程序对接收到的不同消息的响应,其中包含了应用程序对各种可能接收到的消息处理过程,是消息处理分支控制语句的集合。
2)窗口函数是应用程序处理接收到的消息的函数。
3)窗口函数的主体是消息处理语句,由一系列case语句组成。

3. 数据类型
常 用 的 W i n d o w s 数 据 类 型 及 其 说 明 常用的Windows数据类型及其说明 Windows

数据类型说明
LONG32位有符号整数
DWORD32位无符号整数
UINT32位无符号整数
BOOL布尔值
LPTSTR指向字符串的32位指针(Unicode)
LPCTSTR指向字符串常量的32位指针(Unicode)
LPSTR指向字符串的32位指针
LPCSTR指向字符串常量的32位指针

4. 数据类型

  • POINT定义了窗口中点的X和Y坐标
  • RECT定义了一个矩形区域,其中包含该矩形区域的左上角和右下角两个点的X、Y坐标

4.1 图形设备接口

4.1.2 图形刷新

1. 刷新请求
Windows系统通常通过发送WM_PAINT消息将刷新请求传递给应用程序。当用户区的内容需要刷新时,系统在应用程序的消息队列中加入该消息,以通知窗口函数执行刷新处理。

2. 系统对刷新请求的响应
windows系统对刷新请求的响应分为三种情况:
1)窗口移动后的刷新
2)被覆盖区域的刷新
3)对象穿越后的刷新

3. 刷新方法
1)在内存中保持一个显示输出的副本,当需要重绘窗口时,将副本拷贝到相应的窗口中。
2)记录曾经发生的事件,在窗口需要刷新时重新调用窗口执行这个事件。
3)重新绘制图形,一般对于简单图形常采用。

4.1.3 获取设备环境的方法

1. BeginPaint函数
应用场景:应用程序响应WM_PAINT消息进行图形刷新时

hdc=BeginPaint(hwnd, &ps)

最后需要EndPaint函数释放

BOOL EndPaint(HWND hwnd, PAINTSTRUCT &ps)

2. GetDC函数
应用场景:并非由WM_PAINT消息驱动

hdc=GetDC(hwnd)

最后需要ReleaseDC函数释放

int ReleaseDC(HWND hwnd, HDC hdc)

3. GetDCEx函数
返回指向特定窗口的用户区或整个窗口的句柄,它是GetDC的拓展。

∗ B e g i n P a i n t 与 G e t D C 的 区 别 *BeginPaint与GetDC的区别 BeginPaintGetDC

项目\\函数BeginPaint函数GetDC函数
使用环境只用于图形刷新时获取设备使用范围较广
操作区域使用BeginPaint函数获取设备环境后,操作区域为无效区域使用GetDC函数获取设备环境后,操作区域为特定窗口的客户区或整个窗口
释放设备环境所用函数由EndPaint函数释放由ReleaseDC函数释放

4.2 绘图工具与颜色

4.2.1 画笔

1. 创建画笔

HPEN hp; 定义画笔句柄
hp = (HPEN)GetStockObject(BLACK_PEN);调用系统自带的画笔,如果不选默认为黑色
hp = CreatePen( 
	int nPenStyle,样式
	int nWidth,宽度
	COLORREF rgbcolor颜色
);

画 笔 样 式 画笔样式

样式说明
PS_DASH虚线
PS_DASHDOT点划线
PS_DASHDOTDOT双点划线
PS_DOT点线
PS_INSIDEFRAME实线(边框线)
PS_NULL
PS_SOLID实线

2. 选用画笔

SelectObject(hdc, hp);

3. 删除画笔

DeleteObject(hp);

4.2.2 画刷

1. 创建画刷

HPEN hbrush; 定义画笔句柄
hbrush = (HPEN)GetStockObject(nBrushStyle);调用系统自带的画刷
hbrush = (HBRUSH)CreateSolidBrush(COLORREF rgbColor);自定义颜色画刷

2. 选用画刷

SelectObject(hdc, hbrush);

3. 删除画刷

DeleteObject(hbrush);

5.2 文本的输出过程

1. 获取字体信息

GetTextMetrics(hdc, &tm); tm为TEXTMETRIC结构

调用函数GetTextMetrics获取当前字体的TEXTMETRIC结构后,即可为其中的成员设置文本输出格式。

2. 格式化文本
格式化处理一般针对两种情况:一是在文本行中确定后续文本的坐标,而是在换行时确定下一行文本的坐标。

3. 文本输出

BOOL TextOut(
	HDC hdc,
	int x, int y, (x,y)为字符串起始位置
	LPCTSTR lpString, lpString为显示的字符串
	int nCount        字符串长度 
);

6.3 鼠标在应用程序中的应用

用 户 区 鼠 标 消 息 用户区鼠标消息

消息含义
WM_LBUTTONDOWN用户区内单击鼠标左键
WM_RBUTTONDOWN用户区内单击鼠标右键
WM_LBUTTONUP用户区内释放鼠标左键
WM_RBUTTONUP用户区内释放鼠标右键
WM_LBUTTONDBLCLK用户区内双击鼠标左键
WM_RBUTTONDBLCLK用户区内双击鼠标右键
WM_MOUSEMOVE鼠标在用户区内移动

在鼠标消息中,参数IParam包含了鼠标光标的位置,IParam字的低位包含了鼠标光标位置的x坐标值,IParam字的高位包含了鼠标光标位置的y坐标值。

x=LOWARD(lParam)
y=HIWORD(lParam)

以上是关于《Visual C++面向对象与可视化程序设计》期末复习资料的主要内容,如果未能解决你的问题,请参考以下文章

Visual C++的简写是啥?

Visual C++和C++的区别

C++中的UML类图

Item 41:隐式接口与编译期多态 Effective C++笔记

Visual Basic程序设计应用教程(第2版)pdf

面向对象可视化程序设计