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



《Visual-C++課后習(xí)題參考答案》由會(huì)員分享,可在線閱讀,更多相關(guān)《Visual-C++課后習(xí)題參考答案(109頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、
4-5參考答案:
#include
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
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
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
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
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高考政治一輪復(fù)習(xí):統(tǒng)編版選擇性必修1-3【共3冊(cè)重點(diǎn)知識(shí)點(diǎn)匯總】
- 2025年高考政治一輪復(fù)習(xí):七冊(cè)教材重點(diǎn)考點(diǎn)匯總
- 2025年高考生物一輪復(fù)習(xí):高中生物必修+選必修5冊(cè)教材重點(diǎn)知識(shí)點(diǎn)匯總
- 2025政府工作報(bào)告要點(diǎn)速覽發(fā)展總體要求和政策取向
- 《哪吒2》與DEEPSEEK年輕力量的崛起助力中國突破重圍
- 建設(shè)金融強(qiáng)國做好金融五篇大文章的指導(dǎo)意見
- 落實(shí)高質(zhì)量發(fā)展要求如期完成既定目標(biāo)任務(wù)更新理念科學(xué)統(tǒng)籌切實(shí)增強(qiáng)規(guī)劃執(zhí)行的系統(tǒng)性整體性協(xié)同性
- 如何成為一名暖護(hù)暖護(hù)的概念與職責(zé)
- 藥品儲(chǔ)存與養(yǎng)護(hù)醫(yī)療護(hù)理藥品儲(chǔ)存藥品養(yǎng)護(hù)藥品常識(shí)
- 手術(shù)室職業(yè)暴露與防護(hù)診療護(hù)理等過程中被患者血液體液等污染自身皮膚或黏膜導(dǎo)致的感染
- XX企業(yè)中層管理者領(lǐng)導(dǎo)力提升培訓(xùn)課程
- 醫(yī)院新員工入職培訓(xùn)醫(yī)院新員工必備主要職業(yè)意識(shí)醫(yī)院新員工必備工作觀
- 人工智能技術(shù)介紹人工智能DeepSeek人工智能的未來展望與發(fā)展
- 養(yǎng)娃要有松弛感家庭教育讓孩子在具有松弛感的家庭里慢慢成長
- 醫(yī)院新員工入職培訓(xùn)醫(yī)院新員工必備主要職業(yè)意識(shí)