




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一 熟悉Visual C+程序调试方法一、实验目的 (1) 熟悉 Visual C+ 6.0开发环境; (2) 掌握在 Visual C+ 6.0开发环境调试程序的方法。二、实验内容(1) 创建三个项目,项目类型分别为:Win32 Console Application、Win32 Application和MFC AppWizard(exe),分别编译运行各个程序,观察各种项目类型程序的特点。 (2) 创建一个 Win32 Console Application类型的项目,输入下面的代码,按照要求对代码进行调试。 说明:下面的程序求1001000以内的水仙花数,所谓水仙花数就是一个三位的整数,其个位数字、十位数字和百位数字的立方和等于该数本身的值,则这个数称为水仙花数。 #include iostream.h #include math.h void narcissus(); /求水仙花数 void main() narcissus(); void narcissus() int x1; / 百位数字 int x20; / 十位数字个位数字 int x2; / 十位数字 int x3; / 个位数字int count = 0; / 找到的水仙花数的总数 for(int x=100; x1000; x+) x1 = x/100; x20 = x%100; x2 = x20/10; x3 = x20%10; if(x1*x1*x1+x2*x2*x2+x3*x3*x3 = x) count+; coutOne narcissus number found:xendl; coutThe total number of narcissus numbers is:countendl; 调试要求: (1)在程序代码的 main函数中设置断点,启动程序执行到断点处停止; (2) 在函数 narcissus调用处进入函数内部,跟踪函数执行的过程; (3) 单步执行程序,观察各个变量值的变化情况; (4) 单步执行若干步后,跳出函数体,回到 main函数。 三、实验结果1.观察三种项目类型对应的程序特点,做出简要说明;创建三个项目,项目类型分别为:Win32 Console Application、Win32 Application和MFC AppWizard(exe)(1) Win32 Console Application:创建 Win32控制台应用程序。具体内容见本次实验的第二部分。(2) Win32 Application:创建 Win32应用程序。图1 Win32应用程序图2 程序运行结果 特点:我们可以用鼠标点击完成控制,程序运行时以WinMain()为入口,能够使用win32API函数。(3) MFC AppWizard(exe):创建 MFC可执行程序。图3 MFC AppWizard(exe) 程序 图4 程序运行结果 特点:MFC是用来编写Windows应用程序的C+类集,该类集以层次结构组织起来,其中封装了大部分WindosAPI函数和Windows控件,它包含的内容涉及整个Windows操作系统。MFC不仅为用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件。2.程序运行结果图5:求1001000以内的水仙花数程序运行结果3.记录调试过程中各变量值的变化情况图6:程序调试结果表1:单步执行程序,观察各个变量值的变化变量1234154Count00001x100101102103153X111111X200005X20012353X3012334. 在Visual C+ 6.0中如何进行程序的跟踪调试步骤:(1)在程序代码的 main函数中按F9设置断点,按F5启动程序执行到断点处停止; (2) 在函数 narcissus调用处按F11进入函数内部,按F10单步执行函数,跟踪函数执行的过程,观察各个变量值的变化情况; (3) 单步执行若干步后,按Shift+F11跳出函数体,回到 main函数,再次按F9可消除断点。 5. 总结实验的心得体会,实验中遇到的困难以及解决的方法 在大一时我们便开始学Visual C+ 6.0,对其开发环境有一定的了解,通过本次实验,进一步熟悉了它的使用,并对Win32 Application和MFC AppWizard(exe)的开发环境和特点有了初步的认识。本次实验的重点还在于掌握在 Visual C+ 6.0开发环境调试程序的方法。在进行程序调试时,最好采用模块化的方法,即将程序分成几个模块,然后逐步调试,这样的调试方法尤其适合于较大的程序。实验二 熟悉 Windows源程序基本结构一、实验目的 (1) 熟悉 Visual C+ 6.0开发环境; (2) 熟悉 Windows系统事件驱动的运行机制; (3) 熟悉 Windows应用程序源程序基本结构;二、实验内容创建一个空白的 Win32 Application应用程序,建立相关文件,手工输入下列代码,实现一个 Windows窗口程序。 #include windows.h LRESULT CALLBACK WndProc(HWND hwnd,UINT messgae, WPARAM wParam,LPARAM lParam); int WINAPI WinMain (HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow) ; WNDCLASS ws; HWND hWnd; MSG msg; ws.style = 0; ws.lpfnWndProc = WndProc; ws.cbClsExtra = 0; ws.cbWndExtra = 0; ws.hInstance = hThisInst; ws.hIcon = LoadIcon(NULL, IDI_HAND); ws.hCursor = LoadCursor(NULL,IDC_CROSS); ws.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); ws.lpszMenuName = NULL; ws.lpszClassName = DemoClass; if(!RegisterClass(&ws) return -1; hWnd = CreateWindow(DemoClass,My First Windows Program, WS_OVERLAPPEDWINDOW,100,200,640,480, NULL,NULL,hThisInst,NULL); ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd); while(GetMessage(&msg,NULL,0,0) TranslateMessage(&msg); DispatchMessage(&msg); return msg.wParam; LRESULT CALLBACK WndProc(HWND hwnd,UINT messgae, WPARAM wParam,LPARAM lParam) switch(messgae) case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd,messgae,wParam,lParam); return 0; 三实验结果(1) 列出源程序清单,以及程序的运行结果图1 Win32 Application应用程序图2 程序运行结果(2) 总结 Windows源程序的结构特点,说明各个主要程序段的作用结构特点:Windows源程序主要结构由 WinMain和 WinProc两个函数构成,其中 WinMain是入口函数,函数名称和参数都是固定的,WndProc是窗口函数,其函数名称可由用户自行定义,但是参数是固定的。WinMain函数是所有Windows应用程序的入口,类似C语言中的Main函数,其功能是完成一系列的定义和初始化工作,并产生消息循环。消息循环是整个程序运行的核心。窗口函数 WndProc定义了应用程序对接收到的不同消息的响应,包含了对各种可能接收到的消息的处理过程。WndProc函数由一个或多个 switch语句组成,每一条 case语句对应一种消息,当应用程序接收到一个消息时,相应的 case语句被激活并执行相应的响应程序模块。(3) 总结实验的心得体会,实验中遇到的困难以及解决的方法 通过本次实验,更加熟悉了 Visual C+ 6.0开发环境,对 Windows系统事件驱动的运行机制,Windows应用程序源程序基本结构有了更深的了解,掌握了Windows源程序的结构特点,以及主要程序段的作用。实验三 Windows图形绘制编程实验一、实验目的 (1) 熟悉 Visual C+ 6.0开发环境; (2) 掌握 Windows图形输出的方法; (3) 理解设备环境、画笔、画刷的概念,掌握常用的绘图函数。二、实验内容请编写程序,要求如下: (1) 定义一支黄色画笔,绘制一条线段; (1) 定义一支紫色画笔,绘制一条多段线; (3) 定义一支红色画笔,绘制一个正方形,并用适当的画刷填充图形内部; (4) 定义一支绿色画笔,绘制一个圆,并用适当的画刷填充图形内部; (5) 定义一支蓝色画笔,绘制一个正六边形,并用适当的画刷填充图形内部。三、实验报告 1、列出图形绘制程序代码清单;#include/包含应用程序中所需的数据类型和数据结构的定义#includeLRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); /窗口函数说明/- 以下初始化窗口类 -int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)HWND hwnd ;MSG Msg ;WNDCLASS wndclass ;/LPCWSTR lpszClassName =_T(窗口);/窗口类名/LPCWSTR lpszTitle=LMy_Windows;/窗口标题名char lpszClassName = 窗口;/窗口类名char lpszTitle= 基本绘图练习;/窗口标题名/窗口类的定义wndclass.style=0;/窗口类型为缺省类型wndclass.lpfnWndProc=WndProc;/定义窗口处理函数wndclass.cbClsExtra=0;/窗口类无扩展wndclass.cbWndExtra=0;/窗口实例无扩展wndclass.hInstance=hInstance;/当前实例句柄wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);/窗口的最小化图标为缺省图标wndclass.hCursor=LoadCursor(NULL,IDC_ARROW) ;/窗口采用箭头光标wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);/窗口背景为白色wndclass.lpszMenuName=NULL;/窗口中无菜单wndclass.lpszClassName= lpszClassName ;/窗口类名为窗口/- 以下进行窗口类的注册 -if(!RegisterClass( &wndclass)/如果注册失败则发出警告 MessageBeep(0) ; return FALSE ;/- 创建窗口 -hwnd=CreateWindow(/_T(Title),lpszClassName,/窗口类名lpszTitle,/窗口实例的标题名WS_OVERLAPPEDWINDOW,/窗口的风格CW_USEDEFAULT,CW_USEDEFAULT,/窗口左上角坐标为缺省值CW_USEDEFAULT,CW_USEDEFAULT,/窗口的高和宽为缺省值NULL,/此窗口无父窗口NULL,/此窗口无主菜单hInstance,/创建此窗口的应用程序的当前句柄NULL /不使用该值);/- 显示窗口 -ShowWindow( hwnd, nCmdShow) ;/- 绘制用户区 -UpdateWindow(hwnd);/- 消息循环 - while( GetMessage(&Msg, NULL, 0, 0)TranslateMessage( &Msg) ;DispatchMessage( &Msg) ;return Msg.wParam;/消息循环结束即程序终止时将信息返回系统/窗口函数LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)HDC hDC; /定义指向设备的句柄HBRUSH hBrush; /定义指向画刷的句柄HPEN hPen; /定义指向画笔的句柄PAINTSTRUCT PtStr; /定义指向包含绘图信息的结构变量POINT points6;points0.x=360;points0.y=50;points1.x=380;points1.y=15;points2.x=420;points2.y=15; points3.x=440;points3.y=50;points4.x=420;points4.y=85; points5.x=380;points5.y=85;switch(message) case WM_PAINT: /处理绘图消息hDC=BeginPaint(hwnd,&PtStr);SetMapMode(hDC,MM_ISOTROPIC); /设置映像模式SetWindowExtEx(hDC,50,50,NULL);SetViewportExtEx(hDC,100,500,NULL);hPen=CreatePen(PS_SOLID,1,RGB(255,255,0); SelectObject(hDC,hPen); MoveToEx(hDC,15,20,NULL);LineTo(hDC,110,20); hPen=CreatePen(PS_SOLID,2,RGB(155,0,255); SelectObject(hDC,hPen); MoveToEx(hDC,25,30,NULL);LineTo(hDC,120,30);LineTo(hDC,110,60);LineTo(hDC,150,40); hBrush=(HBRUSH)GetStockObject(DKGRAY_BRUSH); /深灰色刷SelectObject(hDC,hBrush); hPen=CreatePen(PS_SOLID,2,RGB(255,0,0);SelectObject(hDC,hPen);Rectangle(hDC,50,100,100,50); hPen=CreatePen(PS_SOLID,2,RGB(0,255,0);SelectObject(hDC,hPen);hBrush=(HBRUSH)GetStockObject(LTGRAY_BRUSH); /亮灰色刷SelectObject(hDC,hBrush); /选择画刷Ellipse(hDC,100,100,160,160); /绘制圆hPen=CreatePen(PS_SOLID,2,RGB(0,0,255);SelectObject(hDC,hPen); hBrush=(HBRUSH)CreateSolidBrush(RGB(0,255,255); SelectObject(hDC,hBrush); Polygon(hDC,points,6);DeleteObject(hBrush);DeleteObject(hPen);EndPaint(hwnd,&PtStr); /结束绘图return 0;case WM_DESTROY:PostQuitMessage(0);default:/缺省时采用系统消息缺省处理函数return DefWindowProc(hwnd,message,wParam,lParam);return(0);2、程序运行结果:3、总结在Windows程序中绘制图形的基本操作步骤;(1)获取设备环境:获取设备环境是应用程序输出图形的先决条件,常用的两种方法是调用函数 BeginPaint或 GetDC a、调用 BeginPaint函数应用程序响应 WM_PAINT消息进行图形刷新时,主要通过调用 BeginPaint函数获取设备环境 PAINTSTRUCT ps; hdc=BeginPaint(hwnd,&ps); /ps为 PAINTSTRUCT类型结构由BeginPaint函数获取的设备环境要用 EndPaint函数释放 void EndPaint(HWND hwnd, PAINTSTRUCT &ps) b、调用 GetDC函数如果绘图工作并非由 WM_PAINT消息驱动,则调用 GetDC函数获取设备环境。 hdc=GetDC(hwnd); 由 GetDC函数获取的设备环境必须用ReleaseDC函数释放 void ReleaseDC(HWND hwnd);(2)选择绘图工具与颜色:(a)画笔的操作:创建画笔;将画笔选入设备环境;删除画笔。 (b)画刷的创建与应用与画笔很相似,操作画刷也包括创建、选入设备环境和删除。(3)选择绘图函数进行绘图:常见的绘图函数有:绘制椭圆弧线的函数;绘制饼图,并用当前画刷进行填充的函数;绘制矩形,并用当前画刷进行填充的函数;绘制椭圆,并用当前画刷填充的函数;绘制多边形,并用当前画刷填充的函数等。4、 总结实验的心得体会,实验中遇到的困难以及解决的方法等。 在做本次实验时,必须正确地写出绘图函数,这要求我们熟练地掌握各绘图函数的类型及格式。在第一次画正六边形时,出来的图案与预期的差距较大,经过调试后发现是我的坐标计算有问题,修正坐标后,变出现了想要的正六边形。实验四 鼠标和键盘编程实验一、实验目的 (1) 掌握键盘和鼠标的消息传递机制; (2) 掌握在 Windows程序中处理键盘和鼠标消息的方法; (3) 掌握在 Visual C+的程序调试方法。二、实验内容请编写程序,要求如下: (1) 在屏幕上绘制一个矩形,并将举行内部划分成 4个矩形区域; (2) 在矩形内移动鼠标时,在上面划分的 4个区域中显示不同的光标,并在屏幕左上角显示光标坐标; (3) 当用户按下 SHIFT和 CTRL键并移动鼠标时,显示一个消息框,提示用户按下的是哪个键。 三、实验报告 1、列出消息处理程序代码清单;#include/包含应用程序中所需的数据类型和数据结构的定义#include#includeLRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); /窗口函数说明/- 以下初始化窗口类 -int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)HWND hwnd ;MSG Msg ;WNDCLASS wndclass ;/LPCWSTR lpszClassName =_T(窗口);/窗口类名/LPCWSTR lpszTitle=LMy_Windows;/窗口标题名char lpszClassName = 窗口;/窗口类名char lpszTitle= My_Windows;/窗口标题名/窗口类的定义wndclass.style=0;/窗口类型为缺省类型wndclass.lpfnWndProc=WndProc;/定义窗口处理函数wndclass.cbClsExtra=0;/窗口类无扩展wndclass.cbWndExtra=0;/窗口实例无扩展wndclass.hInstance=hInstance;/当前实例句柄wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);/窗口的最小化图标为缺省图标wndclass.hCursor=LoadCursor(NULL,IDC_ARROW) ;/窗口采用箭头光标wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);/窗口背景为白色wndclass.lpszMenuName=NULL;/窗口中无菜单/wndclass.lpszClassName=(LPCWSTR) lpszClassName ;wndclass.lpszClassName= lpszClassName ;/窗口类名为窗口/- 以下进行窗口类的注册 -if(!RegisterClass( &wndclass)/如果注册失败则发出警告 MessageBeep(0) ; return FALSE ;/- 创建窗口 -hwnd=CreateWindow(lpszClassName,/窗口类名lpszTitle,/窗口实例的标题名WS_OVERLAPPEDWINDOW,/窗口的风格CW_USEDEFAULT,CW_USEDEFAULT,/窗口左上角坐标为缺省值CW_USEDEFAULT,CW_USEDEFAULT,/窗口的高和宽为缺省值NULL,/此窗口无父窗口NULL,/此窗口无主菜单hInstance,/创建此窗口的应用程序的当前句柄NULL /不使用该值);/- 显示窗口 -ShowWindow( hwnd, nCmdShow) ;/- 绘制用户区 -UpdateWindow(hwnd);/- 消息循环 - while( GetMessage(&Msg, NULL, 0, 0)TranslateMessage( &Msg) ;DispatchMessage( &Msg) ;return Msg.wParam;/消息循环结束即程序终止时将信息返回系统/窗口函数LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)HDC hDC;/定义设备环境句柄.PAINTSTRUCT ps;/定义包含绘图信息的结构体变量HBRUSH hBrush; HPEN hPen;HCURSOR hcursor;static int x,y; char buf80;switch(message)case WM_LBUTTONDOWN: if(wParam&MK_SHIFT)&(wParam&MK_LBUTTON) MessageBox(NULL,您按下了SHIFT键,提示,NULL); break;else if(wParam&MK_CONTROL)&(wParam&MK_LBUTTON) MessageBox(NULL,您按下了CTRL键,提示,NULL); break;case WM_MOUSEMOVE:hDC = GetDC(hwnd);hPen = (HPEN)GetStockObject(BLACK_PEN);SelectObject(hDC,hPen); x = LOWORD(lParam);y = HIWORD(lParam);sprintf(buf,(X:%d,Y:%d),x,y);TextOut(hDC,10,10,buf,strlen(buf); /if(wParam&MK_SHIFT)&(wParam&MK_CONTROL)/ /MessageBox(NULL,您同时按下了SHIFT和CTRL键,提示,NULL); / break;/x=LOWORD(lParam);y=HIWORD(lParam);if(x50&x50&y150&x50&y50&x150&y150&x150&y250) hcursor=LoadCursor(NULL,IDC_WAIT);SetCursor(hcursor); /沙漏光标break;case WM_PAINT: /处理绘图消息hDC=BeginPaint(hwnd,&ps); /hBrush=CreateSolidBrush(123,125,0); /SelectObject(hDC,hBrush);/Rectangle(hDC,50,50,350,350); hBrush=CreateSolidBrush(255,120,170); SelectObject(hDC,hBrush);Rectangle(hDC,50,50,150,150);hBrush=CreateSolidBrush(255,0,0); SelectObject(hDC,hBrush);Rectangle(hDC,150,150,250,250);hBrush=CreateSolidBrush(0,200,200); SelectObject(hDC,hBrush);Rectangle(hDC,50,150,150,250);hBrush=CreateSolidBrush(0,100,100); SelectObject(hDC,hBrush);Rectangle(hDC,150,50,250,150);EndPaint(hwnd,&ps);break; /case (): / MessageBox(NULL,您按下了SHIFT键,提示,NULL);/break;case WM_DESTROY:PostQuitMessage(0);default:/缺省时采用系统消息缺省处理函数return DefWindowProc(hwnd,message,wParam,lParam);return(0);2、程序运行结果:3、总结鼠标消息、按键消息和字符消息的字参数和长字参数包含信息的意义以及处理方法; (1)键盘消息按键消息:按下或松开一个键时就产生了一按键消息。 字符消息:一个按键的组合产生了一个可以显示的字符时,就产生了一个字符消息。 (2)按键消息的两个参数wParam:包含了识别按下的键的虚键码。 lParam(32位的变量):重复计数位(015位)、OEM扫描码(1623位)、扩展键标志(24位)、保留位(2528位)、关联码(29位)、键的先前状态(位30)、转换状态(31位)。 在 WinMain函数的消息循环中包含了 TranslateMessage函数,其功能是把按键消息转化为字符消息,但只有当键盘驱动程序把键盘字符映射成 ASCII码后才能产生 WM_CHAR消息。 (3)字符消息系统字符消息:WM_SYSKEYDOWN和 WM_SYSKEYUP按键消息只能产生系统消息。非系统字符消息:WM_KEYDOWN和WM_KEYUP的按键消息只能产生非系统消息。(4)鼠标消息长字参数 lParam包含了鼠标位置(相当于窗口的左上角为原点的坐标值)。低位包含鼠标位置的 x坐标值。 高位包含鼠标位置的 y坐标。 字参数wParam包含了指示各种虚键状态的值。 (5)对于鼠标消息的处理 (a)不监测 case WM_LBUTTONDOWN: / 按下鼠标左键 break; case WM_LBUTTONUP: / 释放鼠标左键 break;(b)要对 Shift和Ctrl键进行监测 case WM_LBUTTONDOWN: / 按下鼠标左键 if(wParam&MK_CONTROL)&(wParam&MK_SHIFT) / Shift和Ctrl键都被按下 break; case WM_LBUTTONUP: / 释放鼠标左键 break; (6)鼠标双击Windows系统默认的时间间隔为 0.5秒,也可以调用 SetDoubleClickTime()重新设定间隔值,要使窗口函数能接收鼠标双击产生的消息在注册窗口类时必须具有CS_DBLCLKS属性, wndclass.style=CS_HEADRAW|CS_VERDRAW|CS_DBLCLKS;若窗口不包含上述属性的定义,即使进行了双击操作,该窗口也只能接收到两条 WM_BUTTONDOWN消息或两条 WM_BUTTONUP消息。4、总结实验的心得体会,实验中遇到的困难以及解决的方法等。 通过本次实验,掌握了键盘和鼠标的消息传递机制以及在 Windows程序中处理键盘和鼠标消息的方法。在编程时要注意鼠标消息、按键消息和字符消息的字参数和长字参数包含信息的意义以及处理方法。实验五 定时器编程实验一、实验目的 (1) 熟悉 Visual C+ 6.0开发环境; (2) 掌握 API编程模式中定时器的使用方法 (3) 熟练掌握在 Visual C+ 6.0开发环境调试程序的方法。二、实验内容设计一个窗口,在窗口中间位置绘制一个红色粗实线的圆角矩形,并用交替使用三种不同样式的画刷填充矩形的内部,每次刷新的时间间隔为 1.0秒。 三、实验报告 1、 列出定时器操作相关的程序清单;#include/包含应用程序中所需的数据类型和数据结构的定义LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); /窗口函数说明/- 以下初始化窗口类 -int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)HWND hwnd ;MSG Msg ;WNDCLASS wndclass ;char lpszClassName = 窗口;/窗口类名char lpszTitle= My_Windows;/窗口标题名/窗口类的定义wndclass.style=0;/窗口类型为缺省类型wndclass.lpfnWndProc=WndProc;/定义窗口处理函数wndclass.cbClsExtra=0;/窗口类无扩展wndclass.cbWndExtra=0;/窗口实例无扩展wndclass.hInstance=hInstance;/当前实例句柄wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);/窗口的最小化图标为缺省图标wndclass.hCursor=LoadCursor(NULL,IDC_ARROW) ;/窗口采用箭头光标wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);/窗口背景为白色wndclass.lpszMenuName=NULL;/窗口中无菜单wndclass.lpszClassName=lpszClassName ;/窗口类名为窗口/- 以下进行窗口类的注册 -if(!RegisterClass( &wndclass)/如果注册失败则发出警告 MessageBeep(0) ; return FALSE ;/- 创建窗口 -hwnd=CreateWindow(lpszClassName,/窗口类名lpszTitle,/窗口实例的标题名WS_OVERLAPPEDWINDOW,/窗口的风格CW_USEDEFAULT,CW_USEDEFAULT,/窗口左上角坐标为缺省值CW_USEDEFAULT,CW_USEDEFAULT,/窗口的高和宽为缺省值NULL,/此窗口无父窗口NULL,/此窗口无主菜单hInstance,/创建此窗口的应用程序的当前句柄NULL /不使用该值);/- 显示窗口 -ShowWindow( hwnd, nCmdShow) ;/- 绘制用户区 -UpdateWindow(hwnd);/- 消息循环 - while( GetMessage(&Msg, NULL, 0, 0)TranslateMessage( &Msg) ;DispatchMessage( &Msg) ;return Msg.wParam;/消息循环结束即程序终止时将信息返回系统 void CALLBACK MyTimerProc(HWND hwnd,/与定时器关联的窗口句柄UINT uMsg,/wm_timer消息号UINT idEvent,/定时器标识符DWORD dwTime/当前系统时间)InvalidateRect(hwnd,NULL,1);/刷新用户区/窗口函数LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)HDC hdc;/定义指向设备的句柄 PAINTSTRUCT PtStr;HBRUSH hBrush;/定义指向画刷的句柄HPEN hp;/定义指向画笔的句柄PAINTSTRUCT ps;/定义指向包含绘图信息的结构变量static colors=0; switch(message) case WM_CREATE:SetTimer(hwnd,1,960,NULL);break;case WM_TIMER: InvalidateRect (hwnd, NULL, 1) ;break;case WM_PAINT:hdc=BeginPaint(hwnd,&PtStr);SetMapMode(hdc,MM_ANISOTROPIC);hp=CreatePen(PS_SOLID,3,RGB(255,0,0);SelectObject(hdc,hp); switch(colors) case 0:hBrush=CreateSolidBrush(RGB(0,255,0);colors+=1; break; case 1:hBrush=CreateHatchBrush(HS_CROSS,RGB(0,0,255);colors+=1;break; case 2:hBrush=CreateHatchBrush(HS_DIAGCROSS,RGB(255,0,255);colors=0;break; SelectObject(hdc,hBrush); RoundRect(hdc,400,200,550,450,100,60); DeleteObject(hp); EndPaint(hwnd,&PtStr); break;case WM_DESTROY: PostQuitMessage(0);default:/缺省时采用系统消息缺省处理函数return DefWindowProc(hwnd,message,wParam,lP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北京市昌平区新道临川学校2026届物理八上期末联考试题含解析
- 2026届江苏省江都区曹王中学物理八上期末联考试题含解析
- 福建省厦门市第六中学2026届物理八年级第一学期期末综合测试模拟试题含解析
- 2026届安徽省蚌埠新城实验学校物理八年级第一学期期末联考试题含解析
- 2026届福建省(南平厦门福州漳州市)物理八年级第一学期期末预测试题含解析
- 2026届河南省商丘市名校物理八上期末考试试题含解析
- 2026届福建省福州十八中学八年级物理第一学期期末调研试题含解析
- 2026届江苏省兴化市乐吾实验学校物理八上期末联考试题含解析
- 2026届广东省江门江海区四校联考物理八年级第一学期期末考试试题含解析
- 2025年电子级三氧化硫行业研究报告及未来行业发展趋势预测
- 重庆中医药学院2025年第二季度考核招聘工作人员笔试备考题库及答案详解一套
- 资阳市安岳县县属国有企业招聘(33人)考前自测高频考点模拟试题附答案详解
- 2025北京平谷区初三二模数学试题及答案
- 边境巡逻无人机2025市场细分与增长潜力分析
- 2025年四川省资阳市中考真题化学试题(无答案)
- 2025年中级会计职称考试经济法冲刺试题及答案
- 2025年事业单位工勤技能-福建-福建行政岗位工四级(中级工)历年参考题库典型考点含答案解析
- 2025年应急通信保障中心招聘笔试预测试题及答案
- 2025-2026学年苏少版(新疆专用2024)小学综合实践四年级上册《遇见草木染》教学设计
- 保安培训课件45张
- 成人肺功能检查技术进展及临床应用指南课件
评论
0/150
提交评论