Visual-C++課后習(xí)題參考答案

上傳人:燈火****19 文檔編號(hào):21523595 上傳時(shí)間:2021-05-03 格式:DOCX 頁數(shù):109 大?。?40.51KB
收藏 版權(quán)申訴 舉報(bào) 下載
Visual-C++課后習(xí)題參考答案_第1頁
第1頁 / 共109頁
Visual-C++課后習(xí)題參考答案_第2頁
第2頁 / 共109頁
Visual-C++課后習(xí)題參考答案_第3頁
第3頁 / 共109頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《Visual-C++課后習(xí)題參考答案》由會(huì)員分享,可在線閱讀,更多相關(guān)《Visual-C++課后習(xí)題參考答案(109頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 4-5參考答案: #include #include #include #include #define Pi 3.1415926 long WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam, LONG lParam);  // 消息處理函數(shù)聲明  . BOOL InitWindowsClass(HINSTANCE hInstance); 

2、 // 初始化窗口類聲明 BOOL InitWindows(HINSTANCE hInstance, int nCmdShow);//  初始化窗口聲明  . HWND hWndMain; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)  //主函數(shù) { MSG Message; if(!InitWindowsClass(hInstance

3、))  // 初始化窗口類  . return FALSE; if(!InitWindows(hInstance,nCmdShow))  //初始化窗口  . return FALSE; while(GetMessage(&Message,0,0,0)) { TranslateMessage(&Message);  //消息循環(huán)  . DispatchMessage(&Message); } return Message.wParam; } lo

4、ng WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam, LONG lParam)  //消息處理函數(shù)  . { HDC hDC; // 定義設(shè)備環(huán)境句柄 . HBRUSH hBrush; // 定義畫刷句柄 HPEN hPen; // 定義畫筆句柄 PAINTSTRUCT PtStr; // 定義包含繪圖信息的結(jié)構(gòu)體變量 double dfRadious0=100.0,dfRadious1; //定義外部和內(nèi)部正五邊形外接圓半徑 POINT

5、lpOuterPoints[5],lpInnerPoints[5];// 定義外 ,內(nèi)正五邊形點(diǎn)結(jié)構(gòu)數(shù)組 . POINT lpTriangle[3]; // 定義三角形點(diǎn)結(jié)構(gòu)數(shù)組 .  . dfRadious1=dfRadious0*sin(0.1*Pi)/sin(126.0/180*Pi);// 根據(jù)外圓半徑計(jì)算內(nèi)園半徑 . //計(jì)算內(nèi)外正五邊形的點(diǎn)坐標(biāo) . for(int i=0;i<5;i++) { lpOuterPoints[i].x=(long)(dfRadious0*cos(i*72.0/180*Pi)); lpOu

6、terPoints[i].y=(long)(dfRadious0*sin(i*72.0/180*Pi)); lpInnerPoints[i].x=(long)(dfRadious1*cos(i*72.0/180*Pi+36.0/180*Pi)); lpInnerPoints[i].y=(long)(dfRadious1*sin(i*72.0/180*Pi+36.0/180*Pi)); } switch(iMessage) { case WM_PAINT: //處理繪圖消息 . hDC=BeginPaint(hWnd,&PtStr); //得到設(shè)備環(huán)境句柄

7、 SetMapMode(hDC,MM_ANISOTROPIC); //設(shè)置映射模式 SetWindowOrgEx(hDC,-100,-100,NULL); //設(shè)置坐標(biāo)原點(diǎn) .  . hPen=CreatePen(PS_SOLID,1,RGB(255,0,0)); SelectObject(hDC,hPen);  //創(chuàng)新紅色畫筆 . // 將畫筆選入  . Polygon(hDC,lpOuterPoints,5);  //畫正五邊形  . // 填充正五邊形

8、的不同區(qū)域 . for(i=0;i<5;i++) { lpTriangle[0]=lpOuterPoints[i%5]; //生成圖形中的三角形區(qū)域的坐標(biāo) . lpTriangle[1]=lpInnerPoints[i%5]; lpTriangle[2]=lpOuterPoints[(i+1)%5]; //創(chuàng)新新畫刷 . hBrush=CreateSolidBrush(RGB(i*10,i*20,i*30)); SelectObject(hDC,hBrush); // 選入新畫刷 . Polygon(hDC,lpTriangle,3); // 畫三角形區(qū)域

9、 . lpTriangle[2]=lpInnerPoints[(i+4)%5]; //生成圖形中的三角形區(qū)域的坐標(biāo) . hBrush=CreateSolidBrush(RGB(i*40,i*30,i*20));// 創(chuàng)新畫刷 . SelectObject(hDC,hBrush); Polygon(hDC,lpTriangle,3);  //選入畫刷 . //畫三角形區(qū)域  . } hBrush=CreateSolidBrush(RGB(255,255,255));// 創(chuàng)新白畫刷 . SelectObject(hDC,hB

10、rush); // 選入畫刷 . Polygon(hDC,lpInnerPoints,5); // 畫中心的五邊形 . // 用不同種顏色的畫筆來繪制五角星 . MoveToEx(hDC,lpOuterPoints[0].x,lpOuterPoints[0].y,NULL); for(i=1;i<=5;i++) { hPen=CreatePen(PS_SOLID,1,RGB(0,i*51,0)); SelectObject(hDC,hPen); LineTo(hDC,lpOuterPoints[(i+2)%5].x,lpOuterPoints

11、[(i+2)%5].y); } hPen=(HPEN)(GetStockObject(PS_NULL)); DeleteObject(hPen); //刪除畫筆 . DeleteObject(hBrush); // 刪除畫刷 . EndPaint(hWnd,&PtStr); //結(jié)束繪圖 . return 0; case WM_DESTROY: // 處理關(guān)閉窗口信息 . PostQuitMessage(0); //向應(yīng)用程序發(fā)送 WM_QUIT 消息 . return 0; default: return(D

12、efWindowProc(hWnd,iMessage,wParam,lParam)); } } BOOL InitWindows(HINSTANCE hInstance, int nCmdShow) // 初始化 { HWND hWnd; // 定義窗口句柄 . hWnd=CreateWindow("Polygon", //窗口類名 . "五邊形 ", //窗口實(shí)例標(biāo)題 . WS_OVERLAPPEDWINDOW, // 窗口風(fēng)格 .帶邊框 ,標(biāo)題欄 ,系統(tǒng)菜 單和最大和最小按鈕 . CW_USEDEFAULT, // 窗口左上角

13、坐標(biāo) . 0, //窗口左上角坐標(biāo) . CW_USEDEFAULT, // 窗口寬度 0, //窗口高度 NULL, //無父窗口 . NULL, //無主菜單 . hInstance, //創(chuàng)建此窗口的應(yīng)用程序的當(dāng)前句柄 . NULL); //指向一個(gè)傳遞給窗口的參數(shù)值從指針 . //不使用該值 . if(!hWnd) //如果窗口創(chuàng)建失敗 ,返回 false. return FALSE; hWndMain=hWnd; //將窗口句柄傳遞給全局變量 . ShowWindow(hWnd,nCmdShow); //顯示窗口

14、 . UpdateWindow(hWnd); // 更新并繪制用戶區(qū) . return TRUE; } BOOL InitWindowsClass(HINSTANCE hInstance) //初始化窗口類 . { WNDCLASS WndClass; //定義窗口類 . WndClass.cbClsExtra=0; //窗口類無擴(kuò)展 . WndClass.cbWndExtra=0; //窗口實(shí)例無擴(kuò)展 . WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));//

15、窗口背景為白色 . WndClass.hCursor=LoadCursor(NULL,IDC_ARROW); // 窗口采用箭頭光標(biāo) . WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION); // 窗口的最小化圖標(biāo)為缺省圖標(biāo) . WndClass.hInstance=hInstance; //當(dāng)前實(shí)例句柄 . WndClass.lpfnWndProc=WndProc; // 窗口處理函數(shù) . WndClass.lpszClassName="Polygon"; //窗口類名 . WndClass.lpszMenuName

16、=NULL; //無菜單 WndClass.style=0; //窗口類型為缺省類型 . return RegisterClass(&WndClass); //返回注冊(cè)窗口的值 . } 4-6參考答案: #include #include #include #include #define Pi 3.1415926 long WINAPI WndProc(HWND hWnd, UINT iMessage, UI

17、NT wParam, LONG lParam);  // 消息處理函數(shù)聲明  . double dfTheta=0,dfRange=100.0;  //正弦曲線的角度變量  . long i=0,j=0; long lCentreX=0,lCentreY=0,lRadious=(long)(0.2*dfRange); //定義圓心坐標(biāo)和圓坐標(biāo)  . POINT lpSin[100]; //  定義正弦曲線的點(diǎn)坐標(biāo)  . int WINAPI WinMain

18、(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) //主函數(shù) { MSG Message; HWND hWnd;  // 定義消息變量 . //定義窗口句柄  . WNDCLASS WndClass;  //定義窗口類  . WndClass.cbClsExtra=0;  //無窗口類擴(kuò)展  . WndClass.cbWndExtra=0;  //無

19、窗口實(shí)例擴(kuò)展  . WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));// 背景為白色 . WndClass.hCursor=LoadCursor(NULL,IDC_ARROW); WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);  // 窗口采用箭頭光標(biāo) // 采用缺省圖標(biāo) .  . WndClass.hInstance=hInstance;  //當(dāng)前應(yīng)用程序句柄  . WndClass.lp

20、fnWndProc=WndProc;  // 窗口處理函數(shù)  . WndClass.lpszClassName="SIN"; WndClass.lpszMenuName=NULL;  //窗口類名稱 . //無窗口菜單  . WndClass.style=0;  //窗口類型為缺省類型  . if(!RegisterClass(&WndClass))  //注冊(cè)窗口  . { MessageBeep(0); return FALSE; } h

21、Wnd=CreateWindow("SIN", //窗口類名 . "4_6", //標(biāo)題名 . WS_OVERLAPPEDWINDOW, //帶標(biāo)題欄 ,最大和最小按鈕的窗口 CW_USEDEFAULT, //窗口左上角坐標(biāo) . 0, CW_USEDEFAULT, //采用缺省的寬度和高度 . 0,  . NULL, //無父窗口 . NULL, //無主菜單 . hInstance, //當(dāng)前實(shí)例句柄 . NULL); //不要此參數(shù) . ShowWindow(hWnd

22、,nCmdShow); //顯示窗口 . UpdateWindow(hWnd); //更新并繪制用戶區(qū) . for(int j=0;j<100;j++) // 生成正弦曲線的點(diǎn)坐標(biāo) . { lpSin[j].x=(long)(j*2*Pi/100*60); lpSin[j].y=(long)(dfRange*sin(j*2*Pi/100)); } while(GetMessage(&Message,0,0,0)) { TranslateMessage(&Message);  //消息循環(huán)  . Di

23、spatchMessage(&Message); } return Message.wParam; } long WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam, LONG lParam)  //消息處理函數(shù)  . { HDC hDC; HBRUSH hBrush; HPEN hPen; PAINTSTRUCT PtStr;  // 定義設(shè)備環(huán)境句柄 . // 定義畫刷句柄 // 定義畫筆句柄 // 定

24、義包含繪圖信息的結(jié)構(gòu)體變量 switch(iMessage) { case WM_PAINT: //處理繪圖消息 . hDC=BeginPaint(hWnd,&PtStr); //獲得設(shè)備環(huán)境指針 . SetWindowOrgEx(hDC,-200,-200,NULL); //設(shè)置原點(diǎn)坐標(biāo)為  (-200,-200). hPen=CreatePen(PS_DASH,1,RGB(255,0,0)); //創(chuàng)新畫筆 SelectObject(hDC,hPen); //選入畫筆 Polyline

25、(hDC,lpSin,100); //繪制正弦曲線  . . . if(i<=25) // 第一個(gè) 1/4周期 . { hPen=CreatePen(PS_DASH,1,RGB(255,0,0));// 創(chuàng)新紅筆 . hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,0,0));// 創(chuàng)新紅畫刷 . lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);// 計(jì)算半徑 . } else if(i<=50)// 第二個(gè) 1/4周期 .

26、 { hPen=CreatePen(PS_DASH,1,RGB(0,255,0));// 創(chuàng)新綠筆 . hBrush=CreateHatchBrush(HS_DIAGCROSS,RGB(0,255,0));// 創(chuàng)新綠刷 . lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);// 計(jì)算半徑 . } else if(i<=75)// 第三個(gè)周期 . { hPen=CreatePen(PS_DASH,1,RGB(0,0,255));// 創(chuàng)新藍(lán)筆 hBrush=CreateHatchBrus

27、h(HS_CROSS,RGB(0,0,255));// 創(chuàng)新藍(lán)刷 . lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);// 計(jì)算半徑 . } else//第四個(gè)周期 . { hPen=CreatePen(PS_DASH,1,RGB(255,255,0));// 創(chuàng)新黃筆 hBrush=CreateHatchBrush(HS_VERTICAL,RGB(255,255,0));// 創(chuàng)新黃刷 . lRadious=(long)(dfRange*0.2+i%25*dfRange*0.4/25);// 計(jì)算半徑 .

28、 } SelectObject(hDC,hBrush); //選入畫刷 . SelectObject(hDC,hPen); // 選入畫筆 . lCentreX=lpSin[i].x; //圓心 x坐標(biāo) . lCentreY=lpSin[i].y; //圓心 y坐標(biāo) . Ellipse(hDC,lCentreX-lRadious,lCentreY-lRadious, lCentreX+lRadious,lCentreY+lRadious); //畫圓 . i++; DeleteObject(hPen); //刪除畫筆 . Dele

29、teObject(hBrush); // 刪除畫刷 . EndPaint(hWnd,&PtStr); //刪除設(shè)備環(huán)境指針 . Sleep(100); //停 0.1秒 . if(i<100) InvalidateRect(hWnd,NULL,1); //刷新用戶區(qū) . return 0; case WM_DESTROY: //關(guān)閉窗口 . PostQuitMessage(0); return 0; default: return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } }

30、 4-7參考答案: #include #include #include #include #define Pi 3.1415926 long WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam, LONG lParam); // 消息處理函數(shù)聲明 . int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE h

31、PrevInstance, LPSTR lpCmdLine, int nCmdShow)  //主函數(shù) { MSG Message; HWND hWnd;  // 定義消息變量 . //定義窗口句柄  . WNDCLASS WndClass;  //定義窗口類  . WndClass.cbClsExtra=0;  //無窗口類擴(kuò)展  . WndClass.cbWndExtra=0;  //無窗口實(shí)例擴(kuò)展  . WndClass

32、.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));// 背景為白色 . WndClass.hCursor=LoadCursor(NULL,IDC_ARROW); WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);  // 窗口采用箭頭光標(biāo) // 采用缺省圖標(biāo) .  . WndClass.hInstance=hInstance;  //當(dāng)前應(yīng)用程序句柄  . WndClass.lpfnWndProc=WndProc;  //

33、窗口處理函數(shù)  . WndClass.lpszClassName="4_7"; WndClass.lpszMenuName=NULL;  //窗口類名稱 . //無窗口菜單  . WndClass.style=0;  //窗口類型為缺省類型  . if(!RegisterClass(&WndClass))  //注冊(cè)窗口  . { MessageBeep(0); return FALSE; } hWnd=CreateWindow("4_7", //

34、窗口類名 . "4_7", //標(biāo)題名 . WS_OVERLAPPEDWINDOW, //帶標(biāo)題欄 ,最大和最小按鈕的窗口 CW_USEDEFAULT, //窗口左上角坐標(biāo) . 0, 600, // 采用寬度為 450,高度為 600. 450, NULL, //無父窗口 . NULL, //無主菜單 . hInstance, //當(dāng)前實(shí)例句柄 . NULL); //不要此參數(shù) . ShowWindow(hWnd,nCmdShow); //顯示窗口 . UpdateWindow(hWnd); //更新并繪制用戶區(qū) .

35、 . while(GetMessage(&Message,0,0,0)) { TranslateMessage(&Message);  //消息循環(huán)  . DispatchMessage(&Message); } return Message.wParam; } long WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam, LONG lParam)  //消息處理函

36、數(shù)  . { HDC hDC; HBRUSH hBrush; HPEN hPen; PAINTSTRUCT PtStr;  // 定義設(shè)備環(huán)境句柄 . // 定義畫刷句柄 // 定義畫筆句柄 // 定義包含繪圖信息的結(jié)構(gòu)體變量 switch(iMessage) { case WM_PAINT: //處理繪圖消息 . hDC=BeginPaint(hWnd,&PtStr); //獲得設(shè)備環(huán)境指針 . SetMapMode(hDC,MM_ANISOTROPIC); //設(shè)置

37、映射模式 . SetWindowExtEx(hDC,300,300,NULL); //設(shè)置窗口區(qū)域 .邏輯單位 SetViewportExtEx(hDC,600,600,NULL); //設(shè)置視口區(qū)域 .物理單位  . . SetViewportOrgEx(hDC,0,0,NULL); //設(shè)置視口原點(diǎn)坐標(biāo)為 (0,0). 物理單位 . //繪制四個(gè)圓形 .(筆的樣式不同 ) hBrush = (HBRUSH)GetStockObject(NULL_BRUSH); //選擇空畫刷 . Select

38、Object(hDC,hBrush); hPen = CreatePen(PS_DASH,0,RGB(255,0,0));// 建立虛線樣式的紅色筆 SelectObject(hDC,hPen); //選入設(shè)備環(huán)境 . Ellipse(hDC,0,0,70,70); //畫圓 . hPen = CreatePen(PS_DASHDOT,0,RGB(0,255,0));// 建立點(diǎn)劃線樣式的綠色筆 SelectObject(hDC,hPen); Ellipse(hDC,25,0,95,70); //畫圓 . hPen = CreatePen(PS_DA

39、SHDOTDOT,0,RGB(0,0,255));// 建立雙點(diǎn)劃線樣式的藍(lán)色筆 SelectObject(hDC,hPen); Ellipse(hDC,0,25,70,95); hPen = CreatePen(PS_DOT,0,RGB(0,255,255));// 建立點(diǎn)線樣式的天藍(lán)色筆 SelectObject(hDC,hPen); Ellipse(hDC,25,25,95,95); //畫 6個(gè)圓角矩形 .(實(shí)畫刷樣式不同 .) hPen = (HPEN)GetStockObject(BLACK_PEN); SelectObject

40、(hDC,hPen); hBrush = (HBRUSH)GetStockObject(BLACK_BRUSH); //選擇黑畫刷 . SelectObject(hDC,hBrush); // 選入設(shè)備環(huán)境 . RoundRect(hDC,120,0,165,45,10,10); //畫圓角矩形 . hBrush = (HBRUSH)GetStockObject(DKGRAY_BRUSH); //選擇深灰畫刷 . SelectObject(hDC,hBrush); RoundRect(hDC,165,0,210,45,10,10);

41、hBrush = (HBRUSH)GetStockObject(GRAY_BRUSH); //選擇灰畫刷 . SelectObject(hDC,hBrush); RoundRect(hDC,210,0,255,45,10,10); hBrush = (HBRUSH)GetStockObject(HOLLOW_BRUSH); //選擇虛畫刷 . SelectObject(hDC,hBrush); RoundRect(hDC,120,45,165,90,10,10); hBrush = (HBRUSH)GetStockObject(LTGRAY_BRUS

42、H); //選擇亮灰畫刷 . SelectObject(hDC,hBrush); RoundRect(hDC,165,45,210,90,10,10); hBrush = (HBRUSH)GetStockObject(WHITE_BRUSH); //選擇白畫刷 . SelectObject(hDC,hBrush); RoundRect(hDC,210,45,255,90,10,10); //畫 6個(gè)矩形 .(畫刷陰影樣式不同 .) hPen = (HPEN)GetStockObject(BLACK_PEN); Sele

43、ctObject(hDC,hPen); hBrush = CreateHatchBrush(HS_BDIAGONAL,RGB(200,200,200));//  創(chuàng)建 45度左上右下 陰影線 SelectObject(hDC,hBrush); // 選入設(shè)備環(huán)境 . Rectangle(hDC,120,90,165,135); // 畫矩形 . hBrush = CreateHatchBrush(HS_DIAGCROSS,RGB(200,200,200));// SelectObject(hDC,hBrush);

44、Rectangle(hDC,165,90,210,135); hBrush = CreateHatchBrush(HS_FDIAGONAL,RGB(200,200,200));//  創(chuàng)建 45度交叉線創(chuàng)建 45度左下右上 陰影線  . SelectObject(hDC,hBrush); Rectangle(hDC,210,90,255,135); hBrush = CreateHatchBrush(HS_CROSS,RGB(200,200,200));// 創(chuàng)建垂直相交陰影線 . SelectObject(hDC,

45、hBrush); Rectangle(hDC,120,135,165,175); hBrush = CreateHatchBrush(HS_HORIZONTAL,RGB(200,200,200));// 創(chuàng)建水平陰影線 . SelectObject(hDC,hBrush); Rectangle(hDC,165,135,210,175); hBrush = CreateHatchBrush(HS_VERTICAL,RGB(200,200,200));// 創(chuàng)建垂直陰影線 . SelectObject(hDC,hBrush); Rectangle(hDC,

46、210,135,255,175); //畫餅圖。 hPen = (HPEN)GetStockObject(BLACK_PEN); SelectObject(hDC,hPen); hBrush = CreateSolidBrush(RGB(255,0,0));// 創(chuàng)建紅色畫刷。 SelectObject(hDC,hBrush); //選入設(shè)備環(huán)境。 Pie(hDC,10,100, //畫餅圖。 100,190, (int)(55+45*cos(2*Pi/3)),(int)(145+45*sin(2*Pi/3)), (int)(55+45*c

47、os(0)),(int)(145+45*sin(0))); hBrush = CreateSolidBrush(RGB(0,255,255));// 創(chuàng)建天藍(lán)色畫刷。 SelectObject(hDC,hBrush); //選入設(shè)備環(huán)境。 Pie(hDC,10,100, 100,190, (int)(55+45*cos(4*Pi/3)),(int)(145+45*sin(4*Pi/3)), (int)(55+45*cos(2*Pi/3)),(int)(145+45*sin(2*Pi/3))); hBrush = CreateSolidBrush(RGB(2

48、55,255,0));// 創(chuàng)建黃色畫刷。 SelectObject(hDC,hBrush); //選入設(shè)備環(huán)境。 Pie(hDC,10,100, 100,190, (int)(55+45*cos(2*Pi)),(int)(145+45*sin(2*Pi)), (int)(55+45*cos(4*Pi/3)),(int)(145+45*sin(4*Pi/3))); EndPaint(hWnd,&PtStr); //釋放環(huán)境指針。 return 0; case WM_DESTROY: //關(guān)閉窗口 . PostQuitMe

49、ssage(0); return 0; default: return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } } 4-8參考答案: #include #include #include #include #define Pi 3.1415926 long WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam,

50、 LONG lParam);  // 消息處理函數(shù)聲明  . int nNum = 0,nMaxNum = 20;  //nMaxNum  記錄了葉片循環(huán)一周中繪圖的次數(shù)  . //nNum 記錄了當(dāng)前的序數(shù)  . int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)  //主函數(shù) { MSG Message; H

51、WND hWnd;  // 定義消息變量 . //定義窗口句柄  . WNDCLASS WndClass;  //定義窗口類  . WndClass.cbClsExtra=0;  //無窗口類擴(kuò)展  . WndClass.cbWndExtra=0;  //無窗口實(shí)例擴(kuò)展  . WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));// 背景為白色 . WndClass.hCursor=LoadCurs

52、or(NULL,IDC_ARROW); WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);  // 窗口采用箭頭光標(biāo) // 采用缺省圖標(biāo) .  . WndClass.hInstance=hInstance;  //當(dāng)前應(yīng)用程序句柄  . WndClass.lpfnWndProc=WndProc;  // 窗口處理函數(shù)  . WndClass.lpszClassName="4_8"; WndClass.lpszMenuName=NULL;  //窗口類名稱 .

53、 //無窗口菜單  . WndClass.style=0;  //窗口類型為缺省類型  . if(!RegisterClass(&WndClass))  //注冊(cè)窗口  . { MessageBeep(0); return FALSE; } hWnd=CreateWindow("4_8", //窗口類名 . "4_8", //標(biāo)題名 . WS_OVERLAPPEDWINDOW, //帶標(biāo)題欄  ,最大和最小按鈕的窗口 

54、 . CW_USEDEFAULT, //窗口左上角坐標(biāo) 0, 600, // 采用寬度為 450,高度為 600. 450, NULL, //無父窗口 . NULL, //無主菜單 . hInstance, //當(dāng)前實(shí)例句柄 . NULL); //不要此參數(shù) . ShowWindow(hWnd,nCmdShow); //顯示窗口 . UpdateWindow(hWnd); //更新并繪制用戶區(qū) .  . while(GetMessage(&Message,0,0,0))

55、 { TranslateMessage(&Message);  //消息循環(huán)  . DispatchMessage(&Message); } return Message.wParam; } long WINAPI WndProc(HWND hWnd, UINT iMessage, UINT wParam, LONG lParam)  //消息處理函數(shù)  . { HDC hDC; HBRUSH hBrush; HPEN hPen; PAIN

56、TSTRUCT PtStr; int nCentreX,nCentreY;  // 定義設(shè)備環(huán)境句柄 . // 定義畫刷句柄 // 定義畫筆句柄 // 定義包含繪圖信息的結(jié)構(gòu)體變量 //定義 3個(gè)葉片的圓心的坐標(biāo) . double fAngle; switch(iMessage) { case WM_PAINT: //處理繪圖消息 . hDC=BeginPaint(hWnd,&PtStr); //獲得設(shè)備環(huán)境指針 . SetMapMode(hDC,MM_ANISOTROPIC); //設(shè)置映射模式 .

57、 SetWindowExtEx(hDC,400,300,NULL); //設(shè)置窗口區(qū)域 .邏輯單位 . SetViewportExtEx(hDC,600,450,NULL); //設(shè)置視口區(qū)域 .物理單位 . SetViewportOrgEx(hDC,300,200,NULL); //設(shè)置視口原點(diǎn)坐標(biāo)為 (300,200).物理單位  . //繪制外圓。 hPen = (HPEN)GetStockObject(BLACK_PEN); SelectObject(hDC,hPen);

58、Ellipse(hDC,-100,-100,100,100); //繪制風(fēng)車的葉片。 hBrush = CreateSolidBrush(RGB(255,0,0)); //畫紅色的葉片 . SelectObject(hDC,hBrush); fAngle = 2*Pi/nMaxNum*nNum; nCentreX = (int)(50*cos(fAngle)); nCentreY = (int)(50*sin(fAngle)); Pie(hDC,nCentreX-50,nCentreY-50, nCentreX+50,nCentr

59、eY+50, (int)(nCentreX+50*cos(fAngle)),(int)(nCentreY+50*sin(fAngle)), (int)(nCentreX+50*cos(fAngle+Pi)),(int)(nCentreY+50*sin(fAngle+Pi))); hBrush = CreateSolidBrush(RGB(255,255,0));  // 畫天藍(lán)色的葉片  . SelectObject(hDC,hBrush); nCentreX = (int)(50*cos(fAngle+2*Pi/3)); nCe

60、ntreY = (int)(50*sin(fAngle+2*Pi/3)); Pie(hDC,nCentreX-50,nCentreY-50, nCentreX+50,nCentreY+50, (int)(nCentreX+50*cos(fAngle+2*Pi/3)),(int)(nCentreY+50*sin(fAngle+2*Pi/3)), (int)(nCentreX+50*cos(fAngle+Pi+2*Pi/3)),(int)(nCentreY+50*sin(fAngle+Pi+2*Pi/3))); hBrush = CreateSolidBr

61、ush(RGB(0,255,255));  // 畫黃色的葉片  . SelectObject(hDC,hBrush); nCentreX = (int)(50*cos(fAngle+4*Pi/3)); nCentreY = (int)(50*sin(fAngle+4*Pi/3)); Pie(hDC,nCentreX-50,nCentreY-50, nCentreX+50,nCentreY+50, (int)(nCentreX+50*cos(fAngle+4*Pi/3)),(int)(nCentreY+50*sin(fAngle+

62、4*Pi/3)), (int)(nCentreX+50*cos(fAngle+Pi+4*Pi/3)),(int)(nCentreY+50*sin(fAngle+Pi+4*Pi/3))); nNum++; // 當(dāng)前序數(shù)加 1. Sleep(100); // 等待 0.1秒 . InvalidateRect(hWnd,NULL,1); // 重繪窗口區(qū)域  . EndPaint(hWnd,&PtStr); return 0;  //釋放環(huán)境指針。 case WM_DESTROY: //關(guān)閉

63、窗口 . PostQuitMessage(0); return 0; default: return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } } 4-9參考答案: #include #define ID_TIMER 1 LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPr

64、evInstance, LPSTR lpszCmdParam, int nCmdShow) { static char szAppName[] = "Timer1" ; HWND hwnd ; MSG msg ; WNDCLASS wndclass ; if (!hPrevInstance) { wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass

65、.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH)GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szAppName ;

66、RegisterClass (&wndclass) ; } hwnd = CreateWindow (szAppName, "Timer1 Demo Program", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL) ; while (!SetTimer (hwnd, ID_TIMER, 1000, NULL)) //產(chǎn)生一個(gè)特殊的時(shí)間值 / if (IDCANCEL == MessageBox (hwnd, "Too many clocks or timers!", szAppName, MB_ICONEXCLAMATION | MB_RETRYCANCEL)) //本題中, MB_ICONEXCLAMATION 表示對(duì)話框圖標(biāo)為驚嘆號(hào), //MB_RETRYCANCEL 表示對(duì)話框包含 RETRY 和 CANCEL 兩個(gè)按鈕 retu

展開閱讀全文
溫馨提示:
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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!