Windows程序设计实验教学大纲

上传人:仙*** 文档编号:33411641 上传时间:2021-10-17 格式:DOC 页数:65 大小:2.31MB
收藏 版权申诉 举报 下载
Windows程序设计实验教学大纲_第1页
第1页 / 共65页
Windows程序设计实验教学大纲_第2页
第2页 / 共65页
Windows程序设计实验教学大纲_第3页
第3页 / 共65页
资源描述:

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

1、Windows程序设计实验教学大纲实验学时:32学时 实验个数:11 实验学分: 1课程性质:(必做) 适用专业: 计算机科学与技术、软件工程、网络工程教材及参考书: Visual C+面向对象与可视化程序设计教程(第三版) 大纲执笔人: 大纲审定人: 郭涛一、 实验课的性质与任务本课程实验大纲是面向计算机相关专业学生开设的Windows程序设计(以VC+为开发环境)实验课计划指导大纲,是依据Windows程序设计课程教学计划指导大纲编制。本课程主要讲述了利用Windows API函数和MFC进行简单的Windows程序开发的基本流程,结合该课程教学计划大纲的相应内容,设计了10个单项实验和综

2、合实验,力求提高学生的动手能力,做到理论和实践相结合。使学生在实验过程中掌握Windows程序设计的思想、原理,能使用SDK和MFC实现基于窗口的程序设计。二、 实验课程目的与要求1.实验目的:Windows程序设计实验课的开设,是为了使学生更好地理解和掌握运用VC开发环境开发Windows程序设计的基本理论、基本方法和基本技术,强化程序设计能力。2.实验要求:1) 在实验中,要求学生个人独立思考,设计算法流程,编写出程序,完成上机调试,最后给出实验报告。2) 本课程的学习过程是复杂程序设计的训练过程,要求学生编写的程序结构清楚、正确易读,符合软件工程的规范;a) 3) 在实验中更好地理解和掌

3、握VC程序设计这门课程中所学的基本理论和方法,强化程序设计能力。三、 实验项目及内容提要Windows程序设计实验课程(1106844037)序号实验项目编号实验名称学时必做选做学分数实验类型内容提要基本操作验证综合设计11Visual C+ 6.0开发环境实验2熟悉Visual C+ 6.0开发环境22Windows应用程序基本框架实验2Windows框架程序设计33Windows绘图试验4GDI绘图44文本的输出方法与字体设置实验2GDI文字输出55键盘消息的响应实验2基本键盘消息响应66鼠标消息的响应实验2基本鼠标消息响应77资源在Windows编程中的应用实验4资源编程88控件API编

4、程4控件编程99在MFC中创建应用程序资源2利用MFC创建资源1010单文档与多文档2文档编程1111综合性实验6数据库编程四、 实验内容安排:实验一 Visual C+6.0开发环境实验( 验证性实验 2学时)1、目的要求:了解Visual C+6.0的特点,熟悉Visual C+6.0的开发环境。2、实验内容:了解和熟悉开发环境,对各种菜单功能,工程文件管理和MSDN帮助功能有完整的了解。3、主要仪器设备及药品Windows 2000+VC 6.0+MSDN实验二 Windows应用程序基本框架实验(验证性实验 2学时)1、目的要求:编写第一个Windows程序,理解入口函数Winmain

5、和窗口函数WinProc,掌握消息驱动机制。2、实验内容: 使用Win32 Application模板建立一个Win32工程,编写一个包含WinMain, WinProc的基本Windows程序,并编译、运行,观察结果。3、主要仪器设备及药品Windows 2000+VC 6.0+MSDN实验三 Windows绘图试验(验证性实验 4学时)1、目的要求:理解DC概念,掌握坐标映射的设置方法,熟悉Windows绘图的基本方法和函数。2、实验内容:运用Windows提供的GDI函数,完成窗口图形输出功能。1)将窗口划分为5个区域,并用白色到黑色线性变化的颜色填充这5个区域,画一条斜线穿过这5个区域

6、;源代码:#include#include#includelong WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam, LONG lParam);BOOL InitWindowsClass(HINSTANCE hInstance);BOOL InitWindows(HINSTANCE hInstance, int nCmdShow);/主函数int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)MSG Me

7、ssage;if (!InitWindowsClass(hInstance)return FALSE;if (!InitWindows(hInstance, nCmdShow)return FALSE;while (GetMessage(&Message, 0, 0, 0)/消息循环TranslateMessage(&Message);DispatchMessage(&Message);return Message.wParam;long WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam, LONG lParam)HDC hDC; /定义

8、设备环境句柄HBRUSH hBrush; /定义画刷的句柄HPEN hPen;/定义画笔的句柄PAINTSTRUCT PtStr; /定义指向包含绘图信息的结构体变量switch (iMessage) /处理消息case WM_PAINT: /处理绘图消息MoveWindow(hWnd, 0, 0, 500,400, NULL);/初始化窗口大小hDC = BeginPaint(hWnd, &PtStr);hPen = (HPEN)GetStockObject(NULL_PEN); /获取系统定义的空画笔SelectObject(hDC, hPen); /选择画笔hBrush = (HBRUS

9、H)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)GetStockObjec

10、t(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)GetStoc

11、kObject(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); /结束绘图return 0;case

12、 WM_DESTROY: /结束应用程序PostQuitMessage(0);return 0;default:/其他消息处理程序return(DefWindowProc(hWnd, iMessage, wParam, lParam);BOOL InitWindows(HINSTANCE hInstance, int nCmdShow) /初始化窗口HWND hWnd;hWnd = CreateWindow(WinFill, /生成窗口填充示例程序,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,N

13、ULL);if (!hWnd)return FALSE;ShowWindow(hWnd, nCmdShow);/显示窗口UpdateWindow(hWnd);return TRUE;BOOL InitWindowsClass(HINSTANCE hInstance) /定义窗口类WNDCLASS WndClass;WndClass.cbClsExtra = 0;WndClass.cbWndExtra = 0;WndClass.hbrBackground = (HBRUSH)(GetStockObject(WHITE_BRUSH);WndClass.hCursor = LoadCursor(NU

14、LL, 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;return RegisterClass(&WndClass);截图:2)编写一个程序,在屏幕上出现一个圆心沿正弦曲线轨迹移动的实心圆,而且,每隔四分之一周期,圆的填

15、充色和圆的周边颜色都发生变化,同时,圆的半径在四分之一周期之内由正弦曲线幅值的0.2倍至0.6倍线性增长。源代码:#include #include #include #include #define Pi 3.1415926long WINAPI WndProc(HWND hWnd, UINT iMessage,UINT wParam, LONG lParam);double dfTheta = 0, dfRange = 100.0;/正弦曲线的角度变量.long i = 0, j = 0;long lCentreX = 0, lCentreY = 0, lRadious = (long)(

16、0.2*dfRange);/定义圆心坐标和圆半径.POINT lpSin100;/定义正弦曲线的点坐标.int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) / 填写窗口类属性HWND hWnd;MSG Message;WNDCLASS WndClass;WndClass.style = 0;/填写属性WndClass.lpfnWndProc = WndProc;WndClass.cbClsExtra = 0;WndClass.cbWndExtra = 0;W

17、ndClass.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);return FALSE;hWnd

18、 = CreateWindow(SIN,/窗口类名.4_6,/标题名.WS_OVERLAPPEDWINDOW,/带标题栏,最大/小按钮的窗口CW_USEDEFAULT,/窗口左上角坐标.0,CW_USEDEFAULT,/采用缺省的宽度和高度.0,NULL,/无父窗口.NULL,/无主菜单.hInstance,/当前实例句柄.NULL);ShowWindow(hWnd, nCmdShow);/显示窗口.UpdateWindow(hWnd);/更新并绘制用户区.for (int j = 0; j100; j+)/生成正弦曲线的点坐标.lpSinj.x = (long)(j * 2 * Pi / 1

19、00 * 60);lpSinj.y = (long)(dfRange*sin(j * 2 * Pi / 100);while (GetMessage(&Message, 0, 0, 0)TranslateMessage(&Message);/消息循环.DispatchMessage(&Message);return Message.wParam;long WINAPI WndProc(HWND hWnd, UINT iMessage,UINT wParam, LONG lParam)HDC hDC;/定义设备环境句柄.HBRUSH hBrush;/定义画刷句柄HPEN hPen;/定义画笔句柄

20、PAINTSTRUCT PtStr;/定义包含绘图信息的结构体变量switch (iMessage)case WM_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 = Crea

21、tePen(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); /计算半径else if (i = 50)/第二个1/4周期.hPen = CreatePen(PS_DASH, 1, RGB(0, 255, 0);hBrush = CreateHatchBrush(HS_DIAGCROSS, RGB(0, 255, 0);lRadious = (long)(dfRa

22、nge*0.2 + i % 25 * dfRange*0.4 / 25);else if (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_

23、VERTICAL, RGB(255, 255, 0);lRadious = (long)(dfRange*0.2 + i % 25 * dfRange*0.4 / 25);SelectObject(hDC, hBrush);/选入画刷.SelectObject(hDC, hPen);/选入画笔.lCentreX = lpSini.x;/圆心x坐标.lCentreY = lpSini.y;/圆心y坐标.Ellipse(hDC, lCentreX - lRadious, lCentreY - lRadious,lCentreX + lRadious, lCentreY + lRadious); /

24、画圆i+;DeleteObject(hPen);/删除画笔DeleteObject(hBrush);/删除画刷EndPaint(hWnd, &PtStr);/删除设备环境指针Sleep(100);/停0.1秒if (i100) InvalidateRect(hWnd, NULL, 1);/刷新用户区return 0;case WM_DESTROY:/关闭窗口.PostQuitMessage(0);return 0;defaultreturn(DefWindowProc(hWnd, iMessage, wParam, lParam);return 0;截图:3、主要仪器设备及药品Windows

25、2000+VC 6.0+MSDN实验四 文本的输出方法与字体设置(验证性实验 2学时)1、目的要求:理解字体句柄的念,熟悉Windows文字输出的基本方法和函数,学习字体格式的控制。2、实验内容:(选做1个)1)在窗口中显示出26个英文字母,从左向右字母依次位置提高10个像素单位,并且颜色变为红色,然后回到正常位置;当到达最右端后改变方向从右向左依次变成红色并位置提高10个像素单位。在窗口的第二行显示26个字母,字体从正常到斜体,颜色从黑色到天蓝色不断变换。源代码:#include#include#include#includeLRESULT CALLBACK WndProc(HWND hwn

26、d, UINT message,WPARAM wParam, LPARAM lParam);BOOL InitWindowsClass(HINSTANCE hInstance);BOOL InitWindows(HINSTANCE hInstance, int nCmdShow);/主函数int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)MSG Message;if (!InitWindowsClass(hInstance)return FALSE;if (!I

27、nitWindows(hInstance, nCmdShow)return FALSE;while (GetMessage(&Message, 0, 0, 0)/消息循环TranslateMessage(&Message);DispatchMessage(&Message);return Message.wParam;/消息处理函数LRESULT CALLBACK WndProc(HWND hwnd, UINT message,WPARAM wParam, LPARAM lParam)HDC hDC;/设备句柄PAINTSTRUCT ps;/画刷结构int X = 0, Y = 0, i =

28、0, nCharlen = 26;static int nChar = 0;char lpsz_1 = abcdefghijklmnopqrstuvwxyz;char lpsz_2 = abcdefghijklmnopqrstuvwxyz;static BOOL bLeft = FALSE, bRight = TRUE;TEXTMETRIC tm;int j;SIZE size;RECTrect;/无效矩形区HFONT holdFont, hnewFont;switch (message)/消息处理函数case WM_CREATE: /窗口创建/SetTimer(hwnd,1,1,NULL);

29、return 0;case WM_TIMER:InvalidateRect(hwnd, &rect, 1);return 0;case WM_PAINT:/绘制消息hnewFont = CreateFont /创建一种新的逻辑字体(34, 0, 0, 0, 500, 0, 0, 0,GB2312_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH & FF_DONTCARE,黑体);hDC = BeginPaint(hwnd, &ps); /得到设备环境句柄GetClientRect(hwnd

30、, &rect); /得到需要绘制的客户区holdFont = (HFONT)SelectObject(hDC, hnewFont); /选择新的字体 GetTextMetrics(hDC, &tm);SetTextColor(hDC, RGB(255, 255, 255); /设置文本颜色 /SetBkColor(hDC,RGB(0,0,0); /设置背景颜色 Y = tm.tmExternalLeading + 10;/设置输出字符的Y坐标for (i = 0; inChar; i+)SetTextColor(hDC, RGB(0, 0, 0);/设置字体的颜色为黑色X = X + tm.

31、tmAveCharWidth * 2;/设置输出字符的X坐标TextOut(hDC, X, Y, &lpsz_1i, 1);/输出从第0个到第nChar-1个字符SetTextColor(hDC, RGB(255, 0, 0);/设置字体的颜色为红色X = X + tm.tmAveCharWidth * 2;/设置输出字符的X,Y坐标Y = tm.tmExternalLeading;/提高10个像素/hF = CreateFont(hDC,40,0);/创建字体/SelectObject(hDC,hF);/选入字体SetTextColor(hDC, RGB(255, 0, 0); /设置字体的

32、颜色为黑色TextOut(hDC, X, Y, &lpsz_1nChar, 1);/输出第nChar个字符Y = tm.tmExternalLeading + 10;for (i = nChar + 1; inCharlen; i+)SetTextColor(hDC, RGB(0, 0, 0); /设置字体的颜色为黑色X = X + tm.tmAveCharWidth * 2; /设置输出字符的X坐标TextOut(hDC, X, Y, &lpsz_1i, 1);/输出后面的字符if (nChar = nCharlen)/当输出到最后的一个字符时bRight = FALSE;/改变红色字移动的

33、方向为向左bLeft = TRUE;else if (nChar = 0)/当输出到第一个字时bRight = TRUE;/改变红色字移动的方向为向右bLeft = FALSE;if (bRight = TRUE) nChar+;else nChar-;/*GetTextExtentPoint32(hDC,pstring,12,&size);Xchar=(rect.right-rect.left)/2-size.cx/2;Ychar=(rect.bottom-rect.top)/2-size.cy/2;TextOut(hdc,Xchar,Ychar,pstring,12);*/SelectOb

34、ject(hDC, holdFont); /保存原来的字体格式X = 0;Y = 100;/设置输出字符的Y坐标for (i = 0; i26; i+)if (i % 2 = 0)hnewFont = CreateFont( /创建自定义字体34,/字体的高度0,/由系统根据高宽比选取字体最佳宽度值0,/文本的倾斜度为0,表示水平0,/字体的倾斜度为0500,/字体的粗度,FW_HEAVY为最粗0,/非斜体字0,/无下划线0,/无删除线ANSI_CHARSET,/表示所用的字符集为ANSI_CHARSETOUT_DEFAULT_PRECIS,/输出精度为缺省精度CLIP_DEFAULT_PRE

35、CIS,/剪裁精度为缺省精度DEFAULT_QUALITY,/输出质量为缺省值DEFAULT_PITCH& FF_DONTCARE,/字间距和字体系列使用缺省值粗体字); /字体名称SelectObject(hDC, hnewFont);/将自定义字体选入设备环境SetTextColor(hDC, RGB(0,0,0);/设置文本颜色X = X + 50;/设置输出字符的X坐标TextOut(hDC, X, Y, &lpsz_2i, 1);/输出从第0个到第nChar-1个字符elsehnewFont = CreateFont( /创建自定义字体34,/字体的高度0,/由系统根据高宽比选取字体

36、最佳宽度值0,/文本的倾斜度为0,表示水平0,/字体的倾斜度为0500,/字体的粗度,FW_HEAVY为最粗1,/非斜体字0,/无下划线0,/无删除线ANSI_CHARSET,/表示所用的字符集为ANSI_CHARSETOUT_DEFAULT_PRECIS,/输出精度为缺省精度CLIP_DEFAULT_PRECIS,/剪裁精度为缺省精度DEFAULT_QUALITY,/输出质量为缺省值DEFAULT_PITCH& FF_DONTCARE,/字间距和字体系列使用缺省值粗体字); /字体名称SelectObject(hDC, hnewFont);/将自定义字体选入设备环境SetTextColor(

37、hDC, RGB(0, 0, 255);/设置文本颜色X = X + 50;/设置输出字符的X坐标TextOut(hDC, X, Y, &lpsz_2i, 1);/输出从第0个到第nChar-1个字符DeleteObject(hnewFont); /删除新的字体格式EndPaint(hwnd, &ps); /结束绘制Sleep(100);InvalidateRect(hwnd, &rect, 1);return 0;case WM_DESTROY:/退出消息PostQuitMessage(0);return 0;return DefWindowProc(hwnd, message, wPara

38、m, lParam);BOOL InitWindowsClass(HINSTANCE hInstance)/定义窗口类WNDCLASS WndClass;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 = hInstanc

39、e;WndClass.lpfnWndProc = WndProc;WndClass.lpszClassName = WinFill;WndClass.lpszMenuName = NULL;WndClass.style = CS_HREDRAW | CS_VREDRAW;return RegisterClass(&WndClass);BOOL InitWindows(HINSTANCE hInstance, int nCmdShow)/初始化窗口HWND hWnd;hWnd = CreateWindow(WinFill, /生成窗口填充示例程序,WS_OVERLAPPEDWINDOW,20,2

40、0,950,690,NULL,NULL,hInstance,NULL);if (!hWnd)return FALSE;ShowWindow(hWnd, nCmdShow);/显示窗口UpdateWindow(hWnd);return TRUE;截图:2)编写一个程序,在窗口中显示“VC中显示字体与背景”,字体颜色为红色,背景色为黄色,字体为宋体,字高40。源代码:#include#include#includeylong WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);BOOL InitWindowsClass(H

41、INSTANCE hInstance);BOOL InitWindows(HINSTANCE hInstance, int nCmdShow);/主函数int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)MSG Message;if (!InitWindowsClass(hInstance)return FALSE;if (!InitWindows(hInstance, nCmdShow)return FALSE;while (GetMessage(&Messag

42、e, 0, 0, 0)/消息循环TranslateMessage(&Message);DispatchMessage(&Message);return Message.wParam;/消息处理函数LRESULT CALLBACK WndProc(HWND hwnd, UINT message,WPARAM wParam, LPARAM lParam)HDC hdc;/设备句柄PAINTSTRUCT ps;/画刷结构int Xchar, Ychar;SIZE size;LPCTSTR pstring = VC中显示字体与背景 ;RECTrect;/无效矩形区HFONT holdFont, hne

43、wFont;switch (message)/消息处理函数case WM_CREATE:return 0; /窗口创建case WM_PAINT:/绘制消息hnewFont = CreateFont /创建一种新的逻辑字体(40, 0, 0, 0, 500, 0, 0, 0,GB2312_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH & FF_DONTCARE,宋体);hdc = BeginPaint(hwnd, &ps); /得到设备环境句柄GetClientRect(hwnd, &r

44、ect); /得到需要绘制的客户区holdFont = (HFONT)SelectObject(hdc, hnewFont); /选择新的字体 SetTextColor(hdc, RGB(255, 0, 0); /设置文本颜色 SetBkColor(hdc, RGB(255, 255, 0); /设置背景颜色 GetTextExtentPoint32(hdc, pstring, 12, &size);Xchar = (rect.right - rect.left) / 2 - size.cx / 2;Ychar = (rect.bottom - rect.top) / 2 - size.cy

45、/ 2;TextOut(hdc, Xchar, Ychar, pstring, 12);SelectObject(hdc, holdFont); /保存原来的字体格式DeleteObject(hnewFont); /删除新的字体格式EndPaint(hwnd, &ps); /结束绘制return 0;case WM_DESTROY:/退出消息PostQuitMessage(0);return 0;default:return DefWindowProc(hwnd, message, wParam, lParam);return 0;BOOL InitWindowsClass(HINSTANCE

46、 hInstance)/定义窗口类WNDCLASS WndClass;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.

47、lpszClassName = WinFill;WndClass.lpszMenuName = NULL;WndClass.style = CS_HREDRAW | CS_VREDRAW;return RegisterClass(&WndClass);BOOL InitWindows(HINSTANCE hInstance, int nCmdShow)/初始化窗口HWND hWnd;hWnd = CreateWindow(WinFill, /生成窗口填充示例程序,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hIns

48、tance,NULL);if (!hWnd)return FALSE;ShowWindow(hWnd, nCmdShow);/显示窗口UpdateWindow(hWnd);return TRUE;截图:3、主要仪器设备及药品Windows 2000+VC 6.0+MSDN实验五 键盘消息的响应实验(验证性实验 2学时)1、目的要求:理解Windows程序响应键盘操作的原理,熟悉键盘消息的响应编程。2、实验内容:(选做1个)1)设计一个窗口,在该窗口中练习键盘的响应,要求如下:单击键盘上的向上箭头时,窗口中显示“You had hitted the up key”;单击键时,窗口中显示“You

49、had hitted the SHIFT key”;单击键时,窗口中显示“You had hitted the CTRL key”;单击键时,窗口中显示“You had hitted the CTRL A key”;单击键时,窗口中显示“You had hitted the SHIFT B key”。源代码:#include#include#includelong WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);BOOL InitWindowsClass(HINSTANCE hInstance);BOOL Init

50、Windows(HINSTANCE hInstance, int nCmdShow);/主函数int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)MSG Message;if (!InitWindowsClass(hInstance)return FALSE;if (!InitWindows(hInstance, nCmdShow)return FALSE;while (GetMessage(&Message, 0, 0, 0)/消息循环TranslateMess

51、age(&Message);DispatchMessage(&Message);return Message.wParam;/消息处理函数long WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam, LONG lParam)HDC hDC;/定义设备环境句柄.PAINTSTRUCT ps;/定义包含绘图信息的结构体变量HPEN hPen;/定义画笔句柄。HBRUSH hBrush;/定义画刷句柄 /以下定义输出的字符串。static char cUp = You had hitted the UP key;static char cCtr

52、l = You had hitted the Ctrl key;static char cShift = You had hitted the SHIFT key;static char cCtrl_A = You had hitted the CTRL A key;static char cShift_B = You had hitted the SHIFT B key;/下面定义并初始化按键标志变量。static BOOL nUpKeyDown = FALSE,nShiftKeyDown = FALSE,nCtrlKeyDown = FALSE,nCtrlAKeyDown = FALSE,

53、nShiftBKeyDown = FALSE;switch (iMessage)case WM_KEYDOWN: switch (wParam)case VK_UP:/当按上箭头键时,变量置为真。nUpKeyDown = TRUE; break;case VK_SHIFT:/当按shift键时,变量置为真。nShiftKeyDown = TRUE; break;case VK_CONTROL:/当按control键时,变量置为真nCtrlKeyDown = TRUE; break;default: break;break;case WM_KEYUP:InvalidateRect(hWnd, NULL, FALSE);break;case WM_CHAR:if (wParam = (65 & VK_CONTROL)if (nCtrlKeyDown = TRUE)nCtrlAKeyDown = TRUE;nCtrlKeyDown = FALSE;else if (wParam = 98 | wParam = 66)/当按下b键时if (nShiftKeyDown = TRUE)/检查shift键是否处于按下状态。nShiftBKeyDown = TRUE;/当SHIFT键按下时,变量置为真nS

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!