Visual C++——《可视化编程技术》实验报告——资源的应用—反弹的球
生活随笔
收集整理的這篇文章主要介紹了
Visual C++——《可视化编程技术》实验报告——资源的应用—反弹的球
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、實(shí)驗(yàn)?zāi)康暮鸵?/span>
熟悉資源在windows編程中的運(yùn)用
二、實(shí)驗(yàn)內(nèi)容
在窗口中顯示一個(gè)球,該球以與水平成45度夾角作直線運(yùn)動(dòng),當(dāng)遇到邊界時(shí),反彈回來(lái),仍與水平成45度角繼續(xù)運(yùn)動(dòng)。(課本p173? 7-12)
三、程序代碼
// 2018329621200_申屠志剛_可視化編程技術(shù)B_實(shí)驗(yàn)三.cpp : 定義應(yīng)用程序的入口點(diǎn)。 //#include "framework.h" #include "2018329621200_申屠志剛_可視化編程技術(shù)B_實(shí)驗(yàn)三.h"#define MAX_LOADSTRING 100 #define ID_TIMER 1 // 全局變量: HINSTANCE hInst; // 當(dāng)前實(shí)例 WCHAR szTitle[MAX_LOADSTRING]; // 標(biāo)題欄文本 WCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口類名// 此代碼模塊中包含的函數(shù)的前向聲明: ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); int APIENTRY wWinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInstance,_In_ LPWSTR lpCmdLine,_In_ int nCmdShow) {UNREFERENCED_PARAMETER(hPrevInstance);UNREFERENCED_PARAMETER(lpCmdLine);// TODO: 在此處放置代碼。// 初始化全局字符串LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);LoadStringW(hInstance, IDC_MY2018329621200B, szWindowClass, MAX_LOADSTRING);MyRegisterClass(hInstance);// 執(zhí)行應(yīng)用程序初始化:if (!InitInstance (hInstance, nCmdShow)){return FALSE;}HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MY2018329621200B));MSG msg;// 主消息循環(huán):while (GetMessage(&msg, nullptr, 0, 0)){if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)){TranslateMessage(&msg);DispatchMessage(&msg);}}return (int) msg.wParam; }// // 函數(shù): MyRegisterClass() // // 目標(biāo): 注冊(cè)窗口類。 // ATOM MyRegisterClass(HINSTANCE hInstance) {WNDCLASSEXW wcex;wcex.cbSize = sizeof(WNDCLASSEX);wcex.style = CS_HREDRAW | CS_VREDRAW;wcex.lpfnWndProc = WndProc;wcex.cbClsExtra = 0;wcex.cbWndExtra = 0;wcex.hInstance = hInstance;wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MY2018329621200B));wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_MY2018329621200B);wcex.lpszClassName = szWindowClass;wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));return RegisterClassExW(&wcex); }// // 函數(shù): InitInstance(HINSTANCE, int) // // 目標(biāo): 保存實(shí)例句柄并創(chuàng)建主窗口 // // 注釋: // // 在此函數(shù)中,我們?cè)谌肿兞恐斜4鎸?shí)例句柄并 // 創(chuàng)建和顯示主程序窗口。 // BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) {hInst = hInstance; // 將實(shí)例句柄存儲(chǔ)在全局變量中HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);if (!hWnd){return FALSE;}ShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);return TRUE; }// // 函數(shù): WndProc(HWND, UINT, WPARAM, LPARAM) // // 目標(biāo): 處理主窗口的消息。 // // WM_COMMAND - 處理應(yīng)用程序菜單 // WM_PAINT - 繪制主窗口 // WM_DESTROY - 發(fā)送退出消息并返回 // //LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {static int x = 0;static int y = 0;static int dx = 1;static int dy = 1;HBRUSH hBrush;HPEN hPen;switch (message){case WM_CREATE:{SetTimer(hWnd, ID_TIMER, 1, NULL);return(0);}case WM_COMMAND:{int wmId = LOWORD(wParam);// 分析菜單選擇:switch (wmId){case IDM_ABOUT:DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);break;case IDM_EXIT:DestroyWindow(hWnd);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}}break;case WM_TIMER:{switch (wParam){case ID_TIMER://每秒一次的處理 //UpdateWindow(hWnd);InvalidateRect(hWnd, NULL, 1);break;}break;}case WM_PAINT:{PAINTSTRUCT ps;HDC hdc = BeginPaint(hWnd, &ps);// TODO: 在此處添加使用 hdc 的任何繪圖代碼...SetMapMode(hdc, MM_ANISOTROPIC);//SetWindowExtEx(hdc, 15, 15, NULL); //設(shè)置窗口區(qū)域//SetViewportExtEx(hdc, 15, 10, NULL); //設(shè)置視口區(qū)域//SetViewportOrgEx(hdc, 120, 120, NULL); //設(shè)置視口原點(diǎn)RECT rect;//SetTimer(hWnd, ID_TIMER, 1000, NULL);GetClientRect(hWnd,&rect);if (x+20 >= rect.bottom) {dx = -1;}if (y+20 >= rect.right) {dy = -1;}if (x <= rect.top) {dx = 1;}if (y <= rect.left) {dy = 1;}x += dx;y += dy;hPen = (HPEN)GetStockObject(BLACK_PEN); //黑色畫(huà)筆hBrush = (HBRUSH)CreateSolidBrush(RGB(255, 255, 255)); //畫(huà)刷Ellipse(hdc, y, x, y + 20, x + 20); //繪制橢圓SelectObject(hdc, hBrush); //選擇畫(huà)刷SelectObject(hdc, hPen); //選擇畫(huà)筆EndPaint(hWnd, &ps);//UpdateWindow(hWnd);//Invalidate();}break;case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}return 0; }// “關(guān)于”框的消息處理程序。 INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {UNREFERENCED_PARAMETER(lParam);switch (message){case WM_INITDIALOG:return (INT_PTR)TRUE;case WM_COMMAND:if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL){EndDialog(hDlg, LOWORD(wParam));return (INT_PTR)TRUE;}break;}return (INT_PTR)FALSE; }四、運(yùn)行結(jié)果及分析
?
五、實(shí)驗(yàn)心得
1、使用API函數(shù)編制包含各種資源的Windows應(yīng)用程序;
2、 實(shí)現(xiàn)Windows應(yīng)用程序?qū)︽I盤與鼠標(biāo)的響應(yīng)。
3、 掌握菜單操作
4、 理解Windows的圖形設(shè)備接口;
5、 Windows應(yīng)用程序的程序調(diào)試;
6、 熟悉資源在windows編程中的運(yùn)用。
?
總結(jié)
以上是生活随笔為你收集整理的Visual C++——《可视化编程技术》实验报告——资源的应用—反弹的球的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MyBatis Plus——忽略某个实体
- 下一篇: Visual C++——获取屏幕大小、窗