可视化实验二实现Windows应用程序对键盘与鼠标的响应(共7页).doc

上传人:飞****2 文档编号:13887857 上传时间:2022-05-01 格式:DOC 页数:7 大小:36.50KB
返回 下载 相关 举报
可视化实验二实现Windows应用程序对键盘与鼠标的响应(共7页).doc_第1页
第1页 / 共7页
可视化实验二实现Windows应用程序对键盘与鼠标的响应(共7页).doc_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《可视化实验二实现Windows应用程序对键盘与鼠标的响应(共7页).doc》由会员分享,可在线阅读,更多相关《可视化实验二实现Windows应用程序对键盘与鼠标的响应(共7页).doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

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

3、eE叶孙晓.hHMENU 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=E叶孙晓二; wndclass

4、.style=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); retur

5、n FALSE; 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(!Tr

6、anslateAccelerator(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; H

7、BRUSH 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_junfangg

8、en,MF_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,删除计算总和); AppendMe

9、nu(haddmenu,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

10、(haddmenu,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); Ell

11、ipse(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:

12、 return 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

13、#define 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_

14、READONLY_SYMBOLS/ Generated from the TEXTINCLUDE 2 resource./#include afxres.h#includewindows.h#includeE叶孙晓.hE ICON D:E二E.ICOE CURSOR D:E二E.CURMenu MENU DISCARDABLE POPUP文件(&F) MENUITEM打开(&O)tCtrl+O, IDM_OPEN MENUITEM画图(&G), IDM_DRAW MENUITEM保存(&S), IDM_SAVE MENUITEM另存为(&A), IDM_lcw MENUITEM SEPARAT

15、OR 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 MENUITEM SEPARATOR MENUITEM关于(&A), IDM_ABOUT /#undef APSTU

16、DIO_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 DISCARDABLE BEGIN resource.h0END2 TEXTINCLUDE DISCARD

17、ABLE BEGIN #include afxres.hrn #includewindows.hrn #includeE叶孙晓.hrn E ICON D:E二E.ICOrn E CURSOR D:E二E.CURrn Menu MENU DISCARDABLErn rn POPUP文件(&F)rn rn MENUITEM打开(&O)tCtrl+O, IDM_OPEN rn MENUITEM画图(&G), IDM_DRAW rn MENUITEM保存(&S), IDM_SAVE MENUITEM另存为(&A), IDM_lcw MENUITEM SEPARATORrn MENUITEM退出(&X)

18、, 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), I

19、DM_ABOUTrn 0END3 TEXTINCLUDE DISCARDABLE BEGIN rn 0END#endif / APSTUDIO_INVOKED#endif / Chinese (中国) resources/#ifndef APSTUDIO_INVOKED/ Generated from the TEXTINCLUDE 3 resource./#endif 五、实验心得通过这次实验学会了使用API函数编制包含各种资源的Windows应用程序,在实验过程中,光标的设置,课本上对这块阐述的很简短,很多都需要自己去理解。调用自己命名光标这个函数。wndclass.hCursor=LoadCursor(GetModuleHandle(NULL),E); /窗口采用光标

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁