win32实验编写程序在窗口上设计一行文字要求文字能在窗口中向左滚动每显示一轮改变一次颜色和字体

上传人:宝路 文档编号:7518284 上传时间:2017-09-22 格式:DOCX 页数:20 大小:423.90KB
返回 下载 相关 举报
win32实验编写程序在窗口上设计一行文字要求文字能在窗口中向左滚动每显示一轮改变一次颜色和字体_第1页
第1页 / 共20页
win32实验编写程序在窗口上设计一行文字要求文字能在窗口中向左滚动每显示一轮改变一次颜色和字体_第2页
第2页 / 共20页
win32实验编写程序在窗口上设计一行文字要求文字能在窗口中向左滚动每显示一轮改变一次颜色和字体_第3页
第3页 / 共20页
win32实验编写程序在窗口上设计一行文字要求文字能在窗口中向左滚动每显示一轮改变一次颜色和字体_第4页
第4页 / 共20页
win32实验编写程序在窗口上设计一行文字要求文字能在窗口中向左滚动每显示一轮改变一次颜色和字体_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《win32实验编写程序在窗口上设计一行文字要求文字能在窗口中向左滚动每显示一轮改变一次颜色和字体》由会员分享,可在线阅读,更多相关《win32实验编写程序在窗口上设计一行文字要求文字能在窗口中向左滚动每显示一轮改变一次颜色和字体(20页珍藏版)》请在金锄头文库上搜索。

1、专业课程实验报告课程名称: windows 程序设计开课学期: 2015 至 2016 学年 第 1 学期专业: 计算机科学与技术 年级班级: 2013 级学生姓名: 学号:实验教师: 刘红俊计算机与信息科学学院 软件学院实验项目名称 实验课(第二次)windows 程序设计实验时间 11.4 实验类型 验证性 设计性 综合性1、实验目的 理解 DC,映像模式。坐标系统,窗口可视口。 学习获取绘图工具(画笔/画刷)的句柄,设置颜色。 定义映像模式。 学会使用常用的绘图函数。二、实验要求掌 握 获 取 字 体 句 柄 的 两 种 方 法 ;调 用 CreateFont 函 数 创 建 自 定 义

2、 字 体 ; 调 用SetTextColor 和 SetBkColor 函 数 设 置 字 体 的 颜 色 和 背 景 色 ; 掌 握 文 本 输 出 的 过 程(获 取 字 体 信 息 , 格 式 化 文 本 , 输 出 文 本 ). 编 写 程 序 : 在 窗 口 上 设 计 一 行 文 字 , 要求 文 字 能 在 窗 口 中 向 左 滚 动 显 示 , 而 且 每 显 示 一 轮 , 改 变 一 次 颜 色 和 字 体 。三、实验内容与设计(主要内容,操作步骤、算法描述或程序代码)( 1) 实 验 内 容 : 掌 握 获 取 字 体 句 柄 的 两 种 方 法 ;调 用 CreateF

3、ont 函 数 创 建 自定 义 字 体 ; 调 用 SetTextColor 和 SetBkColor 函 数 设 置 字 体 的 颜 色 和 背 景 色 ; 掌 握文 本 输 出 的 过 程 (获 取 字 体 信 息 , 格 式 化 文 本 , 输 出 文 本 ). 编 写 程 序 : 在 窗 口 上 设计 一 行 文 字 , 要 求 文 字 能 在 窗 口 中 向 左 滚 动 显 示 , 而 且 每 显 示 一 轮 , 改 变 一 次 颜 色和 字 体 。( 2) 操 作 步 骤 :1. 创 建 窗 口if(!InitWindowClass(hInstance,nCmdShow)Mess

4、ageBox(NULL,L创建窗口失败!,_T(创建窗口),NULL);return 1;2. 创 建 字 体 句 柄 : HDC hdc;3. 定 义 输 出 的 字 符 串 。 以 及 定 义 字 符 串 长 度 变 量 。 定 义 存 放 客 户 区 尺 寸 等 变 量 。int wmId, wmEvent;static int right;int length; /字符串字节数TEXTMETRIC tm;PAINTSTRUCT ps;HDC hdc;HFONT HFont;LPWSTR title = L设置字体并滚动;length = _tcslen(title);RECTclien

5、tDimension; /存放客户区的尺寸4. 在 switch 语 句 中 设 置 定 时 器 。case WM_CREATE:SetTimer(hWnd, 9, 100, NULL); /设置定时器break;case WM_TIMER:if (wParam = 9)InvalidateRect(hWnd, NULL, true);break;5. 在 case WM_PAINT:中 获 取 客 户 区 尺 寸 用 户 确 定 输 出 文 本 的 起 始 坐 标 。 获 取 right为 客 户 区 的 宽 度 。GetClientRect(hWnd, &clientDimension);

6、 /获取客户区尺寸right = clientDimension.right;6. 根 据 全 局 变 量 i 定 义 switch 语 句 。 全 局 变 量 i 初 始 值 为 0, 所 以 进 入 case0。7. 在 case 语 句 中 , 我 首 先 应 用 SetTextColor( ) 函 数 设 置 文 本 颜 色 , 然 后 创 建自 定 义 字 体 ( 该 字 体 函 数 在 全 局 变 量 处 申 明 过 )。 然 后 选 择 字 体 。 输 出 文 本 。通 过 if 循 环 改 变 文 本 输 出 函 数 中 的 坐 标 变 量 , 使 得 文 本 从 右 向 左

7、移 动 。 当移动 到 最 左 边 时 , 改 变 i 的 值 , 进 入 下 一 case 语 句 。case 0:SetTextColor(hdc,RGB(255, 0, 0);HFont = CreateMyFont(L设置字体并滚动, 10, 1, 1);SelectObject(hdc,HFont);TextOut(hdc, right - x, clientDimension.bottom / 2, title, length);if(x(right+length)x=x+20;elsex=0;i=(i+1)%3;/即从右向左滚动完整个屏幕后开始变化字体和颜色break;( 3)

8、算 法 描 述 :1 掌 握 获 取 字 体 句 柄 的 两 种 方 法 :a. HFONT hf; /hf 为 字 体 的 句 柄b. hf=GetStockObject( ) ; 调 用 GetStockObject 过 得 系 统 字 体 句 柄 , 返 回 的 是系 统 的 默 认 字 体 。c. SelectObject( hdc, hf) ; 调 用 函 数 将 字 体 选 入 设 备 环 境 。2 创 建 自 定 义 字 体 :a. HFONT = CreateFont( )3 设 置 字 体 的 颜 色 和 背 景 色 :a. SetTextColor( hdc, crColo

9、r) ;b. SetBkcolor(hdc,crColor);4 掌 握 文 字 输 出 过 程 ( 获 取 字 体 信 息 , 格 式 化 文 本 , 输 出 文 本 )。a. GetTextMetrics(hdc,&tm); /tm 为 TEXTMETRIC 结 构 。b. 调 用 函 数 GetTextMetric 后 , 就 可 获 得 文 字 的 TEXTMETRIC 信 息 。c. 格 式 化 处 理 一 是 在 文 本 行 中 确 定 后 续 文 本 的 坐 标 , 二 是 在 换 行 后 确 定 下 一行 文本 的 坐 标 。d. TextOut 是 文 本 输 出 函 数 。

10、 里 面 包 含 hdc 句 柄 , 文 本 起 始 坐 标 , 字 符 串 的 字 节数 。( 4) 程 序 代 码 :/ final.cpp : 定义应用程序的入口点。/#include stdafx.h#include final.h#define MAX_LOADSTRING 100/ 全局变量:HINSTANCE hInst; / 当前实例TCHAR szTitleMAX_LOADSTRING; / 标题栏文本TCHAR szWindowClassMAX_LOADSTRING; / 主窗口类名int x=0;int i=0;/ 此代码模块中包含的函数的前向声明:ATOM MyRegi

11、sterClass(HINSTANCE hInstance);BOOL InitInstance(HINSTANCE, int);LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);HFONT CreateMyFont(LPCTSTR title, int height, DWORD fdwltalic, DWORD fdwUnderline);int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,

12、_In_opt_ HINSTANCE hPrevInstance,_In_ LPTSTR lpCmdLine,_In_ int nCmdShow)UNREFERENCED_PARAMETER(hPrevInstance);UNREFERENCED_PARAMETER(lpCmdLine);/ TODO: 在此放置代码。MSG msg;HACCEL hAccelTable;/ 初始化全局字符串LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);LoadString(hInstance, IDC_FINAL, szWindow

13、Class, MAX_LOADSTRING);MyRegisterClass(hInstance);/ 执行应用程序初始化:if (!InitInstance (hInstance, nCmdShow)return FALSE;hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_FINAL);/ 主消息循环:while (GetMessage(&msg, NULL, 0, 0)if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)TranslateMessage(&ms

14、g);DispatchMessage(&msg);return (int) msg.wParam;/ 函数: MyRegisterClass()/ 目的: 注册窗口类。/ATOM MyRegisterClass(HINSTANCE hInstance)WNDCLASSEX wcex;wcex.cbSize = sizeof(WNDCLASSEX);wcex.style = CS_HREDRAW | CS_VREDRAW;wcex.lpfnWndProc = WndProc;wcex.cbClsExtra = 0;wcex.cbWndExtra = 0;wcex.hInstance = hIns

15、tance;wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_FINAL);wcex.hCursor = LoadCursor(NULL, IDC_ARROW);wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);wcex.lpszMenuName = MAKEINTRESOURCE(IDC_FINAL);wcex.lpszClassName = szWindowClass;wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL);return RegisterClassEx(&wcex);/ 函数: InitInstance(HINSTANCE, int)/ 目的: 保存实例句柄并创建主窗口/ 注释:/ 在此函数中,我们在全局变量中保存实例句柄并/ 创建和显示主程序窗口。/BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)HWND hWnd;hInst = hInstance; / 将实例句柄存储在全局变量中hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,CW_

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号