《Windows程序设计》实验教学大纲Word文档下载推荐.docx
- 文档编号:17701043
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:80
- 大小:1.90MB
《Windows程序设计》实验教学大纲Word文档下载推荐.docx
《《Windows程序设计》实验教学大纲Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《《Windows程序设计》实验教学大纲Word文档下载推荐.docx(80页珍藏版)》请在冰豆网上搜索。
学分数
实验类型
内容提要
基本操作
验证
综合
设计
1
VisualC++6.0开发环境实验
2
√
熟悉VisualC++6.0开发环境
Windows应用程序基本框架实验
Windows框架程序设计
3
Windows绘图试验
4
GDI绘图
文本的输出方法与字体设置实验
GDI文字输出
5
键盘消息的响应实验
基本键盘消息响应
6
鼠标消息的响应实验
基本鼠标消息响应
7
资源在Windows编程中的应用实验
资源编程
8
控件API编程
控件编程
9
在MFC中创建应用程序资源
利用MFC创建资源
10
单文档与多文档
文档编程
11
综合性实验
数据库编程
四、实验内容安排:
实验一VisualC++6.0开发环境实验
(验证性实验2学时)
1、目的要求:
了解VisualC++6.0的特点,熟悉VisualC++6.0的开发环境。
2、实验内容:
了解和熟悉开发环境,对各种菜单功能,工程文件管理和MSDN帮助功能有完整的了解。
3、主要仪器设备及药品
Windows2000+VC6.0+MSDN
实验二Windows应用程序基本框架实验
(验证性实验2学时)
编写第一个Windows程序,理解入口函数Winmain和窗口函数WinProc,掌握消息驱动机制。
使用Win32Application模板建立一个Win32工程,编写一个包含WinMain,WinProc的基本Windows程序,并编译、运行,观察结果。
实验三Windows绘图试验
(验证性实验4学时)
理解DC概念,掌握坐标映射的设置方法,熟悉Windows绘图的基本方法和函数。
运用Windows提供的GDI函数,完成窗口图形输出功能。
1)将窗口划分为5个区域,并用白色到黑色线性变化的颜色填充这5个区域,画一条斜线穿过这5个区域;
源代码:
#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)
HDChDC;
//定义设备环境句柄
HBRUSHhBrush;
//定义画刷的句柄
HPENhPen;
//定义画笔的句柄
PAINTSTRUCTPtStr;
//定义指向包含绘图信息的结构体变量
switch(iMessage)//处理消息
caseWM_PAINT:
//处理绘图消息
MoveWindow(hWnd,0,0,500,400,NULL);
//初始化窗口大小
hDC=BeginPaint(hWnd,&
PtStr);
hPen=(HPEN)GetStockObject(NULL_PEN);
//获取系统定义的空画笔
SelectObject(hDC,hPen);
//选择画笔
hBrush=(HBRUSH)GetStockObject(BLACK_BRUSH);
//获取系统定义的画刷
hPen=CreatePen(PS_SOLID,2,RGB(255,0,0));
//创建画笔
//MoveToEx(hDC,0,150,NULL);
LineTo(hDC,750,150);
hBrush=(HBRUSH)GetStockObject(WHITE_BRUSH);
SelectObject(hDC,hBrush);
Rectangle(hDC,0,0,100,400);
hBrush=(HBRUSH)GetStockObject(LTGRAY_BRUSH);
SelectObject(hDC,hBrush);
Rectangle(hDC,100,0,200,400);
hBrush=(HBRUSH)GetStockObject(GRAY_BRUSH);
Rectangle(hDC,200,0,300,400);
hBrush=(HBRUSH)GetStockObject(DKGRAY_BRUSH);
Rectangle(hDC,300,0,400,400);
Rectangle(hDC,400,0,500,400);
MoveToEx(hDC,0,0,NULL);
LineTo(hDC,500,400);
DeleteObject(hPen);
//删除画笔
DeleteObject(hBrush);
//删除画刷
EndPaint(hWnd,&
//结束绘图
return0;
caseWM_DESTROY:
//结束应用程序
PostQuitMessage(0);
default:
//其他消息处理程序
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
BOOLInitWindows(HINSTANCEhInstance,intnCmdShow)//初始化窗口
HWNDhWnd;
hWnd=CreateWindow("
WinFill"
//生成窗口
"
填充示例程序"
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
0,
NULL,
hInstance,
NULL);
hWnd)
returnFALSE;
ShowWindow(hWnd,nCmdShow);
//显示窗口
UpdateWindow(hWnd);
returnTRUE;
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="
;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW|CS_VREDRAW;
returnRegisterClass(&
WndClass);
截图:
2)编写一个程序,在屏幕上出现一个圆心沿正弦曲线轨迹移动的实心圆,而且,每隔四分之一周期,圆的填充色和圆的周边颜色都发生变化,同时,圆的半径在四分之一周期之内由正弦曲线幅值的0.2倍至0.6倍线性增长。
#include<
math.h>
#definePi3.1415926
longWINAPIWndProc(HWNDhWnd,UINTiMessage,
UINTwParam,LONGlParam);
doubledfTheta=0,dfRange=100.0;
//正弦曲线的角度变量.
longi=0,j=0;
longlCentreX=0,lCentreY=0,lRadious=(long)(0.2*dfRange);
//定义圆心坐标和圆半径.
POINTlpSin[100];
//定义正弦曲线的点坐标.
{//填写窗口类属性
WndClass.style=0;
//填写属性
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
SIN"
RegisterClass(&
WndClass))//注册窗口.
MessageBeep(0);
returnFALSE;
hWnd=CreateWindow
("
//窗口类名.
4_6"
//标题名.
WS_OVERLAPPEDWINDOW,//带标题栏,最大/小按钮的窗口
CW_USEDEFAULT,//窗口左上角坐标.
CW_USEDEFAULT,//采用缺省的宽度和高度.
NULL,//无父窗口.
NULL,//无主菜单.
hInstance,//当前实例句柄.
//显示窗口.
//更新并绘制用户区.
for(intj=0;
j<
100;
j++)//生成正弦曲线的点坐标.
lpSin[j].x=(long)(j*2*Pi/100*60);
lpSin[j].y=(long)(dfRange*sin(j*2*Pi/100));
Message,0,0,0))
//消息循环.
UINTwParam,LONGlParam)
//定义设备环境句柄.
//定义画刷句柄
//定义画笔句柄
//定义包含绘图信息的结构体变量
switch(iMessage)
//处理绘图消息
//获得设备环境指针
SetWindowOrgEx(hDC,-200,-200,NULL);
//设置原点坐标
hPen=CreatePen(PS_DASH,1,RGB(255,0,0));
//建新画笔
//选入画笔
Polyline(hDC,lpSin,100);
//绘制正弦曲线
if(i<
=25)//第一个1/4周期.
{
hPen=CreatePen(PS_DASH,1,RGB(255,0,0));
hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,0,0));
lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);
//计算半径
}
elseif(i<
=50)//第二个1/4周期.
hPen=CreatePen(PS_DASH,1,RGB(0,255,0));
hBrush=CreateHatchBrush(HS_DIAGCROSS,RGB(0,255,0));
=75)//第三个周期.
hPen=CreatePen(PS_DASH,1,RGB(0,0,255));
hBrush=CreateHatchBrush(HS_CROSS,RGB(0,0,255));
else//第四个周期.
hPen=CreatePen(PS_DASH,1,RGB(255,255,0));
hBrush=CreateHatchBrush(HS_VERTICAL,RGB(255,255,0));
//选入画刷.
//选入画笔.
lCentreX=lpSin[i].x;
//圆心x坐标.
lCentreY=lpSin[i].y;
//圆心y坐标.
Ellipse(hDC,lCentreX-lRadious,lCentreY-lRadious,
lCentreX+lRadious,lCentreY+lRadious);
//画圆
i++;
//删除画笔
//删除设备环境指针
Sleep(100);
//停0.1秒
if(i<
100)InvalidateRect(hWnd,NULL,1);
//刷新用户区
//关闭窗口.
default
return0;
实验四文本的输出方法与字体设置
理解字体句柄的念,熟悉Windows文字输出的基本方法和函数,学习字体格式的控制。
(选做1个)
1)在窗口中显示出26个英文字母,从左向右字母依次位置提高10个像素单位,并且颜色变为红色,然后回到正常位置;
当到达最右端后改变方向从右向左依次变成红色并位置提高10个像素单位。
在窗口的第二行显示26个字母,字体从正常到斜体,颜色从黑色到天蓝色不断变换。
stdio.h>
LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,
WPARAMwParam,LPARAMlParam);
intWINAPIWinMain(
HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPSTRlpCmdLine,
intnCmdShow)
InitWindowsClass(hInstance))returnFALSE;
InitWindows(hInstance,nCmdShow))returnFALSE;
Message,0,0,0))//消息循环
//消息处理函数
WPARAMwParam,LPARAMlParam)
//设备句柄
PAINTSTRUCTps;
//画刷结构
intX=0,Y=0,i=0,nCharlen=26;
staticintnChar=0;
charlpsz_1[]="
abcdefghijklmnopqrstuvwxyz"
charlpsz_2[]="
staticBOOLbLeft=FALSE,bR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows程序设计 Windows 程序设计 实验教学 大纲