人機(jī)交互實(shí)驗(yàn)報(bào)告.doc_第1頁
人機(jī)交互實(shí)驗(yàn)報(bào)告.doc_第2頁
人機(jī)交互實(shí)驗(yàn)報(bào)告.doc_第3頁
人機(jī)交互實(shí)驗(yàn)報(bào)告.doc_第4頁
人機(jī)交互實(shí)驗(yàn)報(bào)告.doc_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)字媒體學(xué)院上機(jī)實(shí)驗(yàn)報(bào)告I課程名稱:程序設(shè)計(jì)II班級(jí):實(shí)驗(yàn)日期:姓名:學(xué)號(hào):指導(dǎo)教師:實(shí)驗(yàn)序號(hào):01實(shí)驗(yàn)成績:一、實(shí)驗(yàn)名稱:測(cè)試創(chuàng)建函數(shù)二、實(shí)驗(yàn)?zāi)康募耙?. 熟悉Windows程序設(shè)計(jì)2. 掌握VS的使用3. 了解程序窗口的設(shè)計(jì)3、 實(shí)驗(yàn)環(huán)境: VS2012四、實(shí)驗(yàn)內(nèi)容編制一個(gè)程序,設(shè)計(jì)一個(gè)程序窗口,測(cè)試創(chuàng)建函數(shù)的風(fēng)格參數(shù),簡單總結(jié)窗口有哪些風(fēng)格。五、算法描述及實(shí)驗(yàn)步驟1. 創(chuàng)建一個(gè)基于對(duì)話框的項(xiàng)目2. 給對(duì)話框加入相應(yīng)的操作按鈕3. 給按鈕加上代碼,設(shè)置屬性4. 為實(shí)現(xiàn)操作添加必要函數(shù)六、調(diào)試過程及實(shí)驗(yàn)結(jié)果我就只是在源代碼里面更改了幾次風(fēng)格參數(shù)的代碼,看了下效果,并將風(fēng)格參數(shù)總結(jié)成了一份word文檔。七、總結(jié)本次實(shí)驗(yàn),我掌握了一些具體函數(shù)的定義和調(diào)用方法。在操作的過程中深刻地體會(huì)到函數(shù)調(diào)用的便捷。通過vs使用,我親自感受并實(shí)踐了程序設(shè)計(jì)的思想,同時(shí)對(duì)vs程序設(shè)計(jì)也有了總體的認(rèn)識(shí)。此外,編寫程序的嚴(yán)謹(jǐn)思想也令我深深地感受一絲不茍地工作的重要性。8、 附錄LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) HDC hdc ; PAINTSTRUCT ps ; RECT rect ; switch (message) case WM_CREATE: PlaySound (TEXT (123.wav), NULL, SND_FILENAME | SND_ASYNC) ; return 0 ; case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; GetClientRect (hwnd, &rect) ; DrawText (hdc, TEXT (Hello, Windows 7!), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ; EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY: PostQuitMessage (0) ; return 0 ; return DefWindowProc (hwnd, message, wParam, lParam) ;運(yùn)行結(jié)果截圖:上機(jī)實(shí)驗(yàn)報(bào)告II課程名稱:程序設(shè)計(jì)II班級(jí):實(shí)驗(yàn)日期:姓名:學(xué)號(hào):指導(dǎo)教師:實(shí)驗(yàn)序號(hào):02實(shí)驗(yàn)成績:一、實(shí)驗(yàn)名稱:繪制小船二、實(shí)驗(yàn)?zāi)康募耙?.掌握VS的使用2.了解程序窗口的設(shè)計(jì)3.熟悉圖形設(shè)備接口、繪圖和文字3、 實(shí)驗(yàn)環(huán)境: VS2012四、實(shí)驗(yàn)內(nèi)容繪制一艘小船,有顏色的帆船,標(biāo)注船長,有坐標(biāo)系。五、算法描述及實(shí)驗(yàn)步驟1. 創(chuàng)建一個(gè)基于對(duì)話框的項(xiàng)目2. 確定船的各點(diǎn)之間的坐標(biāo)關(guān)系2. 利用函數(shù)將船的坐標(biāo)關(guān)系繪制出來3. 填充顏色六、調(diào)試過程及實(shí)驗(yàn)結(jié)果 起初畫船身的時(shí)候,坐標(biāo)沒算好,船是奇形怪狀的,后來經(jīng)過研究確定了坐標(biāo),確定每個(gè)坐標(biāo)點(diǎn)比較繁瑣,花了比較多的時(shí)間,而且中間因?yàn)橛?jì)算錯(cuò)誤更改了很多次。各個(gè)圖形建的順序不清楚,也很奇怪,后來解決了。后來顏色也不會(huì)填,通過問別人和百度解決了。七、總結(jié)這次實(shí)驗(yàn)是圖形的繪制,本次實(shí)驗(yàn)內(nèi)容很多,既要打開文件讀取數(shù)據(jù),又要繪制坐標(biāo),軸,坐標(biāo)刻度,還要對(duì)坐標(biāo)進(jìn)行轉(zhuǎn)化,比較麻煩,將它們完美地融合在一起卻不簡單。這已經(jīng)是第二個(gè)實(shí)驗(yàn)了,也學(xué)了編程的知識(shí),雖然有的函數(shù),代碼我知道它是什么功能,我會(huì)用,但卻不是很理解,將所學(xué)進(jìn)行改編融合這方面我還是很欠缺的。這個(gè)程序雖然是寫完了,結(jié)果也運(yùn)行出來了,但我知道它是寫的很糟糕的,類只是函數(shù)的堆砌,完全算不上真正的類,運(yùn)行也存在很大的問題。剛開始編譯時(shí)還有好多錯(cuò)誤,多編譯幾次竟然就通過了,但是通過之后有時(shí)是彈出兩個(gè)或多個(gè)打開文件的對(duì)話框,有時(shí)是一個(gè),往往還伴隨著黑屏。我想應(yīng)該是數(shù)據(jù)讀取的函數(shù)調(diào)用有問題,具體是什么原因還不是很清楚,明天上午再去請(qǐng)教同學(xué)吧。八、附錄LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) static TCHAR szBuffer8=TEXT(船有20米長。); TEXTMETRIC tm; static int cxChar,cyChar; static POINT BoatFigure4 static int cxClient, cyClient ; HDC hdc ; int i,j ; PAINTSTRUCT ps ; POINT Boat4 ; static int CloudFigure124; int Cloud124; static POINT PoleFigure4; POINT Pole4; static POINT FlagFigure3; POINT Flag3; static int BubbleFigure34 int Bubble34; static POINT ArrowFigure43; POINT Arrow43; HBRUSH hOrangeBrush,hBlueBrush,hBrownBrush,hRedBrush; switch (message) case WM_SIZE: cxClient = LOWORD (lParam) ; cyClient = HIWORD (lParam) ; return 0 ; / case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; GetTextMetrics(hdc,&tm); cxChar=tm.tmAveCharWidth; cyChar=tm.tmHeight+tm.tmExternalLeading; SetMapMode(hdc,MM_ISOTROPIC); SetWindowExtEx(hdc,cxClient/2,cyClient/2,NULL); SetViewportExtEx(hdc,cxClient/2,-cyClient/2,NULL); SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL); for(i=0;i4;i+) Boati.x=cxClient*BoatFigurei.x/70; Boati.y=cyClient*BoatFigurei.y/40; Polei.x=cxClient*PoleFigurei.x/140; Polei.y=cyClient*PoleFigurei.y/40; for(i=0;i3;i+) Flagi.x=cxClient*FlagFigurei.x/70; Flagi.y=cyClient*FlagFigurei.y/40; for(i=0;i3;i+) Bubblei0= cxClient*BubbleFigurei0/70; Bubblei1= cyClient*BubbleFigurei1/40; Bubblei2= cxClient*BubbleFigurei2/70; Bubblei3= cyClient*BubbleFigurei3/40; for(i=0;i12;i+) Cloudi0= cxClient*CloudFigurei0/70; Cloudi1= cyClient*CloudFigurei1/40; Cloudi2= cxClient*CloudFigurei2/70; Cloudi3= cyClient*CloudFigurei3/40; for(i=0;i4;i+) for(j=0;j3;j+) Arrowij.x=cxClient*ArrowFigureij.x/140; Arrowij.y=cyClient*ArrowFigureij.y/80; SelectObject (hdc, hBlueBrush) ; SetPolyFillMode (hdc, ALTERNATE) ;for(i=0;i11;i+)Ellipse(hdc,Cloudi0,Cloudi1,Cloudi2,Cloudi3); for(i=0;i3;i+)Ellipse(hdc,Bubblei0,Bubblei1,Bubblei2,Bubblei3); SelectObject (hdc,GetStockObject(NULL_PEN); Ellipse(hdc,Cloud110,Cloud111,Cloud112,Cloud113); DeleteObject(hBlueBrush); SelectObject (hdc, hOrangeBrush) ; Polygon (hdc, Boat, 4); DeleteObject(hOrangeBrush); SelectObject(hdc,hBrownBrush); Polygon(hdc,Pole,4); DeleteObject(hBrownBrush); SelectObject(hdc,hRedBrush); Polygon(hdc,Flag,3); DeleteObject(hRedBrush); SelectObject(hdc,GetStockObject(BLACK_BRUSH); for(i=0;i4;i+)Polygon(hdc,Arrowi,3); SelectObject(hdc,GetStockObject(BLACK_PEN); MoveToEx(hdc,cxClient*(-29)/70,0,NULL); LineTo(hdc,cxClient*24/70,0); MoveToEx(hdc,0,cyClient*18/40,NULL); LineTo(hdc,0,cyClient*(-16)/40); MoveToEx(hdc,cxClient*(-14)/70,cyClient*(-3)/40,NULL); LineTo(hdc,cxClient*(-14)/70,cyClient*(-19)/40); MoveToEx(hdc,cxClient*18/70,cyClient*(-3)/40,NULL); LineTo(hdc,cxClient*18/70,cyClient*(-19)/40); MoveToEx(hdc,cxClient*(-14)/70,cyClient*(-18)/40,NULL); LineTo(hdc,cxClient*18/70,cyClient*(-18)/40); SetTextColor(hdc,RGB(255,66,67); TextOut(hdc,-3*cxChar,cyClient*(-18)/40+cyChar,szBuffer,lstrlen(szBuffer); EndPaint(hwnd, &ps) ; return 0 ; / case WM_DESTROY: PostQuitMessage (0) ; return 0 ; return DefWindowProc (hwnd, message, wParam, lParam) ;運(yùn)行結(jié)果截圖:上機(jī)實(shí)驗(yàn)報(bào)告III課程名稱:程序設(shè)計(jì)II班級(jí):實(shí)驗(yàn)日期:姓名:學(xué)號(hào):指導(dǎo)教師:實(shí)驗(yàn)序號(hào):03實(shí)驗(yàn)成績:一、實(shí)驗(yàn)名稱:重現(xiàn)基本文本編輯器二、實(shí)驗(yàn)?zāi)康募耙?.掌握VS的使用2.了解程序窗口的設(shè)計(jì)3.掌握本編輯器的基本函數(shù)調(diào)用3、 實(shí)驗(yàn)環(huán)境: VS2012四、實(shí)驗(yàn)內(nèi)容創(chuàng)建一個(gè)簡單的程序窗口,并創(chuàng)建編輯類的子窗口,捕獲光標(biāo)位置后可以此輸入文字基本文本編輯框五、算法描述及實(shí)驗(yàn)步驟創(chuàng)建一個(gè)Win32的項(xiàng)目給頭文件添加一個(gè)新建項(xiàng)定義主函數(shù)在主函數(shù)中為實(shí)現(xiàn)操作添加必要函數(shù)(LoadIcon;LoadCursor;GetStockObject;MessageBox;CreateWindow;CreateFont; GetTextMetrics;max;SendMessage等)六、調(diào)試過程及實(shí)驗(yàn)結(jié)果 在寫編輯類子窗口的代碼時(shí)沒有遇到太大的困難,不過在捕獲鼠標(biāo)的位置時(shí)花了比較多的時(shí)間,對(duì)照了書上的代碼,借鑒了一個(gè)書配套光盤的已經(jīng)寫好的基本文本編輯器的代碼,才把程序?qū)懞?。七、總結(jié) 小小一個(gè)鼠標(biāo)捕獲看似我們用得已經(jīng)沒有知覺的操作也是相當(dāng)復(fù)雜的,這是我最深的感受。程序使用了等寬字體,如果使用變寬的話,太難了。八、附錄LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) static DWORD dwCharSet = DEFAULT_CHARSET ; static int cxChar, cyChar, cxClient, cyClient, cxBuffer, cyBuffer, xCaret, yCaret ; static TCHAR * pBuffer = NULL ; HDC hdc ; int x, y, i ; PAINTSTRUCT ps ; TEXTMETRIC tm ; switch (message) case WM_INPUTLANGCHANGE: dwCharSet = wParam ; / fall through case WM_CREATE: hdc = GetDC (hwnd) ; SelectObject (hdc, CreateFont (0, 0, 0, 0, 0, 0, 0, 0, dwCharSet, 0, 0, 0, FIXED_PITCH, NULL) ; GetTextMetrics (hdc, &tm) ; cxChar = tm.tmAveCharWidth ; cyChar = tm.tmHeight ; DeleteObject (SelectObject (hdc, GetStockObject (SYSTEM_FONT) ; ReleaseDC (hwnd, hdc) ; / fall through case WM_SIZE: / obtain window size in pixels if (message = WM_SIZE) cxClient = LOWORD (lParam) ; cyClient = HIWORD (lParam) ; / calculate window size in characters cxBuffer = max (1, cxClient / cxChar) ; cyBuffer = max (1, cyClient / cyChar) ; / allocate memory for buffer and clear it if (pBuffer != NULL) free (pBuffer) ; pBuffer = (TCHAR *) malloc (cxBuffer * cyBuffer * sizeof (TCHAR) ; for (y = 0 ; y cyBuffer ; y+) for (x = 0 ; x cxBuffer ; x+) BUFFER(x,y) = ; / set caret to upper left corner xCaret = 0 ; yCaret = 0 ; if (hwnd = GetFocus () SetCaretPos (xCaret * cxChar, yCaret * cyChar) ; InvalidateRect (hwnd, NULL, TRUE) ; return 0 ; case WM_SETFOCUS: / create and show the caret CreateCaret (hwnd, NULL, cxChar, cyChar) ; SetCaretPos (xCaret * cxChar, yCaret * cyChar) ; ShowCaret (hwnd) ; return 0 ; case WM_KILLFOCUS: / hide and destroy the caret HideCaret (hwnd) ; DestroyCaret () ; return 0 ; case WM_KEYDOWN: switch (wParam) case VK_HOME: xCaret = 0 ; break ; case VK_END: xCaret = cxBuffer - 1 ; break ; case VK_PRIOR: yCaret = 0 ; break ; case VK_NEXT: yCaret = cyBuffer - 1 ; break ; case VK_LEFT: xCaret = max (xCaret - 1, 0) ; break ; case VK_RIGHT: xCaret = min (xCaret + 1, cxBuffer - 1) ; break ; case VK_UP: yCaret = max (yCaret - 1, 0) ; break ; case VK_DOWN: yCaret = min (yCaret + 1, cyBuffer - 1) ; break ; case VK_DELETE: for (x = xCaret ; x cxBuffer - 1 ; x+) BUFFER (x, yCaret) = BUFFER (x + 1, yCaret) ; BUFFER (cxBuffer - 1, yCaret) = ; HideCaret (hwnd) ; hdc = GetDC (hwnd) ; SelectObject (hdc, CreateFont (0, 0, 0, 0, 0, 0, 0, 0, dwCharSet, 0, 0, 0, FIXED_PITCH, NULL) ; TextOut (hdc, xCaret * cxChar, yCaret * cyChar, & BUFFER (xCaret, yCaret), cxBuffer - xCaret) ; DeleteObject (SelectObject (hdc, GetStockObject (SYSTEM_FONT) ; ReleaseDC (hwnd, hdc) ; ShowCaret (hwnd) ; break ; SetCaretPos (xCaret * cxChar, yCaret * cyChar) ; return 0 ; case WM_CHAR: for (i = 0 ; i 0) xCaret- ; SendMessage (hwnd, WM_KEYDOWN, VK_DELETE, 1) ; break ; case t: / tab do SendMessage (hwnd, WM_CHAR, , 1) ; while (xCaret % 8 != 0) ; break ; case n: / line feed if (+yCaret = cyBuffer) yCaret = 0 ; break ; case r: / carriage return xCaret = 0 ; if (+yCaret = cyBuffer) yCaret = 0 ; break ; case x1B: / escape for (y = 0 ; y cyBuffer ; y+) for (x = 0 ; x cxBuffer ; x+) BUFFER (x, y) = ; xCaret = 0 ; yCaret = 0 ; InvalidateRect (hwnd, NULL, FALSE) ; break ; default: / character codes BUFFER (xCaret, yCaret) = (TCHAR) wParam ; HideCaret (hwnd) ; hdc = GetDC (hwnd) ; SelectObject (hdc, CreateFont (0, 0, 0, 0, 0, 0, 0, 0, dwCharSet, 0, 0, 0, FIXED_PITCH, NULL) ; TextOut (hdc, xCaret * cxChar, yCaret * cyChar, & BUFFER (xCaret, yCaret), 1) ; DeleteObject ( SelectObject (hdc, GetStockObject (SYSTEM_FONT) ; ReleaseDC (hwnd, hdc) ; ShowCaret (hwnd) ; if (+xCaret = cxBuffer) xCaret = 0 ; if (+yCaret = cyBuffer) yCaret = 0 ; break ; SetCaretPos (xCaret * cxChar, yCaret * cyChar) ; return 0 ; case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; SelectObject (hdc, CreateFont (0, 0, 0, 0, 0, 0, 0, 0, dwCharSet, 0, 0, 0, FIXED_PITCH, NULL) ; for (y = 0 ; y cyBuffer ; y+) TextOut (hdc, 0, y * cyChar, & BUFFER(0,y), cxBuffer) ; DeleteObject (SelectObject (hdc, GetStockObject (SYSTEM_FONT) ; EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY: PostQuitMessage (0) ; return 0 ; return DefWindowProc (hwnd, message, wParam, lParam) ;運(yùn)行結(jié)果截圖:上機(jī)實(shí)驗(yàn)報(bào)告IV課程名稱:程序設(shè)計(jì)II班級(jí):實(shí)驗(yàn)日期:姓名:學(xué)號(hào):指導(dǎo)教師:實(shí)驗(yàn)序號(hào):04實(shí)驗(yàn)成績:一、實(shí)驗(yàn)名稱:重現(xiàn)基本調(diào)色板二、實(shí)驗(yàn)?zāi)康募耙?.掌握VS的使用2.了解程序窗口的設(shè)計(jì)3.了解系統(tǒng)顏色設(shè)置函數(shù)使用3、 實(shí)驗(yàn)環(huán)境: VS2012四、實(shí)驗(yàn)內(nèi)容創(chuàng)建一個(gè)簡單的程序窗口,上面具有調(diào)色板功能的各種按扭(可適當(dāng)簡單化)5、 算法描述及實(shí)驗(yàn)步驟(1)移動(dòng)滾動(dòng)條模塊主要是可以通過移動(dòng)滾動(dòng)條改變RGB的值來實(shí)現(xiàn)想要得到的顏色。(2)輸入比例值模塊主要是可以通過輸入比例值改變RGB的值來實(shí)現(xiàn)想要得到的顏色。(3)選取圖片模塊主要是可以選取圖片,點(diǎn)擊圖片的某個(gè)位置會(huì)返回點(diǎn)擊圖片位置的顏色和RGB值。(4)記錄剛才調(diào)制好的顏色 六、調(diào)試過程及實(shí)驗(yàn)結(jié)果 。剛開始對(duì)整體的設(shè)計(jì)沒有想法,后來由于自己能力有限,所以設(shè)置個(gè)拖動(dòng)條的用來改變顏色,雖然對(duì)Windows程序還是不理解,但是勉強(qiáng)接受了它的想法。拖動(dòng)條運(yùn)動(dòng)時(shí)對(duì)于顏色的調(diào)整有問題,不知道怎么實(shí)現(xiàn),后來進(jìn)過復(fù)雜的過程,成功地運(yùn)行了七、總結(jié)通過這次程序設(shè)計(jì)讓我對(duì)vs有了進(jìn)一步的了解。通過慢慢學(xué)習(xí),查閱課本,不斷的練習(xí)操作,讓我進(jìn)一步掌握所學(xué)過的知識(shí)。通過這次設(shè)計(jì)讓我得到了很多鍛煉,比如:如何去查閱自己所需要的資料,如何去解決所遇到的問題。讓我的能力得到了進(jìn)一步的提升。八、附錄LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) static COLORREF crPrim3 = RGB (255, 0, 0), RGB (0, 255, 0), RGB (0, 0, 255) ; static HBRUSH hBrush3, hBrushStatic ; static HWND hwndScroll3, hwndLabel3, hwndValue3, hwndRect ; static int color3, cyChar ; static RECT rcColor ; static TCHAR * szColorLabel = TEXT (Red), TEXT (Green), TEXT (Blue) ; HINSTANCE hInstance ; int i, cxClient, cyClient ; TCHAR szBuffer10 ; switch (message) case WM_CREATE : hInstance = (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE) ; hwndRect = CreateWindow (TEXT (static), NULL, WS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論