




已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
面向對象編程技術實驗四實驗報告班 級:通信2 班學 號:201000800212姓 名: 王煜瑩時 間:2012-10-20目錄1 實驗要求32 實驗過程及結果3A、對話框部分:3B、圖形繪制函數(shù)的使用5C、定時器使用103 問題及解決方案114 實驗總結11附件12關鍵程序代碼12A、對話框部分:12B、自定義對話框:151 實驗要求 掌握通用對話框和自定義對話框的使用;掌握圖形繪制函數(shù)的使用;掌握定時器的設置和定時消息響應。2 實驗過程及結果A、對話框部分:1. 研究第五章示例程序,理解通用對話框、自定義對話框的使用方式,為本次實驗打基礎。2. 在自己的工作目錄中建立新工程。從已有的示例程序中選取適當?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. 自定義一個簡單的對話框,該對話框內至少有一個“選擇背景色”按鈕和一個靜態(tài)文本框(或Edit框)以及確定、取消兩個按鈕。該簡單對話框的處理邏輯為:點擊“選擇背景色”按鈕,彈出通用對話框選擇顏色,選擇完顏色后,將顏色值顯示到靜態(tài)文本框(或Edit框)中。再點擊該對話框的“確定”按鈕,可將結果顏色值通過變量交接給外部程序使用。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. 增加響應菜單命令的代碼。 在“更改文本顏色”命令的響應中調用通用顏色對話框選擇新的顏色。新選定的文本顏色用全局變量或靜態(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; 更改背景顏色命令響應中激活自定義對話框,對話框結束后,根據(jù)選擇的顏色,結合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. 刷新窗口看顯示結果是否符合要求(可在設置完顏色或畫刷之后直接用InvalidateRect函數(shù)激發(fā)WM_PAINT消息)。B、圖形繪制函數(shù)的使用1. 研習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實現(xiàn)),用該函數(shù)替換上一步代碼(11)中的Polyline,應該獲得同樣的運行結果。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中相應的庫函數(shù),獲得同樣的運行結果,以此加深對函數(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文件的試驗:可嘗試將這些自定義函數(shù)用單獨的.cpp文件管理,并編寫相應的頭文件,使這些函數(shù)可以在其他.cpp文件中被調用。7. 在調試完上述代碼的基礎上增加繪圖函數(shù)的使用,嘗試繪制橢圓、矩形等圖形。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消息中增加設置定時器的代碼(用SetTimer函數(shù));case WM_CREATE: /創(chuàng)建消息SetTimer(hWnd,1,1000,NULL);return 0;9. 在窗口過程的消息處理代碼中增加WM_TIMER消息的處理,處理的內容包括: 用SYSTEMTIME結構定義一個時間結構變量 用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 調用通用顏色對話框的時候要先添加到自定義顏色中才可使其變色,為使其更方便,將代碼ctText=crCustomColors0;改為ctText=cc.rgbResult;2 編寫MyPolyPolyline函數(shù)時,出現(xiàn)很多問題,先是在編寫函數(shù)時總是不能實現(xiàn)特定的功能,調用時忘記申明,最后編寫時仔細理解了LineTo和MoveToEx,利用這兩個函數(shù)先寫出了MyPolyline,然后在這基礎上編寫了MyPolyPolyline;3 MyPolyPolygon編寫時也同樣出現(xiàn)很多問題,沒法實現(xiàn)填充,最后直接調用的PolyPolygon,編寫時按照一個在頭文件中編寫,另一個新建一個cpp,理解函數(shù)的調用;#include BOOL MyPolyPolygon(HDC hdc,CONST POINT*lpPoints,CONST INT*lpPolyCounts,int nCount)PolyPolygon(hdc,lpPoints,lpPolyCounts,nCount);return TRUE;4 在定時器的編寫時運行無錯,卻總是出現(xiàn)528528528,無法成功計時,此時#define Time 1;SetTimer(hWnd,1,1000,NULL);確認無錯的情況下,將GetSystem(&systemtime);改為GetLocalTime(&systemtime);可成功計時;5 編寫時依舊存在括號漏寫,未定義等錯誤,在出現(xiàn)錯誤很多的情況下檢查括號是否漏寫,未定義的在定義的類型上要仔細考慮,不能把類型弄錯;4 實驗總結 這次的實驗,總體來說不向以往幾次都是趕著上交之前才完成,有了一定的進步吧。初次拿到題目時還是一樣的大量的題目,然而仔細的去一點點的研究,去做的時候發(fā)現(xiàn)也許有了上幾次的練習作為積淀,做起來也不向以前一樣剛開始毫無頭緒。在仔細的研究完實例程序后,按照特定的步驟和方法都能一步步的做出來。也許是有著實例程序的運用,為我們提供了很多的借鑒及參考。這次的實驗中花費時間最長的是函數(shù)的編寫,因為知道自己的弱點一直在函數(shù)這邊,所以這次的練習在函數(shù)上下了很大的功夫。雖然說是簡單的函數(shù)編寫,但是我還是經過了多次的推敲,嘗試,最終順利的實現(xià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結構變量 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: /先設置為紅色 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: /響應確認按鈕,改寫文本顏色 iCurrentColor 為iColor g_Color = GetDlgItemInt(hDlg, IDC_COLORVALUE, &b, FALSE); /關閉對話框 EndDialog (hDlg, TRUE); /關閉對話框 return TRUE; case IDCANCEL: /響應取消按鈕,直接關閉對話框 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;/結束 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:/初始化結構 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: / 響應編輯控件通知消息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 (編輯控件內存溢出), 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 結束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的藍色畫筆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: /鼠標消息MessageBox (hWnd, TEXT (鼠標右鍵按下了!), TEXT (鼠標), 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)建并選擇彩色實體畫刷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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025全球貸款卓越合同模板
- 2025采購合同范本協(xié)議書
- 2025買賣合同違約范文
- 《智能穿戴設備裝配工藝培訓課件》
- 2025臨時勞動合同
- 北京市政府投資信息化項目全流程用戶培訓規(guī)劃備案
- 2025年大型娛樂設施服務項目合作計劃書
- 甲苯管路施工方案
- 景觀苔蘚施工方案
- “營改增”新政要點及對房地產業(yè)影響
- 湖南省長沙市四大名校2024-2025學年高三2月月考語文試題(原卷版+解析版)
- 中華民族節(jié)日文化知到課后答案智慧樹章節(jié)測試答案2025年春云南大學
- 《政府采購管理研究的國內外文獻綜述》5500字
- 糖尿病護理查房提出問題
- 回收設施布局與優(yōu)化-深度研究
- 2024年國網(wǎng)浙江省電力有限公司招聘考試真題
- 微專題2 質量守恒定律的應用(解析版)
- 分析化學考試題(附參考答案)
- 廣東省廣州市越秀區(qū)2025年中考一模歷史模擬試題(含答案)
- 森林無人機滅火技術集成-深度研究
- 股份轉讓協(xié)議模板
評論
0/150
提交評論