可視化試驗(yàn)二_第1頁(yè)
可視化試驗(yàn)二_第2頁(yè)
可視化試驗(yàn)二_第3頁(yè)
可視化試驗(yàn)二_第4頁(yè)
可視化試驗(yàn)二_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——可視化試驗(yàn)二

成績(jī)?cè)囼?yàn)二

學(xué)號(hào):班級(jí):姓名:

一、試驗(yàn)內(nèi)容

1.創(chuàng)立一個(gè)菜單,其中有三個(gè)菜單項(xiàng),分別為“文件〞、“計(jì)算〞和“幫助〞,其中,“文件〞菜單項(xiàng)包含“開(kāi)啟〞、“保存〞、“畫(huà)圖〞、“退出〞等菜單項(xiàng)選擇項(xiàng);“計(jì)算〞菜單包含“總和〞、“方差〞、“均方根〞等菜單項(xiàng)選擇項(xiàng);“幫助〞菜單項(xiàng)包含“計(jì)算總和幫助〞、“計(jì)算方差幫助〞和“計(jì)算均方根幫助〞以及“關(guān)于〞等項(xiàng)。

2.若單擊“畫(huà)圖〞菜單項(xiàng),則繪出P103圖形。3.若在用戶區(qū)內(nèi)按下鼠標(biāo)左鍵,則動(dòng)態(tài)創(chuàng)立一個(gè)包括“刪除計(jì)算總和〞、“添加計(jì)算平均值〞和“修改計(jì)算均方差〞三個(gè)菜單項(xiàng)的彈出式菜單,由此菜單控制“計(jì)算〞菜單中菜單項(xiàng)刪除、添加與修改。(要求新的彈出式菜單開(kāi)始時(shí)不可用,按下右鍵后變?yōu)榭捎谩#﹩螕簟靶薷挠?jì)算均方差〞菜單項(xiàng)后,“計(jì)算〞菜單下的“計(jì)算均方差〞項(xiàng)改為“線性擬合〞,單擊“添加計(jì)算平均值〞菜單項(xiàng)后,“計(jì)算〞菜單中添加上了“計(jì)算平均值〞菜單項(xiàng)。?4.將光標(biāo)設(shè)定為自己名字中的某個(gè)字、圖標(biāo)設(shè)定為自己名字中的另一個(gè)字。二、試驗(yàn)儀器電腦一臺(tái)

三、試驗(yàn)原理(主要程序代碼及解釋)1、創(chuàng)立菜單:

?????

定義菜單:在資源描述文件中定義。POPUP語(yǔ)句,并可以包含子菜單。在頭文件中定義菜單項(xiàng)標(biāo)識(shí)所對(duì)應(yīng)的數(shù)值。

加載菜單資源。在窗口類中加載菜單:wcex.lpszMenuName

動(dòng)態(tài)的創(chuàng)立菜單:調(diào)用CreatMenu創(chuàng)立空的彈出式菜單,調(diào)用AppendMenu插入菜單項(xiàng)阻止和激活菜單項(xiàng)MF_ENABLED、MF_GRAYED

修改菜單項(xiàng):ModifyMenu(hmenu,IDM_FANGCHA,MF_BYCOMMAND,IDM_nihe,\線性擬合\);

2、畫(huà)圖:WM_PAINT

3、鼠標(biāo)點(diǎn)擊事件:WM_LBUTTONDOWN、WM_RBUTTONDOWN4、光標(biāo)和圖標(biāo):?創(chuàng)立資源ico、cur

?在cpp文件中調(diào)用wcex.hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON1));

5、代碼:final.cpp#include\#include\

#defineMAX_LOADSTRING100HMENUhmenu,haddmenu;

HINSTANCEhInst;

TCHARszTitle[MAX_LOADSTRING];ATOMBOOL

TCHARszWindowClass[MAX_LOADSTRING];

MyRegisterClass(HINSTANCEhInstance);InitInstance(HINSTANCE,int);

About(HWND,UINT,WPARAM,LPARAM);

LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);INT_PTRCALLBACK

intAPIENTRY_tWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPTSTRlpCmdLine,intnCmdShow){}

ATOMMyRegisterClass(HINSTANCEhInstance){

wcex.style

=CS_HREDRAW|CS_VREDRAW;

wcex.cbSize=sizeof(WNDCLASSEX);WNDCLASSEXwcex;return(int)msg.wParam;

hAccelTable=LoadAccelerators(hInstance,MAKEINTRESOURCE(IDC_FINAL));while(GetMessage(DispatchMessage(

UNREFERENCED_PARAMETER(hPrevInstance);UNREFERENCED_PARAMETER(lpCmdLine);MSGmsg;

HACCELhAccelTable;

LoadString(hInstance,IDS_APP_TITLE,szTitle,MAX_LOADSTRING);LoadString(hInstance,IDC_FINAL,szWindowClass,MAX_LOADSTRING);MyRegisterClass(hInstance);

if(!InitInstance(hInstance,nCmdShow)){}

returnFALSE;

}

wcex.lpfnWndProc=WndProc;wcex.cbClsExtrawcex.cbWndExtrawcex.hInstancewcex.hIcon

wcex.hCursor

=0;=0;

=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON1));

=hInstance;

=LoadCursor(hInstance,MAKEINTRESOURCE(IDC_CURSOR2));

wcex.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);wcex.lpszMenuName=MAKEINTRESOURCE(IDC_FINAL);wcex.lpszClassName=szWindowClass;wcex.hIconSm

=LoadIcon(wcex.hInstance,MAKEINTRESOURCE(IDI_ICON1));

returnRegisterClassEx(

BOOLInitInstance(HINSTANCEhInstance,intnCmdShow){

HWNDhWnd;

hInst=hInstance;

hWnd=CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);

if(!hWnd){

returnFALSE;}

ShowWindow(hWnd,nCmdShow);UpdateWindow(hWnd);

returnTRUE;}

LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam){

staticbooldraw=false;staticboolleft=true;

staticboolADDAVERAGE=true;intwmEvent;PAINTSTRUCTps;HDChdc;HBRUSHhBrush;HPENhPen;

//HMENUhmenu,haddmenu;

switch(message){

caseWM_COMMAND:

wmEvent=HIWORD(wParam);switch(LOWORD(wParam)){

caseIDM_MFANGCHA:

ModifyMenu(hmenu,IDM_FANGCHA,MF_BYCOMMAND,IDM_nihe,\線性擬合\);

DrawMenuBar(hWnd);break;

caseIDM_ADDAVERAGE:

if(ADDAVERAGE){

InsertMenu(hmenu,IDM_JUNFANGGEN,MF_BYCOMMAND|MF_ENABLED,IDM_AVERAGE,\平均值\);DrawMenuBar(hWnd);}ADDAVERAGE=false;break;

caseIDM_ABOUT:

DialogBox(hInst,MAKEINTRESOURCE(IDD_ABOUTBOX),hWnd,About);break;

caseIDM_DRAW:

hmenu=GetMenu(hWnd);draw=true;break;

caseWM_LBUTTONDOWN:if(left)

{hmenu=GetMenu(hWnd);haddmenu=CreateMenu();AppendMenu(haddmenu,MF_GRAYED,IDM_DZONGHE,\刪除計(jì)算總和\);AppendMenu(haddmenu,MF_GRAYED,IDM_MFANGCHA,\修改計(jì)算方差\);AppendMenu(haddmenu,MF_GRAYED,IDM_ADDAVERAGE,\添加計(jì)算平均值\);

caseIDM_EXIT:}break;

DestroyWindow(hWnd);break;

returnDefWindowProc(hWnd,message,wParam,lParam);

default:

InsertMenu(hmenu,3,MF_POPUP|MF_BYPOSITION,(UINT)haddmenu,\修改菜單\);DrawMenuBar(hWnd);}

left=false;break;

caseWM_RBUTTONDOWN:

EnableMenuItem(haddmenu,IDM_DZONGHE,MF_ENABLED);EnableMenuItem(haddmenu,IDM_MFANGCHA,MF_ENABLED);EnableMenuItem(haddmenu,IDM_ADDAVERAGE,MF_ENABLED);DrawMenuBar(hWnd);break;

caseWM_PAINT:

if(draw){

hdc=BeginPaint(hWnd,

SetMapMode(hdc,MM_TEXT);

Rectangle(hdc,150,50,300,200);

hBrush=CreateHatchBrush(HS_CROSS,RGB(255,0,0));SelectObject(hdc,hBrush);Ellipse(hdc,150,60,300,190);

hPen=CreatePen(PS_DASHDOT,1,RGB(0,255,0));SelectObject(hdc,hPen);MoveToEx(hdc,100,125,NULL);LineTo(hdc,350,125);

MoveToEx(hdc,225,30,NULL);LineTo(hdc,225,220);}

INT_PTRCALLBACKAbout(HWNDhDlg,UINTmessage,WPARAMwParam,LPARAMlParam){

UNREFERENCED_PARAMETER(lParam);switch(message){

caseWM_INITDIALOG:}return0;

EndPaint(hWnd,}break;

PostQuitMessage(0);break;

returnDefWindowProc(hWnd,message,wParam,lParam);

caseWM_DESTROY:

default:

}

return(INT_PTR)TRUE;

caseWM_COMMAND:}

return(INT_PTR)FALSE;

if(LOWORD(wParam)==IDOK||LOWORD(wParam)==IDCANCEL){}break;

EndDialog(hDlg,LOWORD(wParam));return(INT_PTR)TRUE;

Resource.h

#defineIDC_MYICON2#defineIDD_FINAL_DIALOG102#defineIDS_APP_TITLE103#defineIDD_ABOUTBOX103#defineIDM_ABOUT104#defineIDM_EXIT105#defineIDC_FINAL109#defineIDR_MAINFRAME128#defineIDC_CURSOR2133#defineIDI_ICON1134#defineID_Menu32772#defineIDM_OPEN32773#defineIDM_SAVE32774#defineID_Menu3277532775#defineIDM_DRAW32777#defineID_Menu3277832778#defineIDM_HCZ32779#defineIDM_HCF32781#defineIDM_HCJ32783#defineID_Menu3278632786#defineIDM_FANGCHA32790#defineIDM_ZONGHE32791#defineIDM_JUNFANGGEN32792#defineIDC_STATIC-1#defineIDM_DZONGHE10#defineIDM_MFANGCHA11#defineIDM_ADDAVERAGE12#defineIDM_nihe13

#defineIDM_AVERAGE14#ifdefAPSTUDIO_INVOKED

#ifndefAPSTUDIO_READONLY_SYMBOLS

#define_APS_NO_MFC1#define_APS_NEXT_RESOURCE_VALUE135#define_APS_NEXT_COMMAND_VALUE32793#define_APS_NEXT_CONTROL_VALUE1000#define_APS_NEXT_SYMED_VALUE110#endif#endifRC文件

#include\

#defineAPSTUDIO_READONLY_SYMBOLS#ifndefAPSTUDIO_INVOKED#include\#endif

#defineAPSTUDIO_HIDDEN_SYMBOLS#include\

#undefAPSTUDIO_HIDDEN_SYMBOLS#undefAPSTUDIO_READONLY_SYMBOLS

#if!defined(AFX_RESOURCE_DLL)||defined(AFX_TARG_CHS)LANGUAGELANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIEDIDI_ICON1ICON\IDC_FINALMENUBEGIN

POPUP\文件(&F)\BEGIN

MENUITEM\開(kāi)啟(&O)\,IDM_OPENMENUITEM\保存(&S)\,IDM_SAVEMENUITEM\畫(huà)圖(&D)\,IDM_DRAWMENUITEM\退出(&X)\,IDM_EXITEND

POPUP\計(jì)算(&C)\BEGIN

MENUITEM\總和(&Z)\,IDM_ZONGHEMENUITEM\方差(&N)\,IDM_FANGCHAMENUITEM\均方根(&J)\,IDM_JUNFANGGENEND

POPUP\幫助(&H)\BEGIN

MENUITEM\計(jì)算總和幫助\,IDM_HCZMENUITEM\計(jì)算方差幫助\,IDM_HCFMENUITEM\計(jì)算均方根幫助\,IDM_HCJMENUITEM\關(guān)于(&A)...\,IDM_ABOUTENDEND

IDC_FINALACCELERATORS

BEGIN

\,IDM_ABOUT,ASCII,ALT\,IDM_ABOUT,ASCII,ALTEND

IDD_ABOUTBOXDIALOGEX0,0,170,62

STYLEDS_SETFONT|DS_MODALFRAME|DS_FIXEDSYS|WS_POPUP|WS_CAPTION|WS_SYSMENUCAPTION\關(guān)于final\

FONT9,\,0,0,0x1BEGIN

ICON128,IDC_STATIC,14,14,21,20

LTEXT\,ê?1.0版??\,IDC_STATIC,42,14,114,8,SS_NOPREFIXLTEXT\,ID

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論