Wndows程序设计实验报告.docx

上传人:b****2 文档编号:780388 上传时间:2023-04-30 格式:DOCX 页数:81 大小:89.14KB
下载 相关 举报
Wndows程序设计实验报告.docx_第1页
第1页 / 共81页
Wndows程序设计实验报告.docx_第2页
第2页 / 共81页
Wndows程序设计实验报告.docx_第3页
第3页 / 共81页
Wndows程序设计实验报告.docx_第4页
第4页 / 共81页
Wndows程序设计实验报告.docx_第5页
第5页 / 共81页
Wndows程序设计实验报告.docx_第6页
第6页 / 共81页
Wndows程序设计实验报告.docx_第7页
第7页 / 共81页
Wndows程序设计实验报告.docx_第8页
第8页 / 共81页
Wndows程序设计实验报告.docx_第9页
第9页 / 共81页
Wndows程序设计实验报告.docx_第10页
第10页 / 共81页
Wndows程序设计实验报告.docx_第11页
第11页 / 共81页
Wndows程序设计实验报告.docx_第12页
第12页 / 共81页
Wndows程序设计实验报告.docx_第13页
第13页 / 共81页
Wndows程序设计实验报告.docx_第14页
第14页 / 共81页
Wndows程序设计实验报告.docx_第15页
第15页 / 共81页
Wndows程序设计实验报告.docx_第16页
第16页 / 共81页
Wndows程序设计实验报告.docx_第17页
第17页 / 共81页
Wndows程序设计实验报告.docx_第18页
第18页 / 共81页
Wndows程序设计实验报告.docx_第19页
第19页 / 共81页
Wndows程序设计实验报告.docx_第20页
第20页 / 共81页
亲,该文档总共81页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Wndows程序设计实验报告.docx

《Wndows程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《Wndows程序设计实验报告.docx(81页珍藏版)》请在冰点文库上搜索。

Wndows程序设计实验报告.docx

Wndows程序设计实验报告

四川师范大学计科学院

实验报告册

 

院系名称:

计算机科学学院

课程名称:

Windows程序设计

实验学期20年至年第一学期

专业班级:

姓名:

学号:

指导教师:

实验最终成绩:

 

计算机科学学院

实验报告须知

1.学生填写实验报告应按规范填写,填写格式见由任课老师给出的实验报告样本;

2.学生应填写的内容包括:

封面相关栏目、第一页中‘本学期(年)开设实验课程情况一览表’中的实验名称、学时数;每次报告中的实验性质、同组人姓名、实验日期、以及实验报告中的一至五项;

3.教师填写内容为:

实验评价、每次报告成绩、第一页中‘本学期(年)开设实验课程情况一览表’中成绩、及封面的实验最终成绩;

4.学生实验结束后,教师应对学生实验结果进行核实,学生方可离开实验室。

5、实验成绩等级分为(90-100分)优,(80-89分)良,(70-79分)中,(60-69分)及格,(59分)不及格。

6.本实验册应妥善保管,本课程实验结束后应交回实验室。

本学期(年)开设实验课程情况一览表

序号

实验名称

(学生实验后填写)

学时数

成绩

(分数或等级)

1

VisualC++6.0开发环境实验

2

Windows应用程序基本框架实验

3

Windows绘图试验

4

文本的输出方法与字体设置实验

5

键盘消息的响应实验

6

鼠标消息的响应实验

7

资源在Windows编程中的应用实验

8

控件API编程

9

在MFC中创建应用程序资源

10

单文档与多文档

11

综合性实验

12

13

14

15

16

17

18

19

20

 

实验报告

(一)

实验名称

VisualC++6.0开发环境实验

同组人姓名

实验性质

□基本操作□验证性

□综合性□设计性

实验日期

实验成绩

教师评价:

实验预习□实验操作□实验结果□实验报告□其它□

教师签名:

一、实验目的及要求

了解VisualC++6.0的特点,熟悉VisualC++6.0的开发环境。

二、实验内容

了解和熟悉开发环境,对各种菜单功能,工程文件管理和MSDN帮助功能有完整的了

 

三、主要设备及软件

Windows2000+VC6.0+MSDN

四、实验流程、操作步骤或核心代码、算法片段

五、实验结果的分析与评价

 

 

实验报告

(二)

实验名称

Windows应用程序基本框架实验

同组人姓名

实验性质

□基本操作□验证性

□综合性□设计性

实验日期

实验成绩

教师评价:

实验预习□实验操作□实验结果□实验报告□其它□

教师签名:

1、实验目的及要求

编写第一个Windows程序,理解入口函数Winmain和窗口函数WinProc,掌握消息驱动机制。

二、实验内容

使用Win32Application模板建立一个Win32工程,编写一个包含WinMain,WinProc的基本Windows程序,并编译、运行,观察结果。

 

三、主要设备及软件

Windows2000+VC6.0+MSDN

4、实验流程、操作步骤或核心代码、算法片段

#include

#include

#include

longWINAPIWndProc(

HWNDhWnd,

UINTiMessage,

UINTwParam,

LONGlParam

);

BOOLInitWindowsClass(HINSTANCEhInstance);

BOOLInitWindows(HINSTANCEhInstance,intnCmdShow);

//主函数

intWINAPIWinMain(

HINSTANCEhInstance,

HINSTANCEhPrevInstance,

LPSTRlpCmdLine,

intnCmdShow)

{

MSGMessage;

if(!

InitWindowsClass(hInstance))returnFALSE;

if(!

InitWindows(hInstance,nCmdShow))returnFALSE;

while(GetMessage(&Message,0,0,0))//消息循环

{

TranslateMessage(&Message);

DispatchMessage(&Message);

}

returnMessage.wParam;

}

//消息处理函数

longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam)

{

staticlongnXChar,nYChar;

HDChDC;//定义指向设备上下文的句柄

shortx;

TEXTMETRICtm;

shortLnCount=6;

PAINTSTRUCTPtStr;//定义指向包含绘图信息的结构体变量

staticchar*textbuf[]=

{

"ThisistheFirstline",

"Thisisthesecondline",

"Thisisthethirdline",

"Thisisthefourthline",

"Thisisthefifthline",

"Thisisthesixthline"

};

switch(iMessage)//处理消息

{caseWM_CREATE:

//处理窗口创建消息

hDC=GetDC(hWnd);//获取当前设备表句柄

GetTextMetrics(hDC,&tm);//获取字体信息

nXChar=tm.tmAveCharWidth;//获取字符宽度

nYChar=tm.tmHeight+tm.tmExternalLeading;

ReleaseDC(hWnd,hDC);//释放当前设备句柄

return0;

caseWM_PAINT:

//处理重画消息

hDC=BeginPaint(hWnd,&PtStr);//开始绘画

for(x=0;x

TextOut(hDC,nXChar,nYChar*(1+x),textbuf[x],lstrlen(textbuf[x]));

EndPaint(hWnd,&PtStr);

return0;

caseWM_DESTROY:

//结束应用程序

PostQuitMessage(0);

return0;

default:

//其他消息处理程序

return(DefWindowProc(hWnd,iMessage,wParam,lParam));

}

}

BOOLInitWindowsClass(HINSTANCEhInstance)//定义窗口类

{

WNDCLASSWndClass;

WndClass.cbClsExtra=0;

WndClass.cbWndExtra=0;

WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));

WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);

WndClass.hIcon=LoadIcon(NULL,"END");

WndClass.hInstance=hInstance;

WndClass.lpfnWndProc=WndProc;

WndClass.lpszClassName="WinFill";

WndClass.lpszMenuName=NULL;

WndClass.style=CS_HREDRAW|CS_VREDRAW;

returnRegisterClass(&WndClass);

}

BOOLInitWindows(HINSTANCEhInstance,intnCmdShow)//初始化窗口

{HWNDhWnd;

hWnd=CreateWindow("WinFill",//生成窗口

"填充示例程序",

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,

0,

CW_USEDEFAULT,

0,

NULL,

NULL,

hInstance,

NULL);

if(!

hWnd)returnFALSE;

ShowWindow(hWnd,nCmdShow);//显示窗口

UpdateWindow(hWnd);

returnTRUE;

}

五、实验结果的分析与评价

初次上手有点生疏,但经过多次实践,略微懂得其中原理

实验报告(三)

实验名称

Windows绘图试验

同组人姓名

实验性质

□基本操作□验证性

□综合性□设计性

实验日期

实验成绩

教师评价:

实验预习□实验操作□实验结果□实验报告□其它□

教师签名:

1、实验目的及要求

理解DC概念,掌握坐标映射的设置方法,熟悉Windows绘图的基本方法和函数。

2、实验内容

运用Windows提供的GDI函数,完成窗口图形输出功能。

 

三、主要设备及软件

Windows2000+VC6.0+MSDN

4、实验流程、操作步骤或核心代码、算法片段

1)将窗口划分为5个区域,并用白色到黑色线性变化的颜色填充这5个区域,画一条斜线穿过这5个区域;

2)编写一个程序,在屏幕上出现一个圆心沿正弦曲线轨迹移动的实心圆,而且,每隔四分之一周期,圆的填充色和圆的周边颜色都发生变化,同时,圆的半径在四分之一周期之内由正弦曲线幅值的0.2倍至0.6倍线性增长。

#include"stdafx.h"

#include"resource.h"

LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)

{

staticinti=0;

staticintj=0;

staticintk=1;

HBRUSHhBrush;//定义画刷的句柄

HPENhPen;

PAINTSTRUCTPtStr;//定义指向包含绘图信息的结构体变量

intwmId,wmEvent;

PAINTSTRUCTps;

HDChdc;

TCHARszHello[MAX_LOADSTRING];

LoadString(hInst,IDS_HELLO,szHello,MAX_LOADSTRING);

switch(message)

{

caseWM_COMMAND:

wmId=LOWORD(wParam);

wmEvent=HIWORD(wParam);

switch(wmId)

{

caseIDM_action:

j=1;

i=0;

InvalidateRect(hWnd,NULL,1);

break;

caseIDM_wait:

j++;

InvalidateRect(hWnd,NULL,1);

break;

caseIDM_change:

//改背景

k++;

break;

caseIDM_end:

DestroyWindow(hWnd);

break;

default:

returnDefWindowProc(hWnd,message,wParam,lParam);

}

break;

caseWM_PAINT:

if(j%2==1)

{

hdc=BeginPaint(hWnd,&PtStr);

hPen=(HPEN)GetStockObject(NULL_PEN);//获取系统定义的空画笔

SelectObject(hdc,hPen);//选择画笔

hBrush=(HBRUSH)GetStockObject(BLACK_BRUSH);//获取系统定义的画刷

SelectObject(hdc,hBrush);//选择画刷

LineTo(hdc,50,50);//画线

DeleteObject(hPen);//删除画笔

hPen=CreatePen(PS_SOLID,2,RGB(255,0,0));//创建画笔

SelectObject(hdc,hPen);//选择画笔

Arc(hdc,63+(i%200)*5,137,138+(i%200)*5,212,100+(i%200)*5,137,100+(i%200)*5,137);//画一个圆

i++;

DeleteObject(hPen);//删除画笔

DeleteObject(hBrush);//删除画刷

EndPaint(hWnd,&PtStr);//结束绘图

Sleep(50);

InvalidateRect(hWnd,NULL,1);

}

if(k%2==0)

{

}

break;

caseWM_DESTROY:

PostQuitMessage(0);

break;

default:

returnDefWindowProc(hWnd,message,wParam,lParam);

}

return0;

}

五、实验结果的分析与评价

初步掌握绘图的过程,了解了其中大意

 

实验报告(四)

实验名称

文本的输出方法与字体设置

同组人姓名

实验性质

□基本操作□验证性

□综合性□设计性

实验日期

实验成绩

教师评价:

实验预习□实验操作□实验结果□实验报告□其它□

教师签名:

一、实验目的及要求

理解字体句柄的念,熟悉Windows文字输出的基本方法和函数,学习字体格式的控制。

二、实验内容

(选做1个)

1、在窗口中显示出26个英文字母,从左向右字母依次位置提高10个像素单位,并且颜色变为红色,然后回到正常位置;当到达最右端后改变方向从右向左依次变成红色并位置提高10个像素单位。

在窗口的第二行显示26个字母,字体从正常到斜体,颜色从黑色到天蓝色不断变换。

2、编写一个程序,在窗口中显示“VC中显示字体与背景”,字体颜色为红色,背景色为黄色,字体为宋体,字高40。

 

三、主要设备及软件

4、实验流程、操作步骤或核心代码、算法片段

1)在窗口中显示出26个英文字母,从左向右字母依次位置提高10个像素单位,并且颜色变为红色,然后回到正常位置;当到达最右端后改变方向从右向左依次变成红色并位置提高10个像素单位。

在窗口的第二行显示26个字母,字体从正常到斜体,颜色从黑色到天蓝色不断变换。

#include

#include

#include

#include

inta=0;

//函数提前声明

BOOLInitWindowsClass(HINSTANCEhInstance);

BOOLInitWindows(HINSTANCEhInstance,intnCmdShow);

longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam);

BOOLInitWindowsClass(HINSTANCEhInstance)//初始化窗口类

{

WNDCLASSWndClass;

WndClass.cbClsExtra=0;

WndClass.cbWndExtra=0;

WndClass.hbrBackground=(HBRUSH):

:

GetStockObject(WHITE_BRUSH);

WndClass.hCursor=:

:

LoadCursor(NULL,IDC_ARROW);

WndClass.hIcon=:

:

LoadIcon(NULL,"END");

WndClass.hInstance=hInstance;

WndClass.lpszClassName="WinFill";

WndClass.lpfnWndProc=WndProc;

WndClass.lpszMenuName=NULL;

WndClass.style=CS_HREDRAW|CS_VREDRAW;

return(:

:

RegisterClass(&WndClass));

}

//

BOOLInitWindows(HINSTANCEhInstance,intnCmdShow)//初始化窗口

{

HWNDhWnd;

hWnd=:

:

CreateWindow("WinFill","填充实例程序",

WS_OVERLAPPEDWINDOW,//窗口类型

250,150,450,450,NULL,NULL,hInstance,NULL);

if(!

hWnd)

{

returnFALSE;

}

:

:

ShowWindow(hWnd,nCmdShow);

:

:

UpdateWindow(hWnd);

returnTRUE;

}

longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam)

{

HDChdc;//设置环境句柄

charstr[]="abcdefghijklmnopqrstuvwxyz";

inti=0;

staticn;

PAINTSTRUCTps;

TEXTMETRICtm;

intLY=50;//初始坐标

HFONThF_black,hF_blue;//字体句柄

switch(iMessage){

caseWM_CREATE:

SetTimer(hWnd,1,300,NULL);

break;

caseWM_PAINT:

hdc=BeginPaint(hWnd,&ps);

GetTextMetrics(hdc,&tm);//获取默认句柄,写入tm结构中

for(i=0;i<26;i++)

{

inty=LY;//LY

if(i==n)

{

if(a==0)

y=LY-30;

elsey=LY+30;

SetTextColor(hdc,RGB(255,0,0));//设置单个的颜色为红

}

TextOut(hdc,2*i*tm.tmAveCharWidth,y,&str[i],1);//依次为字符串起始坐标,所显示的字符串,输出的字节数

SetTextColor(hdc,RGB(0,0,0));//设置整排的颜色为黑

}

if(n%2==0)//当时钟为偶数时显示黑色字体

{

hF_black=CreateFont(30,//字体的高度

0,0,0,

FW_NORMAL,//字体的粗度

0,//定义斜体

0,0,

GB2312_CHARSET,

OUT_DEFAULT_PRECIS,

CLIP_DEFAULT_PRECIS,

DEFAULT_QUALITY,

DEFAULT_PITCH,

"正常");

SelectObject(hdc,hF_black);

GetTextMetrics(hdc,&tm);

for(i=0;i<26;i++)

{

SetTextColor(hdc,RGB(0,0,0));

TextOut(hdc,(25-i)*tm.tmAveCharWidth,LY+3*tm.tmHeight+tm.tmInternalLeading,&str[25-i],1);

}

}

else

{

hF_blue=CreateFont(20,//字体的高度

0,

0,

0,

FW_HEAVY,//字体的粗度

1,//定义斜体

0,

0,

GB2312_CHARSET,

OUT_DEFAULT_PRECIS,

CLIP_DEFAULT_PRECIS,

DEFAULT_QUALITY,

DEFAULT_PITCH,

"粗体字");

SelectObject(hdc,hF_blue);

GetTextMetrics(hdc,&tm);

for(i=0;i<26;i++)

{

SetTextColor(hdc,RGB(0,0,255));

TextOut(hdc,(25-i)*tm.tmAveCharWidth,LY+3*tm.tmHeight+tm.tmInternalLeading,&str[25-i],1);

}

}

EndPaint(hWnd,&ps);

break;

caseWM_TIMER:

n++;

if(n==26)

n=0;

RECTrc;

GetClientRect(hWnd,&rc);//获取当前窗口可用区

InvalidateRect(hWnd,&rc,true);//对该区域进行刷新

UpdateWindow(hWnd);

break;

caseWM_KEYDOW

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2