《Windows程序设计》实验教学大纲_第1页
《Windows程序设计》实验教学大纲_第2页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、:32学时:(必做):实验课的性质与任务Windows 程序设计(以 VC+为Windows API 函数和 MFC 进行简单的 Windows 程序开发的基本流10个单项实验和综合实验,力求提高学Windows 程序设计的思SDK 和 MFC 实现基于窗口的程序设计。实验课程目的与要求VC 开发环境开在实验中,要求学生个人独立思考,设计算法流程,编写出程序,完成上机调试,本课程的学习过程是复杂程序设计的训练过程,要求学生编写的程序结构清楚、3) 在实验中更好地理解和掌握:32学时:(必做):实验课的性质与任务Windows 程序设计(以 VC+为Windows API 函数和 MFC 进行简

2、单的 Windows 程序开发的基本流10个单项实验和综合实验,力求提高学Windows 程序设计的思SDK 和 MFC 实现基于窗口的程序设计。实验课程目的与要求VC 开发环境开在实验中,要求学生个人独立思考,设计算法流程,编写出程序,完成上机调试,本课程的学习过程是复杂程序设计的训练过程,要求学生编写的程序结构清楚、3) 在实验中更好地理解和掌握实验项目及内容提要1106844037)实验类型项分目操作Visual 1 发环境实验个数 实验学分适用专业Visual C+面向对象与可视化程序设计教程大纲审定人VC 程序设计这门课程中所学的基本理论和方法,学时证Visual C+ 6.0 开发

3、环2 :11 : 1 : 计算机科学与技术、软件工程、网络工程(第三版): 郭涛必做合选做计基本C+ 6.0 开验综设内容提要Windows程序设计实验教学大纲实验学时课程性质教材及参考书大纲执笔人一、本课程实验大纲是面向计算机相关专业学生开设的开发环境)实验课计划指导大纲, 是依据Windows 程序设计课程教学计划指导大纲编制。本课程主要讲述了利用程,结合该课程教学计划大纲的相应内容,设计了生的动手能力,做到理论和实践相结合。使学生在实验过程中掌握想、原理,能使用二、1.实验目的 :Windows 程序设计实验课的开设, 是为了使学生更好地理解和掌握运用发 Windows 程序设计的基本理

4、论、基本方法和基本技术,强化程序设计能力。2.实验要求:1)最后给出实验报告。2)正确易读,符合软件工程的规范;a)强化程序设计能力。三、Windows 程序设计实验课程(实验学序实验名称号数编号熟悉1 境实验.专业文档 .供参考.学习.分享2 3 4 5 6 7 8 利 用9 单文档与多文档11 实验内容安排:Visual C+6.0 开发环境实验2学时)MSDN 帮助功能有完整的了Windows 应用程序基本框架实验2学时)Windows 应用程序基2 Windows 绘图试验2 键盘消息的响应实验鼠标消息的响应实验4 控件 API 编程MFC2 2 综合性实验架程序设计4 2 2 4 创

5、建资源6 GDI 文字输2 3 4 5 6 7 8 利 用9 单文档与多文档11 实验内容安排:Visual C+6.0 开发环境实验2学时)MSDN 帮助功能有完整的了Windows 应用程序基本框架实验2学时)Windows 应用程序基2 Windows 绘图试验2 键盘消息的响应实验鼠标消息的响应实验4 控件 API 编程MFC2 2 综合性实验架程序设计4 2 2 4 创建资源6 GDI 文字输Windows 框出基本键盘消基本鼠标消资源编程文档编程GDI 绘图息响应息响应控件编程数据库编程2 本框架实验3 文本的输出方法与字4 体设置实验5 6 资源在 Windows 编程7 中的应

6、用实验8 在 MFC 中创建应用程9 序资源10 10 11 四、实验一( 验证性实验1、目的要求:了解 Visual C+6.0 的特点,熟悉 Visual C+6.0 的开发环境。2、实验内容:了解和熟悉开发环境,对各种菜单功能,工程文件管理和解。3、主要仪器设备及药品Windows 2000+VC 6.0+MSDN 实验二(验证性实验1、目的要求:.专业文档 .供参考.学习.分享Winmain 和窗口函数 WinProc,掌握消息驱Win32 工程,编写一个包含Windows 绘图试验4学时)Windows 绘图的基本方法和函数。5 Winmain 和窗口函数 WinProc,掌握消息驱

7、Win32 工程,编写一个包含Windows 绘图试验4学时)Windows 绘图的基本方法和函数。5 个区域,并用白色到黑色线性变化的颜色填充这nCmdShow) returnreturn/ 消息循环/ 定义画刷的句柄WinMain, WinProc 的5个区域,画一条FALSE; FALSE; 编写第一个 Windows 程序,理解入口函数动机制。2、实验内容:使用 Win32 Application 模板建立一个基本 Windows 程序,并编译、运行,观察结果。3、主要仪器设备及药品Windows 2000+VC 6.0+MSDN 实验三(验证性实验1、目的要求:理解 DC 概念,掌握

8、坐标映射的设置方法,熟悉2、实验内容:运用 Windows 提供的 GDI 函数,完成窗口图形输出功能。1)将窗口划分为斜线穿过这 5个区域;源代码:#include #include #include long WINAP WndProc(HWN hWnd, UIN iMessage, UIN wParam, LON lParam); BOO InitWindowsClass( HINSTANC hInstance); BOO InitWindows( HINSTANC hInstance, int nCmdShow); / 主函数int WINAP WinMain( HINSTANCEhI

9、nstance , HINSTANCEhPrevInstance , LPSTRlpCmdLine, int MS Message; if (!InitWindowsClass( hInstance ) if (!InitWindows( hInstance , nCmdShow) while ( GetMessage(&Message, 0, 0, 0) TranslateMessage(&Message); DispatchMessage(&Message); return Message.wParam; long WINAP WndProc(HWNDhWnd, UINT iMessage

10、, UINT wParam, LONGlParam) HD hDC; / 定义设备环境句柄HBRUS hBrush; .专业文档 .供参考.学习.分享WHITE_BRUSH); LTGRAY_BRUSH); GRAY_BRUSH); DKGRAY_BRUSH); BLACK_BRUSH); / 创建画笔/ 删除画笔/ 删除画刷WHITE_BRUSH); LTGRAY_BRUSH); GRAY_BRUSH); DKGRAY_BRUSH); BLACK_BRUSH); / 创建画笔/ 删除画笔/ 删除画刷/ 结束绘图HPE hPen; / 定义画笔的句柄PAINTSTRUC PtStr; / 定义

11、指向包含绘图信息的结构体变量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 = ( HBRUSH)GetStockObject( BLACK_BRUSH); / 获取系统定义的画刷hPen = Create

12、Pen( PS_SOLID, 2, RGB(255, 0, 0); / 创建画笔SelectObject(hDC, hPen); / 选择画笔/MoveToEx(hDC, 0, 150, NULL); LineTo(hDC, 750,150 );hBrush = ( HBRUSH)GetStockObject(SelectObject(hDC,hBrush); Rectangle(hDC,0,0,100,400); hBrush = ( HBRUSH)GetStockObject(SelectObject(hDC, hBrush); Rectangle(hDC, 100,0,200, 400)

13、; hBrush = ( HBRUSH)GetStockObject(SelectObject(hDC, hBrush); Rectangle(hDC,200,0,300, 400); hBrush = ( HBRUSH)GetStockObject(SelectObject(hDC, hBrush); Rectangle(hDC, 300,0,400, 400); hBrush = ( HBRUSH)GetStockObject(SelectObject(hDC, hBrush); Rectangle(hDC, 400,0,500, 400); hPen = CreatePen( PS_SO

14、LID, 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 WM_DESTROY: / 结束应用程序PostQuitMessage(0); .专业文档 .供参考.学习.分享HINSTANCEhInstance , int, / 显示窗口TRUE; / 定义窗口类 WndClass; HB

15、RUSH)(GetStockObject(nCmdShow)HINSTANCEhInstance , int, / 显示窗口TRUE; / 定义窗口类 WndClass; HBRUSH)(GetStockObject(nCmdShow) / 初始化窗口/ 生成窗口WHITE_BRUSH); return 0; default :/ 其他消息处理程序return (DefWindowProc(hWnd, iMessage, wParam, lParam); BOO InitWindows( HWN hWnd; hWnd = CreateWindow(WinFill填充示例程序 , WS_OVER

16、LAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance , NULL); if (!hWnd) return FALSE; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return BOO InitWindowsClass( HINSTANCEhInstance ) WNDCLASSWndClass.cbClsExtra = 0; WndClass.cbWndExtra = 0; WndClass.hbrBackground = (WndClass.hCu

17、rsor = LoadCursor(NULL, IDC_ARROW); WndClass.hIcon = LoadIcon(NULL, END); WndClass.hInstance = hInstance ; WndClass.lpfnWndProc = WndProc; WndClass.lpszClassName = WinFill ; WndClass.lpszMenuName = NULL; WndClass.style = CS_HREDRA | CS_VREDRAW; return RegisterClass (&WndClass); 截图:.专业文档 .供参考.学习.分享同时

18、,圆的半径在四分之一周期之0.2 倍至 0.6倍线性增长。Pi 3.1415926 lon同时,圆的半径在四分之一周期之0.2 倍至 0.6倍线性增长。Pi 3.1415926 long)(0.2*dfRange); WINAP WinMain( HINSTANCEhInstance , nCmdShow) MS Message; WNDCLAS WndClass; / 填写属性2)编写一个程序,在屏幕上出现一个圆心沿正弦曲线轨迹移动的实心圆,而且,每隔四分之一周期, 圆的填充色和圆的周边颜色都发生变化,内由正弦曲线幅值的源代码:#include#include#include#include

19、#definelong WINAP WndProc(HWN hWnd, UIN iMessage, UIN wParam, LON lParam); double dfTheta = 0, dfRange = 100.0; / 正弦曲线的角度变量 .long i = 0, j = 0; long lCentreX = 0, lCentreY = 0, lRadious = (/ 定义圆心坐标和圆半径 .POIN lpSin100; / 定义正弦曲线的点坐标 .intHINSTANCEhPrevInstance , LPSTRlpCmdLine, int / 填写窗口类属性HWN hWnd; W

20、ndClass.style = 0;WndClass.lpfnWndProc = WndProc; .专业文档 .供参考.学习.分享WHITE_BRUSH); / 注册窗口.return/ 窗口类名./ 无父窗口WHITE_BRUSH); / 注册窗口.return/ 窗口类名./ 无父窗口./ 无主菜单./ 当前实例句柄 ./ 显示窗口./ 消息循环./ 定义设备环境句柄 .FALSE; WndClass.cbClsExtra = 0; WndClass.cbWndExtra = 0; WndClass.hInstance = hInstance ; WndClass.hCursor = L

21、oadCursor(NULL, IDC_ARROW); WndClass.hbrBackground = ( HBRUSH)GetStockObject(WndClass.lpszMenuName = NULL; WndClass.lpszClassName = SIN; WndClass.hIcon = LoadIcon(NULL, END); if (! RegisterClass (&WndClass) MessageBeep(0); hWnd = CreateWindow(SIN, 4_6, / 标题名.WS_OVERLAPPEDWINDOW, / 带标题栏 ,最大/小按钮的窗口CW_

22、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 / 100 * 60); lpSinj.y = ( long)(dfRange*sin(j * 2 * Pi / 100); while ( GetMessa

23、ge(&Message, 0, 0, 0) TranslateMessage(&Message); DispatchMessage(&Message); return Message.wParam; long WINAP WndProc(HWNDhWnd, UINT iMessage, UINT wParam, LONGlParam) HD hDC; .专业文档 .供参考.学习.分享/ 定义画刷句柄/ 定义画笔句柄/ 定义包含绘图信息的结构体变量RGB(255, 0, 0); / / 定义画刷句柄/ 定义画笔句柄/ 定义包含绘图信息的结构体变量RGB(255, 0, 0); / 建新画笔/ 选

24、入画笔/ 绘制正弦曲线long)(dfRange*0.2 + i % 25 * dfRange*0.4 / 25); / 第二个1/4周期./ 第三个周期 .RGB(255, 255, 0); / 画圆/ 计算半径HBRUS hBrush; HPE hPen; PAINTSTRUC PtStr;switch ( iMessage) case WM_PAINT: / 处理绘图消息hDC = BeginPaint( hWnd, &PtStr); / 获得设备环境指针SetWindowOrgEx(hDC, -200, -200, NULL); / 设置原点坐标hPen = CreatePen( PS

25、_DASH, 1, 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 = ( else if (i = 50) hPen = CreatePen( PS_DASH, 1, RGB(0, 255, 0); hBrush = CreateHatchBrush( HS_DIAGC

26、ROSS, RGB(0, 255, 0); lRadious = ( long)(dfRange*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,

27、 1, 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 = lpSini.x; / 圆心x坐标.lCentreY = lpSini.y; / 圆心y坐标.Ellipse(hDC, lCentreX - lRadious, lCentreY - lRadious

28、, lCentreX + lRadious, lCentreY + lRadious); i+; .专业文档 .供参考.学习.分享/ 删除画笔/ 删除画刷/ 删除设备环境指针/ 停0.1/ 删除画笔/ 删除画刷/ 删除设备环境指针/ 停0.1秒hWnd, NULL, 1); 文本的输出方法与字体设置2学时)学习字体格式的控制。26个英文字母,从左向右字母依次位置提高/ 刷新用户区10 个像素单位,并且DeleteObject(hPen); DeleteObject(hBrush); EndPaint( hWnd, &PtStr); Sleep(100); if (i100) Invalidat

29、eRect(return 0; case WM_DESTROY: / 关闭窗口.PostQuitMessage(0); return 0; defaultreturn (DefWindowProc(hWnd, iMessage, wParam, lParam); return 0; 截图:3、主要仪器设备及药品Windows 2000+VC 6.0+MSDN 实验四(验证性实验1、目的要求:理解字体句柄的念, 熟悉 Windows 文字输出的基本方法和函数,2、实验内容:(选做 1个)1)在窗口中显示出.专业文档 .供参考.学习.分享26个字母,字体从正常到斜体, 颜色从黑色到天 wParam

30、, LPARA lParam); nCmdShow) 26个字母,字体从正常到斜体, 颜色从黑色到天 wParam, LPARA lParam); nCmdShow) ; ; 颜色变为红色, 然后回到正常位置; 当到达最右端后改变方向从右向左依次变成红色并位置提高 10个像素单位。 在窗口的第二行显示蓝色不断变换。源代码:#include #include #include #include LRESULTCALLBAC WndProc(HWN hwnd, UIN message, WPARAMBOO InitWindowsClass( HINSTANC hInstance); BOO Ini

31、tWindows( HINSTANC hInstance, int nCmdShow); / 主函数int WINAP WinMain( HINSTANCEhInstance , HINSTANCEhPrevInstance , LPSTRlpCmdLine, int MS Message; if (!InitWindowsClass( hInstance ) return FALSE; if (!InitWindows( hInstance , nCmdShow) return FALSE; while ( GetMessage(&Message, 0, 0, 0) / 消息循环 Trans

32、lateMessage(&Message); DispatchMessage(&Message); return Message.wParam; / 消息处理函数LRESULTCALLBAC WndProc(HWNDhwnd, UINT message, WPARAMwParam, LPARAMlParam) HD hDC; / 设备句柄PAINTSTRUC ps; / 画刷结构int X = 0, Y = 0, i = 0, nCharlen = 26; static int nChar = 0; char lpsz_1 = abcdefghijklmnopqrstuvwxyzchar lp

33、sz_2 = abcdefghijklmnopqrstuvwxyzstatic BOO bLeft = FALSE, bRight = TRUE; TEXTMETRI tm; int j; .专业文档 .供参考.学习.分享/ 无效矩形区/ 消息处理函数/ 窗口创建hwnd, &rect, 1); / 绘制消息/ 创建一种新的逻辑字体RGB(255, 255, 255); / 无效矩形区/ 消息处理函数/ 窗口创建hwnd, &rect, 1); / 绘制消息/ 创建一种新的逻辑字体RGB(255, 255, 255); / 设置背景颜色/ 设置输出字符的 Y坐标/ 设置字体的颜色为黑色/ 设置

34、输出字符的 X坐标/ 输出从第0个到第nChar-1个字符RGB(255, 0, 0);/ 设置文本颜色/ 设置字体的颜色为红色SIZ size; RECTrect; HFON holdFont, hnewFont; switch ( message) case WM_CREATE: /SetTimer(hwnd,1,1,NULL);return 0; case WM_TIMER: InvalidateRect(return 0; case WM_PAINT: hnewFont = CreateFont(34, 0, 0, 0, 500, 0, 0, 0, GB2312_CHARSET, OU

35、T_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITC & FF_DONTCARE, 黑体); hDC = BeginPaint( hwnd, &ps); / 得到设备环境句柄GetClientRect( hwnd, &rect); / 得到需要绘制的客户区holdFont = ( HFONT)SelectObject(hDC, hnewFont); / 选择新的字体GetTextMetrics (hDC, &tm); SetTextColor(hDC, /SetBkColor(hDC,RGB(0,0,0); Y

36、 = tm.tmExternalLeading + 10; for (i = 0; inChar; i+) SetTextColor(hDC, RGB(0, 0, 0); X = X + tm.tmAveCharWidth * 2; TextOut(hDC, X, Y, &lpsz_1i, 1); SetTextColor(hDC, .专业文档 .供参考.学习.分享/ 设置输出字符的 X,Y坐标/ 提高10个像素/ 创建字体/ 选入字体RGB(255, 0, 0); / 输出第nChar个字符RGB(0, 0, 0); / 设置输出字符的 X,Y坐标/ 提高10个像素/ 创建字体/ 选入字体R

37、GB(255, 0, 0); / 输出第nChar个字符RGB(0, 0, 0); / 设置输出字符的 X坐标/ 输出后面的字符/当输出到最后的一个字符时/ 改变红色字移动的方向为向左/ 当输出到第一个字时/ 改变红色字移动的方向为向右TRUE) nChar+; / 保存原来的字体格式/ 设置输出字符的 Y坐标/ 创建自定义字体/ 字体的高度/ 由系统根据高宽比选取字体最佳宽度值/ 文本的倾斜度为 0,表示水平/ 字体的倾斜度为 0/ 设置字体的颜色为黑色/ 设置字体的颜色为黑色X = X + tm.tmAveCharWidth * 2; Y = tm.tmExternalLeading; /

38、hF = CreateFont(hDC,40,0); /SelectObject(hDC,hF); SetTextColor(hDC, TextOut(hDC, X, Y, &lpsz_1nChar, 1);Y = tm.tmExternalLeading + 10; for (i = nChar + 1; inCharlen; i+) SetTextColor(hDC, X = X + tm.tmAveCharWidth * 2; TextOut(hDC, X, Y, &lpsz_1i, 1); if (nChar = nCharlen) bRight = FALSE; bLeft = TR

39、UE; else if (nChar = 0) bRight = TRUE; bLeft = FALSE; if (bRight = 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);*/SelectObject(hDC, holdFont); X = 0; Y = 100; for (i = 0

40、; i26; i+) if (i % 2 = 0) hnewFont = CreateFont ( 34, 0, 0, 0, .专业文档 .供参考.学习.分享/ 字体的粗度, FW_HEAVY为最粗/ 非斜体字/ 无下划线/ 无删除线/ 输出精度为缺省精度/ 剪裁精度为缺省精度/ 字体的粗度, FW_HEAVY为最粗/ 非斜体字/ 无下划线/ 无删除线/ 输出精度为缺省精度/ 剪裁精度为缺省精度/ 输出质量为缺省值/ 字体名称/ 将自定义字体选入设备环境RGB(0,0,0); / 设置输出字符的 X坐标/ 输出从第0个到第nChar-1个字符/ 创建自定义字体/ 字体的高度/ 由系统根据高宽比

41、选取字体最佳宽度值/ 文本的倾斜度为 0,表示水平/ 字体的倾斜度为 0/ 字体的粗度, FW_HEAVY为最粗/ 非斜体字/ 无下划线/ 无删除线/ 输出精度为缺省精度/ 剪裁精度为缺省精度/ 输出质量为缺省值/ 字体名称/ 将自定义字体选入设备环境RGB(0, 0, 255); / 设置输出字符的 X坐标/ 输出从第0个到第nChar-1个字符/ 删除新的字体格式/ 结束绘制hwnd, &rect, 1); / 设置文本颜色/ 设置文本颜色500, 0, 0, 0, ANSI_CHARSET, / 表示所用的字符集为 ANSI_CHARSETOUT_DEFAULT_PRECIS, CLIP

42、_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH& FF_DONTCARE,/ 字间距和字体系列使用缺省值粗体字); SelectObject(hDC, hnewFont);SetTextColor(hDC, X = X + 50; TextOut(hDC, X, Y, &lpsz_2i, 1); else hnewFont = CreateFont ( 34, 0, 0, 0, 500, 1, 0, 0, ANSI_CHARSET, / 表示所用的字符集为 ANSI_CHARSETOUT_DEFAULT_PRECIS, CLIP_DEFAULT_

43、PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH& FF_DONTCARE,/ 字间距和字体系列使用缺省值粗体字); SelectObject(hDC, hnewFont);SetTextColor(hDC, X = X + 50; TextOut(hDC, X, Y, &lpsz_2i, 1); DeleteObject(hnewFont); EndPaint( hwnd, &ps); Sleep(100); InvalidateRect(.专业文档 .供参考.学习.分享/ 定义窗口类 WndClass; WHITE_BRUSH); RegisterClass (

44、&WndClass); / 显示窗口/ 定义窗口类 WndClass; WHITE_BRUSH); RegisterClass (&WndClass); / 显示窗口return 0; case WM_DESTROY: / 退出消息PostQuitMessage(0); return 0; return DefWindowProc(hwnd, message, wParam, lParam); BOO InitWindowsClass( HINSTANCEhInstance ) WNDCLASSWndClass.cbClsExtra = 0; WndClass.cbWndExtra = 0;

45、WndClass.hbrBackground = ( HBRUSH)(GetStockObject(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_HREDRA | CS_VR

46、EDRAW; return BOO InitWindows( HINSTANCEhInstance , int nCmdShow)/ 初始化窗口 HWN hWnd; hWnd = CreateWindow(WinFill , / 生成窗口填充示例程序 , WS_OVERLAPPEDWINDOW, 20, 20, 950, 690, NULL, NULL, hInstance , NULL); if (!hWnd) return FALSE; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); .专业文档 .供参考.学习.分享TRUE; VC 中显示字

47、体与背景 ”,字体颜色为红色,背景色40。nCmdShow) .Word文TRUE; VC 中显示字体与背景 ”,字体颜色为红色,背景色40。nCmdShow) return 截图:2)编写一个程序,在窗口中显示“为黄色,字体为宋体,字高源代码:#include #include #include y long WINAP WndProc( HWN hWnd, UIN iMessage, UIN wParam, LON lParam ); BOO InitWindowsClass( HINSTANC hInstance); BOO InitWindows( HINSTANC hInstance

48、, int nCmdShow); / 主函数int WINAP WinMain( HINSTANCEhInstance , HINSTANCEhPrevInstance , LPSTRlpCmdLine, int MS Message; if (!InitWindowsClass( hInstance ) return FALSE; if (!InitWindows( hInstance , nCmdShow) return FALSE; while ( GetMessage(&Message, 0, 0, 0) / 消息循环 TranslateMessage(&Message); .专业文档

49、 .供参考.学习.分享/ 设备句柄/ 画刷结构VC中显示字体与背景 ; / 无效矩形区/ / 设备句柄/ 画刷结构VC中显示字体与背景 ; / 无效矩形区/ 消息处理函数/ 窗口创建/ 绘制消息/ 创建一种新的逻辑字体RGB(255, 0, 0); RGB(255, 255, 0); / 退出消息/ 设置文本颜色/ 设置背景颜色DispatchMessage(&Message); return Message.wParam; / 消息处理函数LRESULTCALLBAC WndProc(HWNDhwnd, UINT message, WPARAMwParam, LPARAMlParam) HD

50、 hdc; PAINTSTRUC ps; int Xchar, Ychar; SIZ size; LPCTST pstring = RECTrect; HFON holdFont, hnewFont; 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_PITC & FF

51、_DONTCARE, 宋体); hdc = BeginPaint( hwnd, &ps); / 得到设备环境句柄GetClientRect( hwnd, &rect); / 得到需要绘制的客户区holdFont = ( HFONT)SelectObject(hdc, hnewFont); / 选择新的字体SetTextColor(hdc, SetBkColor(hdc, GetTextExtentPoint32 (hdc, pstring, 12, &size); Xchar = (rect.right - rect.left) / 2 - size.cx / 2; Ychar = (rect

52、.bottom - rect.top) / 2 - size.cy / 2; TextOut(hdc, Xchar, Ychar, pstring, 12); SelectObject(hdc, holdFont); / 保存原来的字体格式DeleteObject(hnewFont); / 删除新的字体格式EndPaint( hwnd, &ps); / 结束绘制return 0; case WM_DESTROY: PostQuitMessage(0); return 0; .专业文档 .供参考.学习.分享DefWindowProc(hwnd, message, wParam, lParam);

53、 HINSTANCEhInstance ) WndClass; WHITE_BRUSH); ; HINSTANCEhInstancDefWindowProc(hwnd, message, wParam, lParam); HINSTANCEhInstance ) WndClass; WHITE_BRUSH); ; HINSTANCEhInstance , int, / 生成窗口/ 显示窗口/ 定义窗口类nCmdShow)/ 初始化窗口default : return return 0; BOO InitWindowsClass( WNDCLASSWndClass.cbClsExtra = 0;

54、 WndClass.cbWndExtra = 0; WndClass.hbrBackground = ( HBRUSH)(GetStockObject(WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); WndClass.hIcon = LoadIcon(NULL, END); WndClass.hInstance = hInstance ; WndClass.lpfnWndProc = WndProc; WndClass.lpszClassName = WinFillWndClass.lpszMenuName = NULL; WndClass.st

55、yle = CS_HREDRA | CS_VREDRAW; return RegisterClass (&WndClass); BOO InitWindows( HWN hWnd; hWnd = CreateWindow(WinFill填充示例程序 , WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance , NULL); if (!hWnd) return FALSE; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE;

56、 截图:.专业文档 .供参考.学习.分享键盘消息的响应实验2学时)“You had hitted the CTRL key ”;单击 键键盘消息的响应实验2学时)“You had hitted the CTRL key ”;单击 键3、主要仪器设备及药品Windows 2000+VC 6.0+MSDN 实验五(验证性实验1、目的要求:理解 Windows 程序响应键盘操作的原理,熟悉键盘消息的响应编程。2、实验内容:(选做 1个)1)设计一个窗口,在该窗口中练习键盘的响应,要求如下:单击键盘上的向上箭头时,窗口中显示 “You had hitted the up key”;单击 键时,窗口中显

57、示 “You had hitted the SHIFT key”;单击 键时,窗口中显示时,窗口中显示 “You had hitted the CTRL A key ”;单击 键时,窗口中显示 “You had hitted the SHIFT B key ”。源代码:#include #include #include long WINAP WndProc( HWN hWnd, UIN iMessage, UIN wParam, LON lParam ); BOO InitWindowsClass( HINSTANC hInstance); BOO InitWindows( HINSTANC

58、 hInstance, int nCmdShow); / 主函数int WINAP WinMain( .专业文档 .供参考.学习.分享char cCtrl = char cShift = ; ; / 当按control 键时,变量置为真char cCtrl = char cShift = ; ; / 当按control 键时,变量置为真You had hitted the Ctrl keyYou had hitted the SHIFT key; ; HINSTANCEhInstance , HINSTANCEhPrevInstance , LPSTRlpCmdLine, int nCmdSh

59、ow) MS Message; 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 WINAP WndProc(HWNDhWnd, UINT iMessage, UINT w

60、Param, LONGlParam) HD hDC; / 定义设备环境句柄 .PAINTSTRUC ps; / 定义包含绘图信息的结构体变量HPE hPen; / 定义画笔句柄。HBRUS hBrush; / 定义画刷句柄/ 以下定义输出的字符串。static char cUp = You had hitted the UP key ; staticstaticstatic char cCtrl_A = You had hitted the CTRL A keystatic char cShift_B = You had hitted the SHIFT B key/ 下面定义并初始化按键标志

温馨提示

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

评论

0/150

提交评论