资源描述:
《win32实验编写程序 在窗口上设计一行文字 要求文字能在窗口中向左滚动 每显示一轮 改变一次颜色和字体.docx》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、专业课程实验报告课程名称:windows程序设计开课学期:2015至2016学年第1学期专业:计算机科学与技术年级班级:2013级学生姓名:学号:实验教师:刘红俊计算机与信息科学学院软件学院实验项目名称实验课(第二次)windows程序设计实验时间11.4实验类型□验证性□设计性□综合性一、实验目的l理解DC,映像模式。坐标系统,窗口可视口。l学习获取绘图工具(画笔/画刷)的句柄,设置颜色。l定义映像模式。l学会使用常用的绘图函数。二、实验要求掌握获取字体句柄的两种方法;调用CreateFont函数创建自定义字体;调用SetTextColor和SetBkColor函数设置字体的
2、颜色和背景色;掌握文本输出的过程(获取字体信息,格式化文本,输出文本).编写程序:在窗口上设计一行文字,要求文字能在窗口中向左滚动显示,而且每显示一轮,改变一次颜色和字体。三、实验内容与设计(主要内容,操作步骤、算法描述或程序代码)(一)实验内容:掌握获取字体句柄的两种方法;调用CreateFont函数创建自定义字体;调用SetTextColor和SetBkColor函数设置字体的颜色和背景色;掌握文本输出的过程(获取字体信息,格式化文本,输出文本).编写程序:在窗口上设计一行文字,要求文字能在窗口中向左滚动显示,而且每显示一轮,改变一次颜色和字体。(二)操作步骤:1.创建窗口
3、if(!InitWindowClass(hInstance,nCmdShow)){MessageBox(NULL,L"创建窗口失败!",_T("创建窗口"),NULL);return1;}1.创建字体句柄:HDChdc;2.定义输出的字符串。以及定义字符串长度变量。定义存放客户区尺寸等变量。intwmId,wmEvent;staticintright;intlength;//字符串字节数TEXTMETRICtm;PAINTSTRUCTps;HDChdc;HFONTHFont;LPWSTRtitle=L"设置字体并滚动";length=_tcslen(title);RECTcli
4、entDimension;//存放客户区的尺寸3.在switch语句中设置定时器。caseWM_CREATE:SetTimer(hWnd,9,100,NULL);//设置定时器break;caseWM_TIMER:if(wParam==9){InvalidateRect(hWnd,NULL,true);}break;4.在caseWM_PAINT:中获取客户区尺寸用户确定输出文本的起始坐标。获取right为客户区的宽度。GetClientRect(hWnd,&clientDimension);//获取客户区尺寸right=clientDimension.right;1.根据全局
5、变量i定义switch语句。全局变量i初始值为0,所以进入case0。2.在case语句中,我首先应用SetTextColor()函数设置文本颜色,然后创建自定义字体(该字体函数在全局变量处申明过)。然后选择字体。输出文本。通过if循环改变文本输出函数中的坐标变量,使得文本从右向左移动。当移动到最左边时,改变i的值,进入下一case语句。case0:SetTextColor(hdc,RGB(255,0,0));HFont=CreateMyFont(L"设置字体并滚动",10,1,1);SelectObject(hdc,HFont);TextOut(hdc,right-x,cli
6、entDimension.bottom/2,title,length);if(x<(right+length))x=x+20;else{x=0;i=(i+1)%3;//即从右向左滚动完整个屏幕后开始变化字体和颜色}break;(一)算法描述:1.掌握获取字体句柄的两种方法:a.HFONThf;//hf为字体的句柄b.hf=GetStockObject();调用GetStockObject过得系统字体句柄,返回的是系统的默认字体。a.SelectObject(hdc,hf);调用函数将字体选入设备环境。2.创建自定义字体:a.HFONT=CreateFont(……)3.设置字体的
7、颜色和背景色:a.SetTextColor(hdc,crColor);b.SetBkcolor(hdc,crColor);4.掌握文字输出过程(获取字体信息,格式化文本,输出文本)。a.GetTextMetrics(hdc,&tm);//tm为TEXTMETRIC结构。b.调用函数GetTextMetric后,就可获得文字的TEXTMETRIC信息。c.格式化处理一是在文本行中确定后续文本的坐标,二是在换行后确定下一行文本的坐标。d.TextOut是文本输出函数。里面包含hdc句柄,文本起始