《Windows程序设计》实验教学大纲.docx

上传人:b****5 文档编号:4758896 上传时间:2022-12-08 格式:DOCX 页数:80 大小:1.90MB
下载 相关 举报
《Windows程序设计》实验教学大纲.docx_第1页
第1页 / 共80页
《Windows程序设计》实验教学大纲.docx_第2页
第2页 / 共80页
《Windows程序设计》实验教学大纲.docx_第3页
第3页 / 共80页
《Windows程序设计》实验教学大纲.docx_第4页
第4页 / 共80页
《Windows程序设计》实验教学大纲.docx_第5页
第5页 / 共80页
点击查看更多>>
下载资源
资源描述

《Windows程序设计》实验教学大纲.docx

《《Windows程序设计》实验教学大纲.docx》由会员分享,可在线阅读,更多相关《《Windows程序设计》实验教学大纲.docx(80页珍藏版)》请在冰豆网上搜索。

《Windows程序设计》实验教学大纲.docx

《Windows程序设计》实验教学大纲

 

《Windows程序设计》实验教学大纲

《Windows程序设计》实验教学大纲

实验学时:

32学时实验个数:

11实验学分:

1

课程性质:

(必做)适用专业:

计算机科学与技术、软件工程、网络工程

教材及参考书:

《VisualC++面向对象与可视化程序设计教程》(第三版)

大纲执笔人:

 大纲审定人:

郭涛

一、实验课的性质与任务

本课程实验大纲是面向计算机相关专业学生开设的《Windows程序设计》(以VC++为开发环境)实验课计划指导大纲,是依据《Windows程序设计》课程教学计划指导大纲编制。

本课程主要讲述了利用WindowsAPI函数和MFC进行简单的Windows程序开发的基本流程,结合该课程教学计划大纲的相应内容,设计了10个单项实验和综合实验,力求提高学生的动手能力,做到理论和实践相结合。

使学生在实验过程中掌握Windows程序设计的思想、原理,能使用SDK和MFC实现基于窗口的程序设计。

二、实验课程目的与要求

1.实验目的:

Windows程序设计实验课的开设,是为了使学生更好地理解和掌握运用VC开发环境开发Windows程序设计的基本理论、基本方法和基本技术,强化程序设计能力。

2.实验要求:

1)在实验中,要求学生个人独立思考,设计算法流程,编写出程序,完成上机调试,最后给出实验报告。

2)本课程的学习过程是复杂程序设计的训练过程,要求学生编写的程序结构清楚、正确易读,符合软件工程的规范;

a)3)在实验中更好地理解和掌握VC程序设计这门课程中所学的基本理论和方法,强化程序设计能力。

三、实验项目及内容提要

《Windows程序设计》实验课程(1106844037)

序号

实验项目编号

实验名称

学时

必做

选做

学分数

实验类型

内容提要

基本操作

验证

综合

设计

1

1

VisualC++6.0开发环境实验

2

熟悉VisualC++6.0开发环境

2

2

Windows应用程序基本框架实验

2

Windows框架程序设计

3

3

Windows绘图试验

4

GDI绘图

4

4

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

2

GDI文字输出

5

5

键盘消息的响应实验

2

基本键盘消息响应

6

6

鼠标消息的响应实验

2

基本鼠标消息响应

7

7

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

4

资源编程

8

8

控件API编程

4

控件编程

9

9

在MFC中创建应用程序资源

2

利用MFC创建资源

10

10

单文档与多文档

2

文档编程

11

11

综合性实验

6

数据库编程

四、实验内容安排:

实验一VisualC++6.0开发环境实验

(验证性实验2学时)

1、目的要求:

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

2、实验内容:

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

3、主要仪器设备及药品

Windows2000+VC6.0+MSDN

实验二Windows应用程序基本框架实验

(验证性实验2学时)

1、目的要求:

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

2、实验内容:

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

3、主要仪器设备及药品

Windows2000+VC6.0+MSDN

实验三Windows绘图试验

(验证性实验4学时)

1、目的要求:

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

2、实验内容:

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

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

源代码:

#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)

{

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));//创建画笔

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

//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);

SelectObject(hDC,hBrush);

Rectangle(hDC,200,0,300,400);

hBrush=(HBRUSH)GetStockObject(DKGRAY_BRUSH);

SelectObject(hDC,hBrush);

Rectangle(hDC,300,0,400,400);

hBrush=(HBRUSH)GetStockObject(BLACK_BRUSH);

SelectObject(hDC,hBrush);

Rectangle(hDC,400,0,500,400);

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

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

MoveToEx(hDC,0,0,NULL);LineTo(hDC,500,400);

DeleteObject(hPen);//删除画笔

DeleteObject(hBrush);//删除画刷

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

return0;

caseWM_DESTROY:

//结束应用程序

PostQuitMessage(0);

return0;

default:

//其他消息处理程序

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

}

}

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;

}

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);

}

截图:

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

源代码:

#include

#include

#include

#include

#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];//定义正弦曲线的点坐标.

 

intWINAPIWinMain(HINSTANCEhInstance,

HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow)

{//填写窗口类属性

HWNDhWnd;MSGMessage;WNDCLASSWndClass;

WndClass.style=0;//填写属性

WndClass.lpfnWndProc=WndProc;

WndClass.cbClsExtra=0;

WndClass.cbWndExtra=0;

WndClass.hInstance=hInstance;

WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);

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

WndClass.lpszMenuName=NULL;

WndClass.lpszClassName="SIN";

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

if(!

RegisterClass(&WndClass))//注册窗口.

{

MessageBeep(0);returnFALSE;

}

hWnd=CreateWindow

("SIN",//窗口类名.

"4_6",//标题名.

WS_OVERLAPPEDWINDOW,//带标题栏,最大/小按钮的窗口

CW_USEDEFAULT,//窗口左上角坐标.

0,

CW_USEDEFAULT,//采用缺省的宽度和高度.

0,

NULL,//无父窗口.

NULL,//无主菜单.

hInstance,//当前实例句柄.

NULL);

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

UpdateWindow(hWnd);//更新并绘制用户区.

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));

}

while(GetMessage(&Message,0,0,0))

{

TranslateMessage(&Message);//消息循环.

DispatchMessage(&Message);

}

returnMessage.wParam;

}

longWINAPIWndProc(HWNDhWnd,UINTiMessage,

UINTwParam,LONGlParam)

{

HDChDC;//定义设备环境句柄.

HBRUSHhBrush;//定义画刷句柄

HPENhPen;//定义画笔句柄

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

switch(iMessage)

{

caseWM_PAINT:

//处理绘图消息

hDC=BeginPaint(hWnd,&PtStr);//获得设备环境指针

SetWindowOrgEx(hDC,-200,-200,NULL);//设置原点坐标

hPen=CreatePen(PS_DASH,1,RGB(255,0,0));//建新画笔

SelectObject(hDC,hPen);//选入画笔

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));

lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);

}

elseif(i<=75)//第三个周期.

{

hPen=CreatePen(PS_DASH,1,RGB(0,0,255));

hBrush=CreateHatchBrush(HS_CROSS,RGB(0,0,255));

lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);

}

else//第四个周期.

{

hPen=CreatePen(PS_DASH,1,RGB(255,255,0));

hBrush=CreateHatchBrush(HS_VERTICAL,RGB(255,255,0));

lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);

}

SelectObject(hDC,hBrush);//选入画刷.

SelectObject(hDC,hPen);//选入画笔.

lCentreX=lpSin[i].x;//圆心x坐标.

lCentreY=lpSin[i].y;//圆心y坐标.

Ellipse(hDC,lCentreX-lRadious,lCentreY-lRadious,

lCentreX+lRadious,lCentreY+lRadious);//画圆

i++;

DeleteObject(hPen);//删除画笔

DeleteObject(hBrush);//删除画刷

EndPaint(hWnd,&PtStr);//删除设备环境指针

Sleep(100);//停0.1秒

if(i<100)InvalidateRect(hWnd,NULL,1);//刷新用户区

return0;

caseWM_DESTROY:

//关闭窗口.

PostQuitMessage(0);return0;

default

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

}

return0;

}

截图:

3、主要仪器设备及药品

Windows2000+VC6.0+MSDN

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

(验证性实验2学时)

1、目的要求:

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

2、实验内容:

(选做1个)

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

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

源代码:

#include

#include

#include

#include

LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,

WPARAMwParam,LPARAMlParam);

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;

}

//消息处理函数

LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,

WPARAMwParam,LPARAMlParam)

{

HDChDC;//设备句柄

PAINTSTRUCTps;//画刷结构

intX=0,Y=0,i=0,nCharlen=26;

staticintnChar=0;

charlpsz_1[]="abcdefghijklmnopqrstuvwxyz";

charlpsz_2[]="abcdefghijklmnopqrstuvwxyz";

staticBOOLbLeft=FALSE,bR

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

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1