可视化实验二实现Windows应用程序对键盘与鼠标的响应_第1页
可视化实验二实现Windows应用程序对键盘与鼠标的响应_第2页
可视化实验二实现Windows应用程序对键盘与鼠标的响应_第3页
可视化实验二实现Windows应用程序对键盘与鼠标的响应_第4页
可视化实验二实现Windows应用程序对键盘与鼠标的响应_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、Visual C+面向对象与可视化程序设计实验二实验报告一、实验目的1、使用API函数编制包含各种资源的Windows应用程序; 2、实现Windows应用程序对键盘与鼠标的响应。二、实验内容1、问题描述:(1)创建一个菜单,其中有三个菜单项,分别为“文件”、“计算”和“帮助”,其中,“文件”菜单项包含“打开”、“保存”、“画图”、“退出”等菜单选项;“计算”菜单包含“总和”、“方差”、“均方根”等菜单选项;“帮助”菜单项包含“计算总和帮助”、“计算方差帮助”和“计算均方根帮助”以及“关于”等项 。(2)若单击“画图”菜单项,则绘出P103图形。若在用户区内按下鼠标左键,则动态创建一个包括“删

2、除计算总和”、“添加计算平均值”和“修改计算均方差”三个菜单项的弹出式菜单,由此菜单控制“计算”菜单中菜单项删除、添加与修改。(要求新的弹出式菜单开始时不可用,按下右键后变为可用。) 单击“修改计算均方差”菜单项后,“计算”菜单下的“计算均方差”项改为“线性拟合”,单击“添加计算平均值”菜单项后,“计算”菜单中添加上了“计算平均值”菜单项 。 (3)将光标设定为自己名字中的某个字、图标设定为自己名字中的另一个字。 2、应用程序中所用到的资源、消息,简介主要函数的功能;3、程序实现 4、操作结果三、程序代码#includewindows.h#includeE08700212叶孙晓.hHMENU

3、hmenu,haddmenu;LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow) HWND hwnd; MSG Msg; HACCEL hAccel; WNDCLASS wndclass; char lpszMenuName=Menu; char lpszClassName=菜单; char lpszTitle=E08700212叶孙晓二; wndclass.styl

4、e=0; wndclass.lpfnWndProc=WndProc; wndclass.cbClsExtra=0; wndclass.cbWndExtra=0; wndclass.hInstance=hInstance; wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName=lpszMenuName; wndclass.lpszClassName=lpszClassName; if(!RegisterClass(&wndclass) MessageBeep(0); return FAL

5、SE; hwnd=CreateWindow( lpszClassName, lpszTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); ShowWindow(hwnd,nCmdShow); UpdateWindow(hwnd); hAccel=LoadAccelerators(hInstance,lpszMenuName); while(GetMessage(&Msg,NULL,0,0) if(!Transla

6、teAccelerator(hwnd,hAccel,&Msg) TranslateMessage(&Msg); DispatchMessage(&Msg); return Msg.wParam; LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) static bool draw = false; static bool pingjunzhiadd = true; static bool left = true; HDC hdc; PAINTSTRUCT ps; HPEN hp; HBRUSH

7、 hb; switch(message) case WM_COMMAND: switch(LOWORD(wParam) case IDM_EXIT: SendMessage(hwnd,WM_DESTROY,0,0); break; case IDM_fangchamodify: ModifyMenu(hmenu,IDM_fangcha,MF_BYCOMMAND,IDM_nihe,线性拟合); DrawMenuBar(hwnd); break; case IDM_pingjunzhiadd: if(pingjunzhiadd) InsertMenu(hmenu,IDM_junfanggen,MF

8、_BYCOMMAND|MF_ENABLED,IDM_pingjunzhi,平均值); DrawMenuBar(hwnd); pingjunzhiadd = false; break; case IDM_DRAW: hmenu = GetMenu(hwnd); draw = true; break; break; case WM_LBUTTONDOWN: if(left) hmenu=GetMenu(hwnd); haddmenu=CreateMenu(); AppendMenu(haddmenu,MF_GRAYED,IDM_zonghedelete,删除计算总和); AppendMenu(ha

9、ddmenu,MF_GRAYED,IDM_fangchamodify,修改计算方差); AppendMenu(haddmenu,MF_GRAYED,IDM_pingjunzhiadd,添加计算平均值); InsertMenu(hmenu,3,MF_POPUP|MF_BYPOSITION,(UINT)haddmenu,修改菜单); DrawMenuBar(hwnd); left = false; break; case WM_RBUTTONDOWN: EnableMenuItem(haddmenu,IDM_zonghedelete,MF_ENABLED); EnableMenuItem(hadd

10、menu,IDM_fangchamodify,MF_ENABLED); EnableMenuItem(haddmenu,IDM_pingjunzhiadd,MF_ENABLED); DrawMenuBar(hwnd); break; case WM_PAINT: if(draw) hdc = BeginPaint (hwnd, &ps); SetMapMode(hdc,MM_TEXT); Rectangle(hdc,130,60,270,200); hb=CreateHatchBrush(HS_CROSS,RGB(255,0,0); SelectObject(hdc,hb); Ellipse(

11、hdc,130,70,270,190); hp=CreatePen(PS_DASHDOT,1,RGB(0,255,0); SelectObject(hdc,hp); MoveToEx(hdc,100,130,NULL); LineTo(hdc,300,130); MoveToEx(hdc,200,30,NULL); LineTo(hdc,200,230); EndPaint(hwnd,&ps); DeleteObject(hp); DeleteObject(hb); break; case WM_DESTROY: PostQuitMessage(0); break; default: retu

12、rn DefWindowProc(hwnd,message,wParam,lParam); return 0; 头文件#define IDM_ADDMENU 14#define IDM_DELMENU 16#define IDM_OPEN 11#define IDM_SAVE 13#define IDM_lcw 17#define IDM_DRAW 12#define IDM_EXIT 15 #define IDM_zonghe 18 #define IDM_fangcha 19 #define IDM_junfanggen 21 #define IDM_zonghehelp 22 #defi

13、ne IDM_fangchahelp 23 #define IDM_junfanggenhelp 24 #define IDM_ABOUT 20#define IDM_zonghedelete 30#define IDM_fangchamodify 31#define IDM_pingjunzhiadd 32#define IDM_nihe 33#define IDM_pingjunzhi 34 资源文件/Microsoft Developer Studio generated resource script./#include resource.h#define APSTUDIO_READO

14、NLY_SYMBOLS/ Generated from the TEXTINCLUDE 2 resource./#include afxres.h#includewindows.h#includeE08700212叶孙晓.hE08700212 ICON D:E08700212二E08700212.ICOE08700212 CURSOR D:E08700212二E08700212.CURMenu MENU DISCARDABLE POPUP文件(&F) MENUITEM打开(&O)tCtrl+O, IDM_OPEN MENUITEM画图(&G), IDM_DRAW MENUITEM保存(&S),

15、 IDM_SAVE MENUITEM另存为(&A), IDM_lcw MENUITEM SEPARATOR MENUITEM退出(&X), IDM_EXIT POPUP计算(&C) MENUITEM计算总和(&S), IDM_zonghe MENUITEM计算方差(&D), IDM_fangcha MENUITEM线性拟合, IDM_junfanggen POPUP帮助(&H) MENUITEM计算总和的帮助, IDM_zonghehelp MENUITEM计算方差的帮助, IDM_fangchahelp MENUITEM计算均方根的帮助, IDM_junfanggenhelp MENUITE

16、M SEPARATOR MENUITEM关于(&A), IDM_ABOUT /#undef APSTUDIO_READONLY_SYMBOLS/ Chinese (中国) resources#if !defined(AFX_RESOURCE_DLL) | defined(AFX_TARG_CHS)#ifdef _WIN32LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED#pragma code_page(936)#endif /_WIN32#ifdef APSTUDIO_INVOKED/ TEXTINCLUDE/1 TEXTINCLUDE DI

17、SCARDABLE BEGIN resource.h0END2 TEXTINCLUDE DISCARDABLE BEGIN #include afxres.hrn #includewindows.hrn #includeE08700212叶孙晓.hrn E08700212 ICON D:E08700212二E08700212.ICOrn E08700212 CURSOR D:E08700212二E08700212.CURrn Menu MENU DISCARDABLErn rn POPUP文件(&F)rn rn MENUITEM打开(&O)tCtrl+O, IDM_OPEN rn MENUIT

18、EM画图(&G), IDM_DRAW rn MENUITEM保存(&S), IDM_SAVE MENUITEM另存为(&A), IDM_lcw MENUITEM SEPARATORrn MENUITEM退出(&X), IDM_EXITrn rn rn POPUP计算(&C)rn rn MENUITEM计算总和(&S), IDM_zonghe rn MENUITEM计算方差(&D), IDM_fangcharn MENUITEM线性拟合, IDM_junfanggenrn rn rn POPUP帮助(&H)rn rn MENUITEM计算总和的帮助, IDM_zonghehelprn MENUITEM计算方差的帮助, IDM_fangchahelprn MENUITEM计算均方根的帮助, IDM_junfanggenhelprn MENUITEM SEPARATORrn MENUITEM关于(&A), IDM_ABOUTrn 0END3 TEXTINCLUDE DISCARDABLE BEGIN rn 0END#en

温馨提示

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

评论

0/150

提交评论