




已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
面向?qū)ο缶幊碳夹g(shù)實(shí)驗(yàn)四實(shí)驗(yàn)報告班 級:通信2 班學(xué) 號:201000800212姓 名: 王煜瑩時 間:2012-10-20目錄1 實(shí)驗(yàn)要求32 實(shí)驗(yàn)過程及結(jié)果3A、對話框部分:3B、圖形繪制函數(shù)的使用5C、定時器使用103 問題及解決方案114 實(shí)驗(yàn)總結(jié)11附件12關(guān)鍵程序代碼12A、對話框部分:12B、自定義對話框:151 實(shí)驗(yàn)要求 掌握通用對話框和自定義對話框的使用;掌握圖形繪制函數(shù)的使用;掌握定時器的設(shè)置和定時消息響應(yīng)。2 實(shí)驗(yàn)過程及結(jié)果A、對話框部分:1. 研究第五章示例程序,理解通用對話框、自定義對話框的使用方式,為本次實(shí)驗(yàn)打基礎(chǔ)。2. 在自己的工作目錄中建立新工程。從已有的示例程序中選取適當(dāng)?shù)拇a,修改形成自己的框架。代碼整理過程中要特別注意代碼的格式。源文件名后綴必須是.cpp,不可以是.c3. 增加對WM_PAINT消息的處理,在窗口客戶區(qū)輸出文本。case WM_PAINT: hdc = BeginPaint (hWnd, &ps); GetClientRect (hWnd, &rect);DrawText (hdc, TEXT (歡迎使用), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);EndPaint (hWnd, &ps);return 0; 4. 增加菜單資源,要求至少包含“更改文本顏色”和“更改背景顏色”兩個命令。 5. 自定義一個簡單的對話框,該對話框內(nèi)至少有一個“選擇背景色”按鈕和一個靜態(tài)文本框(或Edit框)以及確定、取消兩個按鈕。該簡單對話框的處理邏輯為:點(diǎn)擊“選擇背景色”按鈕,彈出通用對話框選擇顏色,選擇完顏色后,將顏色值顯示到靜態(tài)文本框(或Edit框)中。再點(diǎn)擊該對話框的“確定”按鈕,可將結(jié)果顏色值通過變量交接給外部程序使用。6. 編寫上述自定義對話框的處理函數(shù)。switch(LOWORD(wParam)case IDM_SET_BKColor:if (DialogBox ( (HINSTANCE)GetWindowLong (hWnd, GWL_HINSTANCE), MAKEINTRESOURCE(IDD_DIALOG1), hWnd, ColorDlgProc)=IDOK)if (change)hold=(HBRUSH)GetWindowLong(hWnd,GCL_HBRBACKGROUND);SetClassLong(hWnd,GCL_HBRBACKGROUND,(LONG)CreateSolidBrush(g_Color);change=TRUE;if (change) DeleteObject(hold); InvalidateRect(hWnd,NULL,TRUE);case IDM_SET_SCRIPTColor:if (ChooseColor (&cc)crText=cc.rgbResult;InvalidateRect (hWnd, NULL, TRUE);7. 增加響應(yīng)菜單命令的代碼。 在“更改文本顏色”命令的響應(yīng)中調(diào)用通用顏色對話框選擇新的顏色。新選定的文本顏色用全局變量或靜態(tài)變量保存,在主窗口刷新消息(WM_PAINT)處理中用該顏色顯示原來輸出的文本。case IDC_BUT_SELCOLOR:SetDlgItemInt(hDlg, IDC_COLORVALUE, GetMyColor(hDlg), FALSE); return TRUE; case WM_PAINT: hdc = BeginPaint (hWnd, &ps); GetClientRect (hWnd, &rect);SetTextColor (hdc, crText);DrawText (hdc, TEXT (歡迎使用), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);EndPaint (hWnd, &ps);return 0; 更改背景顏色命令響應(yīng)中激活自定義對話框,對話框結(jié)束后,根據(jù)選擇的顏色,結(jié)合SetClassLong和CreateSolidBrush函數(shù),創(chuàng)建新的畫刷,并替換原來主窗口類使用的畫刷。if (change)hold=(HBRUSH)GetWindowLong(hWnd,GCL_HBRBACKGROUND);SetClassLong(hWnd,GCL_HBRBACKGROUND,(LONG)CreateSolidBrush(g_Color);change=TRUE;if (change) DeleteObject(hold); InvalidateRect(hWnd,NULL,TRUE);8. 刷新窗口看顯示結(jié)果是否符合要求(可在設(shè)置完顏色或畫刷之后直接用InvalidateRect函數(shù)激發(fā)WM_PAINT消息)。B、圖形繪制函數(shù)的使用1. 研習(xí)EASYGDI示例程序。查看各個GDI繪制函數(shù)的使用方法。2. 在自己的工作目錄中建立新工程。要求同2。3. 增加對WM_PAINT消息的處理,在其中使用:PolylinePolyPolylinePolygonPolyPolygon等函數(shù),注意在WM_PAINT消息中對HDC的獲取和釋放使用的函數(shù)是BeginPaint和EndPaint函數(shù)。 switch(iSelectionFunc)case IDM_FUNC_POLYLINE:ptDiamond0.x = 0;ptDiamond0.y = rect.bottom / 2;ptDiamond1.x = rect.right / 2;ptDiamond1.y = 0;ptDiamond2.x = rect.right;ptDiamond2.y = rect.bottom / 2;ptDiamond3.x = rect.right / 2;ptDiamond3.y = rect.bottom;ptDiamond4.x = 0;ptDiamond4.y = rect.bottom / 2;Polyline (hdc, ptDiamond, 5);break;case IDM_FUNC_POLYGON:if (GetPolyFillMode(hdc)=WINDING)SetPolyFillMode(hdc, ALTERNATE);elseSetPolyFillMode(hdc, WINDING);ptDiamond0.x = 0;ptDiamond0.y = rect.bottom / 3;ptDiamond1.x = rect.right;ptDiamond1.y = rect.bottom / 3;ptDiamond2.x = rect.right / 4;ptDiamond2.y = rect.bottom;ptDiamond3.x = rect.right / 2;ptDiamond3.y = 0;ptDiamond4.x = 3 * rect.right / 4;ptDiamond4.y = rect.bottom;Polygon (hdc, ptDiamond, 5);break;case IDM_FUNC_POLYPOLYLINE: ptDiamond20.x = 0;ptDiamond20.y = rect.bottom / 4;ptDiamond21.x = rect.right / 4;ptDiamond21.y = 0;ptDiamond22.x = rect.right;ptDiamond22.y = rect.bottom / 4;ptDiamond23.x = rect.right / 4;ptDiamond23.y = rect.bottom;ptDiamond24.x = 0;ptDiamond24.y = rect.bottom / 4; ptDiamond25.x = 0;ptDiamond25.y =3 * rect.bottom / 4;ptDiamond26.x =3 * rect.right / 4;ptDiamond26.y = 0;ptDiamond27.x = rect.right;ptDiamond27.y =3 * rect.bottom / 4;ptDiamond28.x = 3 *rect.right / 4;ptDiamond28.y = rect.bottom;ptDiamond29.x = 0;ptDiamond29.y = 3 *rect.bottom / 4;PolyPolyline (hdc, ptDiamond2, b,2);break;case IDM_FUNC_POLYPOLYGON:if (GetPolyFillMode(hdc)=WINDING)SetPolyFillMode(hdc, ALTERNATE);elseSetPolyFillMode(hdc, WINDING);ptDiamond30.x = 0;ptDiamond30.y = rect.bottom / 6;ptDiamond31.x = rect.right;ptDiamond31.y = rect.bottom /6;ptDiamond32.x = rect.right / 4;ptDiamond32.y = rect.bottom / 2;ptDiamond33.x = rect.right /2;ptDiamond33.y = 0;ptDiamond34.x = 3 * rect.right / 4;ptDiamond34.y = rect.bottom/2; ptDiamond35.x = 0;ptDiamond35.y = 2* rect.bottom / 3;ptDiamond36.x = rect.right;ptDiamond36.y = 2*rect.bottom /3;ptDiamond37.x = rect.right / 4;ptDiamond37.y = rect.bottom;ptDiamond38.x = rect.right /2;ptDiamond38.y = rect.bottom /2;ptDiamond39.x = 3 * rect.right / 4;ptDiamond39.y = rect.bottom;PolyPolygon (hdc, ptDiamond3, c,2);break;4. 按與Polyline相同的函數(shù)格式編寫自定義的折線繪制函數(shù),新函數(shù)命名為MyPolyline(用MoveToEx和LineTo實(shí)現(xiàn)),用該函數(shù)替換上一步代碼(11)中的Polyline,應(yīng)該獲得同樣的運(yùn)行結(jié)果。BOOL MyPolyline(HDC hdc,CONST POINT *lppt,int cPoints)MoveToEx(hdc,(*lppt).x,(*lppt).y,NULL);for (int i=1;icPoints;i+)LineTo(hdc,(*(lppt+i).x,(*(lppt+i).y);return TRUE;5. 編寫MyPolyPolyline和MyPolyPolygon,替換11中相應(yīng)的庫函數(shù),獲得同樣的運(yùn)行結(jié)果,以此加深對函數(shù)編寫、指針方式參數(shù)傳遞的理解。BOOL MyPolyPolyline(HDC hdc,CONST POINT *lppt,CONST DWORD *lpdwPolyPoints,int count)int i=0;for (int n=0;ncount;n+)MyPolyline(hdc,lppt+i,*(lpdwPolyPoints+n);i+=*(lpdwPolyPoints+n);return TRUE;BOOL MyPolyPolygon(HDC hdc,CONST POINT*lpPoints,CONST INT*lpPolyCounts,int nCount)PolyPolygon(hdc,lpPoints,lpPolyCounts,nCount);return TRUE;6. 一個工程多個.cpp文件的試驗(yàn):可嘗試將這些自定義函數(shù)用單獨(dú)的.cpp文件管理,并編寫相應(yīng)的頭文件,使這些函數(shù)可以在其他.cpp文件中被調(diào)用。7. 在調(diào)試完上述代碼的基礎(chǔ)上增加繪圖函數(shù)的使用,嘗試?yán)L制橢圓、矩形等圖形。case IDM_FUNC_RECTANGLE:Rectangle (hdc, rect.right / 4, rect.bottom / 4, 3 * rect.right / 4, 3 * rect.bottom / 4);break;case IDM_FUNC_ROUNDRECT:RoundRect (hdc, rect.right / 4, rect.bottom / 4, 3 * rect.right / 4, 3 * rect.bottom / 4, rect.right / 4, rect.bottom / 4);break;C、定時器使用8. 在WM_CREATE消息中增加設(shè)置定時器的代碼(用SetTimer函數(shù));case WM_CREATE: /創(chuàng)建消息SetTimer(hWnd,1,1000,NULL);return 0;9. 在窗口過程的消息處理代碼中增加WM_TIMER消息的處理,處理的內(nèi)容包括: 用SYSTEMTIME結(jié)構(gòu)定義一個時間結(jié)構(gòu)變量 用GetSysteTime函數(shù)或GetLocalTime函數(shù)取出系統(tǒng)時間或本地時間 將時間值打印成字符串(可以使用wsprintf函數(shù)或sprintf函數(shù)) 使用GetDC函數(shù)獲取HDC 用TextOut 或 DrawText函數(shù)輸出文本 用ReleaseDC函數(shù)釋放先前獲取的HDC上述操作完成后,能夠在窗口客戶區(qū)中看到不斷刷新的時間顯示。case WM_TIMER:GetLocalTime(&systemtime); InvalidateRect (hWnd, NULL, TRUE);return 0;case WM_PAINT: wsprintf(str, %s %u/%u/%u %u:%u:%u, day, systemtime.wYear, systemtime.wMonth, systemtime.wDay, systemtime.wHour, systemtime.wMinute, systemtime.wSecond, systemtime.wMilliseconds); DrawTextA(hdc,str,strlen(str),&rect,DT_CENTER|DT_SINGLELINE|DT_VCENTER); EndPaint (hWnd, &ps);10. 在WM_DESTROY消息中增加刪除已創(chuàng)建的定時器的代碼(用KillTimer函數(shù))case WM_DESTROY:KillTimer(hWnd,NULL);PostQuitMessage(0);return 0;3 問題及解決方案1 調(diào)用通用顏色對話框的時候要先添加到自定義顏色中才可使其變色,為使其更方便,將代碼ctText=crCustomColors0;改為ctText=cc.rgbResult;2 編寫MyPolyPolyline函數(shù)時,出現(xiàn)很多問題,先是在編寫函數(shù)時總是不能實(shí)現(xiàn)特定的功能,調(diào)用時忘記申明,最后編寫時仔細(xì)理解了LineTo和MoveToEx,利用這兩個函數(shù)先寫出了MyPolyline,然后在這基礎(chǔ)上編寫了MyPolyPolyline;3 MyPolyPolygon編寫時也同樣出現(xiàn)很多問題,沒法實(shí)現(xiàn)填充,最后直接調(diào)用的PolyPolygon,編寫時按照一個在頭文件中編寫,另一個新建一個cpp,理解函數(shù)的調(diào)用;#include BOOL MyPolyPolygon(HDC hdc,CONST POINT*lpPoints,CONST INT*lpPolyCounts,int nCount)PolyPolygon(hdc,lpPoints,lpPolyCounts,nCount);return TRUE;4 在定時器的編寫時運(yùn)行無錯,卻總是出現(xiàn)528528528,無法成功計時,此時#define Time 1;SetTimer(hWnd,1,1000,NULL);確認(rèn)無錯的情況下,將GetSystem(&systemtime);改為GetLocalTime(&systemtime);可成功計時;5 編寫時依舊存在括號漏寫,未定義等錯誤,在出現(xiàn)錯誤很多的情況下檢查括號是否漏寫,未定義的在定義的類型上要仔細(xì)考慮,不能把類型弄錯;4 實(shí)驗(yàn)總結(jié) 這次的實(shí)驗(yàn),總體來說不向以往幾次都是趕著上交之前才完成,有了一定的進(jìn)步吧。初次拿到題目時還是一樣的大量的題目,然而仔細(xì)的去一點(diǎn)點(diǎn)的研究,去做的時候發(fā)現(xiàn)也許有了上幾次的練習(xí)作為積淀,做起來也不向以前一樣剛開始毫無頭緒。在仔細(xì)的研究完實(shí)例程序后,按照特定的步驟和方法都能一步步的做出來。也許是有著實(shí)例程序的運(yùn)用,為我們提供了很多的借鑒及參考。這次的實(shí)驗(yàn)中花費(fèi)時間最長的是函數(shù)的編寫,因?yàn)橹雷约旱娜觞c(diǎn)一直在函數(shù)這邊,所以這次的練習(xí)在函數(shù)上下了很大的功夫。雖然說是簡單的函數(shù)編寫,但是我還是經(jīng)過了多次的推敲,嘗試,最終順利的實(shí)現(xiàn)時的卻十分開心。在一次次的實(shí)驗(yàn)中,看著一點(diǎn)點(diǎn)的進(jìn)步,從不妄想能夠一步登天,亦知自己還需努力,于是耐下心來一點(diǎn)點(diǎn)的去做,去積累,去領(lǐng)悟編程的思想。附件關(guān)鍵程序代碼A、對話框部分:#include #include #include resource.hBOOL InitWindow (HINSTANCE hInstance, int nCmdShow);LRESULT CALLBACK MainWndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);COLORREF GetMyColor(HWND hWnd)COLORREF cr = 0;CHOOSECOLOR cc;COLORREF crCustomColors16;/初始化CHOOSECOLOR結(jié)構(gòu)變量 cccc.lStructSize = sizeof (CHOOSECOLOR);cc.hwndOwner = hWnd;cc.hInstance = NULL;cc.rgbResult = RGB (0, 0, 0);cc.lpCustColors = crCustomColors;cc.Flags = CC_RGBINIT | CC_FULLOPEN;cc.lCustData = 0;cc.lpfnHook = NULL;cc.lpTemplateName = NULL;if (ChooseColor (&cc)cr = cc.rgbResult;return cr;COLORREF g_Color;BOOL CALLBACK ColorDlgProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)BOOL b; static int iColor; /用戶選擇的顏色 switch (message) case WM_INITDIALOG: /先設(shè)置為紅色 CheckRadioButton (hDlg, IDC_RADIO_RED, IDC_RADIO_GREEN, IDC_RADIO_RED); SetDlgItemInt (hDlg, IDC_COLORVALUE, RGB(255,0,0), FALSE); return FALSE; case WM_COMMAND:/處理對話框中各控件通知消息 switch (LOWORD (wParam) case IDOK: /響應(yīng)確認(rèn)按鈕,改寫文本顏色 iCurrentColor 為iColor g_Color = GetDlgItemInt(hDlg, IDC_COLORVALUE, &b, FALSE); /關(guān)閉對話框 EndDialog (hDlg, TRUE); /關(guān)閉對話框 return TRUE; case IDCANCEL: /響應(yīng)取消按鈕,直接關(guān)閉對話框 EndDialog (hDlg, FALSE); return TRUE;case IDC_BUT_SELCOLOR:SetDlgItemInt(hDlg, IDC_COLORVALUE, GetMyColor(hDlg), FALSE);return TRUE; case IDC_RADIO_RED: case IDC_RADIO_GREEN: case IDC_RADIO_BLUE: CheckRadioButton (hDlg, IDC_RADIO_RED, IDC_RADIO_BLUE, LOWORD (wParam);switch(LOWORD (wParam)case IDC_RADIO_RED: SetDlgItemInt (hDlg, IDC_COLORVALUE, RGB(255,0,0), FALSE); break;case IDC_RADIO_GREEN: SetDlgItemInt (hDlg, IDC_COLORVALUE, RGB(0,255,0), FALSE); break;case IDC_RADIO_BLUE: SetDlgItemInt (hDlg, IDC_COLORVALUE, RGB(0,0,255), FALSE); break; return TRUE; break; return FALSE;/結(jié)束 ColorDlgProcint WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow).LRESULT CALLBACK MainWndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)static HWND hWndEdit;static HMENU hMenuPop;HDC hdc;PAINTSTRUCT ps;RECT rect;static COLORREF crText = RGB (0, 0, 0);static BOOL change=FALSE;HBRUSH hold; static CHOOSECOLOR cc;static COLORREF crCustomColors16;switch (message)case WM_CREATE:/初始化結(jié)構(gòu) cccc.lStructSize = sizeof (CHOOSECOLOR);cc.hwndOwner = hWnd;cc.hInstance = NULL;cc.rgbResult = RGB (0, 0, 0);cc.lpCustColors = crCustomColors;cc.Flags = CC_RGBINIT | CC_FULLOPEN;cc.lCustData = 0;cc.lpfnHook = NULL;cc.lpTemplateName = NULL; hMenuPop = LoadMenu (LPCREATESTRUCT)lParam)-hInstance, IDR_MENU1); hMenuPop = GetSubMenu (hMenuPop, 1);return 0;case WM_SETFOCUS:SetFocus (hWndEdit);return 0;case WM_COMMAND: / 響應(yīng)編輯控件通知消息if (lParam)WORD w, W1, W2, W3;w = LOWORD (wParam);W1 = HIWORD(wParam);W2 = LOWORD (lParam);W3 = HIWORD(lParam);/編輯控件通知消息if (LOWORD (wParam) = 1) &(HIWORD(wParam) = EN_ERRSPACE | HIWORD (wParam) = EN_MAXTEXT)MessageBox (hWnd,TEXT (編輯控件內(nèi)存溢出), TEXT (菜單示例程序), MB_OK|MB_ICONSTOP);return 0;elseswitch(LOWORD(wParam);case IDM_SET_BKColor:if (DialogBox ( (HINSTANCE)GetWindowLong (hWnd, GWL_HINSTANCE), MAKEINTRESOURCE(IDD_DIALOG1), hWnd, ColorDlgProc)=IDOK)if (change)hold=(HBRUSH)GetWindowLong(hWnd,GCL_HBRBACKGROUND);SetClassLong(hWnd,GCL_HBRBACKGROUND,(LONG)CreateSolidBrush(g_Color);change=TRUE;if (change) DeleteObject(hold); InvalidateRect(hWnd,NULL,TRUE);case IDM_SET_SCRIPTColor:if (ChooseColor (&cc)crText=cc.rgbResult;InvalidateRect (hWnd, NULL, TRUE);return 0;return 0;case WM_PAINT: hdc = BeginPaint (hWnd, &ps); GetClientRect (hWnd, &rect);SetTextColor (hdc, crText);DrawText (hdc, TEXT (歡迎使用), -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); /函數(shù) MainWndProc 結(jié)束B、自定義對話框:#include #include #include resource.h#include mypolyolygon.hBOOL InitWindow (HINSTANCE hInstance, int nCmdShow);LRESULT CALLBACK WinProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);BOOL MyPolyline(HDC hdc,CONST POINT *lppt,int cPoints);.LRESULT CALLBACK WinProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)HDC hdc;PAINTSTRUCT ps;RECT rect;LOGPEN logpen;CONST DWORD b2=5,5;int c2=5,5; static HMENU hMenuPop;HMENU hMenu;static int iSelectionFunc=IDM_FUNC_POLYLINE;static int iSelectionPen=IDM_PEN_BLACK;static int iSelectionBrush=IDM_BRUSH_WHITE;static HPEN hRedDashdotPen, hBlueSolidPen;HPEN hOldPen;HBRUSH hNewBrush, hOldBrush;POINT ptDiamond5;POINT ptDiamond210;POINT ptDiamond310, pt;switch (message)case WM_CREATE:hRedDashdotPen = CreatePen (PS_DASHDOT, 1, RGB (255, 0, 0);/創(chuàng)建寬度為3的藍(lán)色畫筆logpen.lopnStyle = PS_SOLID;logpen.lopnWidth.x = 3;logpen.lopnColor = RGB (0, 0, 255); hBlueSolidPen = CreatePenIndirect (&logpen); hMenuPop = LoadMenu (LPCREATESTRUCT)lParam)-hInstance, IDR_MENU1);hMenuPop = GetSubMenu (hMenuPop, 1);return 0;case WM_COMMAND: hMenu = GetMenu (hWnd) ; switch (LOWORD (wParam) case IDM_FUNC_POLYPOLYLINE:case IDM_FUNC_POLYLINE:case IDM_FUNC_POLYGON:case IDM_FUNC_POLYPOLYGON:case IDM_FUNC_LINETO:case IDM_FUNC_RECTANGLE:case IDM_FUNC_ROUNDRECT:case IDM_FUNC_MYPOLYPOLYLINE:case IDM_FUNC_MYPOLYPOLYGON: CheckMenuItem(hMenu,iSelectionFunc,MF_UNCHECKED); iSelectionFunc=LOWORD(wParam); CheckMenuItem(hMenu,iSelectionFunc,MF_CHECKED); InvalidateRect(hWnd,NULL,TRUE); return 0;case IDM_PEN_BLACK:case IDM_PEN_REDDASHDOT:case IDM_PEN_BLUESOLID: CheckMenuItem(hMenu,iSelectionPen,MF_UNCHECKED);iSelectionPen=LOWORD(wParam); CheckMenuItem(hMenu,iSelectionPen,MF_CHECKED); InvalidateRect(hWnd,NULL,TRUE);return 0;case IDM_BRUSH_WHITE: case IDM_BRUSH_LTGRAY:case IDM_BRUSH_COLORSOLID: case IDM_BRUSH_CROSS:CheckMenuItem (hMenu, iSelectionBrush, MF_UNCHECKED) ; iSelectionBrush = LOWORD (wParam) ; CheckMenuItem (hMenu, iSelectionBrush , MF_CHECKED) ; InvalidateRect (hWnd, NULL, TRUE) ; return 0 ;case WM_KEYDOWN: switch (wParam)case VK_ESCAPE:MessageBox (hWnd, TEXT (ESC鍵按下了!), TEXT (鍵盤), MB_OK);break;return 0;case WM_RBUTTONDOWN: /鼠標(biāo)消息MessageBox (hWnd, TEXT (鼠標(biāo)右鍵按下了!), TEXT (鼠標(biāo)), MB_OK);return 0;case WM_PAINT: /客戶區(qū)重繪消息hdc = BeginPaint (hWnd, &ps); GetClientRect (hWnd, &rect); /選用新畫筆switch (iSelectionPen)case IDM_PEN_BLACK:hOldPen =(HPEN) SelectObject (hdc, GetStockObject(BLACK_PEN);break;case IDM_PEN_REDDASHDOT:hOldPen = (HPEN)SelectObject (hdc, hRedDashdotPen);break;case IDM_PEN_BLUESOLID:hOldPen =(HPEN) SelectObject (hdc, hBlueSolidPen);break; /選用新畫刷switch (iSelectionBrush)case IDM_BRUSH_WHITE:hOldBrush = (HBRUSH)SelectObject (hdc, GetStockObject(WHITE_BRUSH);break;case IDM_BRUSH_LTGRAY:hOldBrush =(HBRUSH) SelectObject (hdc, GetStockObject(LTGRAY_BRUSH);break;case IDM_BRUSH_COLORSOLID:/創(chuàng)建并選擇彩色實(shí)體畫刷hNewBrush =(HBRUSH) CreateSolidBrush (RGB (0, 255, 255);hOldBrush =(HBRUSH) SelectObject (hdc, hNewBrush);break;case IDM_BRUSH_CROSS:/創(chuàng)建并選擇綠色十字影線畫刷hNewBrush =(HBRUSH) CreateHatchBrush (HS_CROSS, RGB (0, 255, 0);hOldBrush = (HBRUSH)SelectObject (hdc, hNewBrush);break; switch(iSelectionFunc)case IDM_FUNC_POLYLINE:ptDiamond0.x = 0;ptDiamond0.y = rect.bottom / 2;ptDiamond1.x = rect.right / 2;ptDiamond1.y = 0;ptDiamond2.x = rect.right;ptDiamond2.y = rect.bottom / 2;ptDiamond3.x = rect.right / 2;ptDiamond3.y = rect.bottom;ptDiamond4.x = 0;ptDiamond4.y = rect.bottom / 2;Polyline (hdc, ptDiamond, 5);break;case IDM_FUNC_POLYGON:if (GetP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國豪華文胸行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030中國調(diào)壓器行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 2025-2030中國視覺檢測行業(yè)市場深度調(diào)研及前景趨勢與投資研究報告
- 2025-2030中國衣領(lǐng)凈洗滌劑行業(yè)市場需求分析及發(fā)展趨勢與投資價值研究報告
- 2025-2030中國血液制品行業(yè)市場發(fā)展現(xiàn)狀及發(fā)展趨勢與投資風(fēng)險研究報告
- 2025-2030中國融資租賃行業(yè)市場深度調(diào)研及發(fā)展戰(zhàn)略與投資前景預(yù)測研究報告
- 2025-2030中國熒光免疫分析行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 2025年陶瓷生產(chǎn)加工機(jī)械合作協(xié)議書
- 2025年節(jié)水灌溉設(shè)備項目建議書
- 2025年甘肅貨運(yùn)資格考試答案單選題
- 《加強(qiáng)基層工會組織建設(shè) 規(guī)范基層工會換屆選舉》課件
- 職工代表提案培訓(xùn)
- 軋鋼工技能理論考試題庫(含答案)
- 精益六西格瑪黃帶認(rèn)定考試題庫及答案
- 《回歸分析》 課件 第1章 緒論
- 2024年資格考試-對外漢語教師資格證考試近5年真題集錦(頻考類試題)帶答案
- 2024-2025學(xué)年上海黃浦區(qū)高三下學(xué)期第一次考試化學(xué)試題含解析
- 第十六屆全國水利職業(yè)院校技能大賽(智能節(jié)水系統(tǒng)設(shè)計與安裝)理論考試題庫(含答案)
- 甘肅省科研經(jīng)費(fèi)管理辦法
- 【課件收藏】幼兒園《古朗月行》教學(xué)課件
- 電氣自動化行業(yè)中的職業(yè)生涯規(guī)劃書
評論
0/150
提交評論