Visual C++——《可视化编程技术》课程考核
問(wèn)題描述?
工程文件的名字取” 學(xué)號(hào)_姓名_課內(nèi)考查”,工程文件中所有文件名均為“學(xué)號(hào)_姓名_課內(nèi)考查”(包括.cpp,.rc,.h等文件),否則按照“未完成任務(wù)”處理(10分)
顯示一個(gè)WINDOWS窗口,窗口的標(biāo)題為“學(xué)號(hào)_姓名_課內(nèi)考查”,例如“2018620101_張三_課內(nèi)考查”,演示錄屏?xí)r該窗口不能遮擋VC6.0窗口的左上側(cè)的文件列表,否則按未完成任務(wù)處理。(20分)
將光標(biāo)設(shè)定為自己名字中的姓氏的第一個(gè)字,要求藍(lán)色字體,紅色背景。(10分)。
將圖標(biāo)設(shè)定為自己名字中的最后一個(gè)字,要求綠色字體白色背景(10分)
在窗口的左半側(cè)顯示一組圖形并填充網(wǎng)格,如下圖(10分)
在窗口右半側(cè)顯示紅色正方形如下圖(10分)
創(chuàng)建一個(gè)菜單,其中有一個(gè)菜單項(xiàng)“文件”,“文件” 菜單項(xiàng)包含“創(chuàng)建”、 “刪除”、“退出”等項(xiàng)。選擇“創(chuàng)建”選項(xiàng)時(shí)則動(dòng)態(tài)創(chuàng)建一個(gè)菜單“編輯”,該“編輯”菜單項(xiàng)包含“繪圖”選項(xiàng),同時(shí)“創(chuàng)建”選項(xiàng)變?yōu)椴豢捎脿顟B(tài)。選擇“刪除”選項(xiàng)時(shí),則刪除菜單項(xiàng)“編輯”,同時(shí)“刪除”選項(xiàng)變?yōu)椴豢捎脿顟B(tài)。選擇 “退出”選項(xiàng)時(shí),退出程序(20分)
?
選擇“繪圖”選項(xiàng)時(shí),則在窗口中間顯示下方圖形(在下一頁(yè)),要求第5,第6題的顯示圖不能消失,否則該題不得分。(10分)
附加題(不計(jì)入總分,課內(nèi)做完正題的同學(xué)必須努力做該附加題,不能做其他事情,如果發(fā)現(xiàn)作弊行為,一同嚴(yán)肅處理):
在第7題的菜單最后添加彈出式菜單“變化”,包括菜單項(xiàng)“顏色變化”和“大小變化”,要求點(diǎn)擊“顏色變化”菜單項(xiàng)時(shí),第7題中的圓的顏色從黑色依次逐漸為紅色,綠色,藍(lán)色,最后到黑色,依次循環(huán)。當(dāng)點(diǎn)擊“大小變化”菜單項(xiàng)時(shí),第7題圖中圓及其外切圓角矩形的尺寸同比例逐漸變大直至變?yōu)樵瓉?lái)的尺寸的2倍后逐漸減小為原始大小然后做周期變化;當(dāng)點(diǎn)擊鼠標(biāo)左鍵時(shí),顏色變化暫停,再次點(diǎn)擊鼠標(biāo)左鍵時(shí)顏色變化繼續(xù)變化。當(dāng)點(diǎn)擊鼠標(biāo)右鍵時(shí),圓和外切圓尺寸變化暫停,再次點(diǎn)擊鼠標(biāo)右鍵時(shí),圓和外切圓尺寸接著變化;當(dāng)雙擊鼠標(biāo)右鍵時(shí),圓及其外切圓角矩形恢復(fù)原始狀態(tài),鼠標(biāo)左鍵單擊,右鍵單擊無(wú)效,直到從新進(jìn)行菜單操作后恢復(fù)有效。
源代碼?
// 2018329621200_申屠志剛_課內(nèi)考查.cpp : 定義應(yīng)用程序的入口點(diǎn)。 //#include "framework.h" #include "2018329621200_申屠志剛_課內(nèi)考查.h"#define MAX_LOADSTRING 100// 全局變量: 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); HMENU hmenu, hmenut,hmenuw; int flag = 0; 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_MY2018329621200, szWindowClass, MAX_LOADSTRING);MyRegisterClass(hInstance);// 執(zhí)行應(yīng)用程序初始化:if (!InitInstance (hInstance, nCmdShow)){return FALSE;}HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MY2018329621200));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_ICON));wcex.hCursor = LoadCursorFromFile(_T("POINTER.cur"));wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_MY2018329621200);wcex.lpszClassName = szWindowClass;wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_ICON));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;}hmenu = GetMenu(hWnd);DeleteMenu(hmenu, 0, MF_POPUP | MF_BYPOSITION);hmenut = CreateMenu();hmenuw=CreateMenu();AppendMenu(hmenuw, MF_ENABLED, ID_CREATE, _T("創(chuàng)建"));AppendMenu(hmenuw, MF_GRAYED, ID_DELETE, _T("刪除"));AppendMenu(hmenuw, MF_ENABLED, IDM_EXIT, _T("退出"));InsertMenu(hmenu, 0, MF_POPUP | MF_BYPOSITION, (UINT)hmenuw, _T("文件(&F)"));DrawMenuBar(hWnd);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) {PAINTSTRUCT ps;HDC hDC;HBRUSH hBrush;HPEN hPen;switch (message){case WM_COMMAND:{int wmId = LOWORD(wParam);// 分析菜單選擇:switch (wmId){case IDM_PAINT:flag = 1;InvalidateRect(hWnd, NULL, 1);break;case ID_CREATE:EnableMenuItem(hmenuw, ID_CREATE, MF_GRAYED);EnableMenuItem(hmenuw, ID_DELETE, MF_ENABLED);hmenut = CreateMenu();AppendMenu(hmenut, MF_ENABLED, IDM_PAINT, _T("繪圖"));InsertMenu(hmenu, 1, MF_POPUP | MF_BYPOSITION, (UINT)hmenut, _T("編輯(&E)"));DrawMenuBar(hWnd);break;case ID_DELETE: EnableMenuItem(hmenuw, ID_CREATE, MF_ENABLED);EnableMenuItem(hmenuw, ID_DELETE, MF_GRAYED);DeleteMenu(hmenu, 1,MF_BYPOSITION);DrawMenuBar(hWnd);break;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_PAINT:{hDC = BeginPaint(hWnd, &ps);// TODO: 在此處添加使用 hdc 的任何繪圖代碼...hBrush = CreateHatchBrush(HS_CROSS, RGB(255, 0, 0));//紅色網(wǎng)狀SelectObject(hDC, hBrush); //選擇畫刷hPen = CreatePen(PS_SOLID, 1, RGB(0, 0, 255)); //創(chuàng)建畫筆SelectObject(hDC, hPen); //選擇畫筆Pie(hDC, 213, 137, 288, 212, 240, 137, 260, 137); //畫一個(gè)圓餅Rectangle(hDC, 213, 212, 287, 250); //畫一個(gè)長(zhǎng)方形RoundRect(hDC, 213, 100, 287, 137, 20, 20); //畫一個(gè)圓角長(zhǎng)方形DeleteObject(hPen); //刪除畫筆DeleteObject(hBrush); //刪除畫刷hPen = (HPEN)GetStockObject(BLACK_PEN); //獲取系統(tǒng)定義的空畫筆SelectObject(hDC, hPen); //選擇畫筆hBrush = CreateSolidBrush( RGB(255, 0, 0));SelectObject(hDC, hBrush); //選擇畫刷Rectangle(hDC, 400, 100, 600, 300); //畫一個(gè)長(zhǎng)方形if (flag == 1) {DeleteObject(hBrush); //刪除畫刷hBrush = (HBRUSH)GetStockObject(NULL_BRUSH);SelectObject(hDC, hBrush); //選擇畫刷DeleteObject(hPen); //刪除畫筆hPen = (HPEN)GetStockObject(BLACK_PEN); //創(chuàng)建畫筆SelectObject(hDC, hPen); //選擇畫筆RoundRect(hDC, 700, 100, 800, 200, 20, 20); //畫一個(gè)圓角長(zhǎng)方形DeleteObject(hBrush); //刪除畫刷hBrush = (HBRUSH)GetStockObject(BLACK_BRUSH);SelectObject(hDC, hBrush); //選擇畫刷Pie(hDC, 700, 110, 800, 190, 0, 0, 0, 0); //畫一個(gè)圓餅//Arc(hDC, 700, 110, 800, 190, 0, 0, 0, 0);}DeleteObject(hPen); //刪除畫筆DeleteObject(hBrush); //刪除畫刷EndPaint(hWnd, &ps);}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é)果
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Visual C++——《可视化编程技术》课程考核的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Spring Boot——WebMvcC
- 下一篇: Visual C++——《可视化编程技术