Wndows程序设计实验报告Word格式文档下载.docx
- 文档编号:1047997
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:81
- 大小:89.14KB
Wndows程序设计实验报告Word格式文档下载.docx
《Wndows程序设计实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Wndows程序设计实验报告Word格式文档下载.docx(81页珍藏版)》请在冰点文库上搜索。
文本的输出方法与字体设置实验
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
四、实验流程、操作步骤或核心代码、算法片段
五、实验结果的分析与评价
实验报告
(二)
1、实验目的及要求
编写第一个Windows程序,理解入口函数Winmain和窗口函数WinProc,掌握消息驱动机制。
使用Win32Application模板建立一个Win32工程,编写一个包含WinMain,WinProc的基本Windows程序,并编译、运行,观察结果。
4、实验流程、操作步骤或核心代码、算法片段
#include<
windows.h>
stdlib.h>
string.h>
longWINAPIWndProc(
HWNDhWnd,
UINTiMessage,
UINTwParam,
LONGlParam
);
BOOLInitWindowsClass(HINSTANCEhInstance);
BOOLInitWindows(HINSTANCEhInstance,intnCmdShow);
//主函数
intWINAPIWinMain(
HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPSTRlpCmdLine,
intnCmdShow)
{
MSGMessage;
if(!
InitWindowsClass(hInstance))returnFALSE;
InitWindows(hInstance,nCmdShow))returnFALSE;
while(GetMessage(&
Message,0,0,0))//消息循环
{
TranslateMessage(&
Message);
DispatchMessage(&
}
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<
LnCount;
x=x+1)//输出文本
TextOut(hDC,nXChar,nYChar*(1+x),textbuf[x],lstrlen(textbuf[x]));
EndPaint(hWnd,&
caseWM_DESTROY:
//结束应用程序
PostQuitMessage(0);
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("
//生成窗口
"
填充示例程序"
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
0,
NULL,
hInstance,
NULL);
hWnd)returnFALSE;
ShowWindow(hWnd,nCmdShow);
//显示窗口
UpdateWindow(hWnd);
returnTRUE;
初次上手有点生疏,但经过多次实践,略微懂得其中原理
实验报告(三)
理解DC概念,掌握坐标映射的设置方法,熟悉Windows绘图的基本方法和函数。
2、实验内容
运用Windows提供的GDI函数,完成窗口图形输出功能。
1)将窗口划分为5个区域,并用白色到黑色线性变化的颜色填充这5个区域,画一条斜线穿过这5个区域;
2)编写一个程序,在屏幕上出现一个圆心沿正弦曲线轨迹移动的实心圆,而且,每隔四分之一周期,圆的填充色和圆的周边颜色都发生变化,同时,圆的半径在四分之一周期之内由正弦曲线幅值的0.2倍至0.6倍线性增长。
#include"
stdafx.h"
resource.h"
LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)
staticinti=0;
staticintj=0;
staticintk=1;
HBRUSHhBrush;
//定义画刷的句柄
HPENhPen;
//定义指向包含绘图信息的结构体变量
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++;
caseIDM_end:
DestroyWindow(hWnd);
default:
returnDefWindowProc(hWnd,message,wParam,lParam);
}
caseWM_PAINT:
if(j%2==1)
hdc=BeginPaint(hWnd,&
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));
//创建画笔
Arc(hdc,63+(i%200)*5,137,138+(i%200)*5,212,100+(i%200)*5,137,100+(i%200)*5,137);
//画一个圆
i++;
//删除画笔
DeleteObject(hBrush);
//删除画刷
EndPaint(hWnd,&
//结束绘图
Sleep(50);
if(k%2==0)
break;
caseWM_DESTROY:
PostQuitMessage(0);
returnDefWindowProc(hWnd,message,wParam,lParam);
return0;
初步掌握绘图的过程,了解了其中大意
实验报告(四)
文本的输出方法与字体设置
理解字体句柄的念,熟悉Windows文字输出的基本方法和函数,学习字体格式的控制。
(选做1个)
1、在窗口中显示出26个英文字母,从左向右字母依次位置提高10个像素单位,并且颜色变为红色,然后回到正常位置;
当到达最右端后改变方向从右向左依次变成红色并位置提高10个像素单位。
在窗口的第二行显示26个字母,字体从正常到斜体,颜色从黑色到天蓝色不断变换。
2、编写一个程序,在窗口中显示“VC中显示字体与背景”,字体颜色为红色,背景色为黄色,字体为宋体,字高40。
1)在窗口中显示出26个英文字母,从左向右字母依次位置提高10个像素单位,并且颜色变为红色,然后回到正常位置;
#include<
stdio.h>
inta=0;
//函数提前声明
BOOLInitWindows(HINSTANCEhInstance,intnCmdShow);
longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam);
BOOLInitWindowsClass(HINSTANCEhInstance)//初始化窗口类
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH):
:
GetStockObject(WHITE_BRUSH);
WndClass.hCursor=:
LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=:
LoadIcon(NULL,"
WndClass.hInstance=hInstance;
WndClass.lpszClassName="
WndClass.lpfnWndProc=WndProc;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW|CS_VREDRAW;
return(:
RegisterClass(&
WndClass));
//
BOOLInitWindows(HINSTANCEhInstance,intnCmdShow)//初始化窗口
HWNDhWnd;
hWnd=:
CreateWindow("
"
填充实例程序"
WS_OVERLAPPEDWINDOW,//窗口类型
250,150,450,450,NULL,NULL,hInstance,NULL);
if(!
hWnd)
returnFALSE;
:
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
//设置环境句柄
charstr[]="
abcdefghijklmnopqrstuvwxyz"
inti=0;
staticn;
TEXTMETRICtm;
intLY=50;
//初始坐标
HFONThF_black,hF_blue;
//字体句柄
switch(iMessage){
caseWM_CREATE:
SetTimer(hWnd,1,300,NULL);
hdc=BeginPaint(hWnd,&
ps);
GetTextMetrics(hdc,&
//获取默认句柄,写入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,&
for(i=0;
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,
FW_HEAVY,//字体的粗度
1,//定义斜体
GB2312_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH,
"
粗体字"
SelectObject(hdc,hF_blue);
for(i=0;
SetTextColor(hdc,RGB(0,0,255));
TextOut(hdc,(25-i)*tm.tmAveCharWidth,LY+3*tm.tmHeight+tm.tmInternalLeading,&
caseWM_TIMER:
n++;
if(n==26)
n=0;
RECTrc;
GetClientRect(hWnd,&
rc);
//获取当前窗口可用区
InvalidateRect(hWnd,&
rc,true);
//对该区域进行刷新
UpdateWindow(hWnd);
caseWM_KEYDOW
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Wndows 程序设计 实验 报告