Visual C++——《可视化编程技术》课程考核
問題描述?
工程文件的名字取” 學號_姓名_課內考查”,工程文件中所有文件名均為“學號_姓名_課內考查”(包括.cpp,.rc,.h等文件),否則按照“未完成任務”處理(10分)
顯示一個WINDOWS窗口,窗口的標題為“學號_姓名_課內考查”,例如“2018620101_張三_課內考查”,演示錄屏時該窗口不能遮擋VC6.0窗口的左上側的文件列表,否則按未完成任務處理。(20分)
將光標設定為自己名字中的姓氏的第一個字,要求藍色字體,紅色背景。(10分)。
將圖標設定為自己名字中的最后一個字,要求綠色字體白色背景(10分)
在窗口的左半側顯示一組圖形并填充網格,如下圖(10分)
在窗口右半側顯示紅色正方形如下圖(10分)
創(chuàng)建一個菜單,其中有一個菜單項“文件”,“文件” 菜單項包含“創(chuàng)建”、 “刪除”、“退出”等項。選擇“創(chuàng)建”選項時則動態(tài)創(chuàng)建一個菜單“編輯”,該“編輯”菜單項包含“繪圖”選項,同時“創(chuàng)建”選項變?yōu)椴豢捎脿顟B(tài)。選擇“刪除”選項時,則刪除菜單項“編輯”,同時“刪除”選項變?yōu)椴豢捎脿顟B(tài)。選擇 “退出”選項時,退出程序(20分)
?
選擇“繪圖”選項時,則在窗口中間顯示下方圖形(在下一頁),要求第5,第6題的顯示圖不能消失,否則該題不得分。(10分)
附加題(不計入總分,課內做完正題的同學必須努力做該附加題,不能做其他事情,如果發(fā)現(xiàn)作弊行為,一同嚴肅處理):
在第7題的菜單最后添加彈出式菜單“變化”,包括菜單項“顏色變化”和“大小變化”,要求點擊“顏色變化”菜單項時,第7題中的圓的顏色從黑色依次逐漸為紅色,綠色,藍色,最后到黑色,依次循環(huán)。當點擊“大小變化”菜單項時,第7題圖中圓及其外切圓角矩形的尺寸同比例逐漸變大直至變?yōu)樵瓉淼某叽绲?倍后逐漸減小為原始大小然后做周期變化;當點擊鼠標左鍵時,顏色變化暫停,再次點擊鼠標左鍵時顏色變化繼續(xù)變化。當點擊鼠標右鍵時,圓和外切圓尺寸變化暫停,再次點擊鼠標右鍵時,圓和外切圓尺寸接著變化;當雙擊鼠標右鍵時,圓及其外切圓角矩形恢復原始狀態(tài),鼠標左鍵單擊,右鍵單擊無效,直到從新進行菜單操作后恢復有效。
源代碼?
// 2018329621200_申屠志剛_課內考查.cpp : 定義應用程序的入口點。 //#include "framework.h" #include "2018329621200_申屠志剛_課內考查.h"#define MAX_LOADSTRING 100// 全局變量: HINSTANCE hInst; // 當前實例 WCHAR szTitle[MAX_LOADSTRING]; // 標題欄文本 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í)行應用程序初始化: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() // // 目標: 注冊窗口類。 // 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) // // 目標: 保存實例句柄并創(chuàng)建主窗口 // // 注釋: // // 在此函數(shù)中,我們在全局變量中保存實例句柄并 // 創(chuàng)建和顯示主程序窗口。 // BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) {hInst = hInstance; // 將實例句柄存儲在全局變量中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) // // 目標: 處理主窗口的消息。 // // WM_COMMAND - 處理應用程序菜單 // 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));//紅色網狀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); //畫一個圓餅Rectangle(hDC, 213, 212, 287, 250); //畫一個長方形RoundRect(hDC, 213, 100, 287, 137, 20, 20); //畫一個圓角長方形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); //畫一個長方形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); //畫一個圓角長方形DeleteObject(hBrush); //刪除畫刷hBrush = (HBRUSH)GetStockObject(BLACK_BRUSH);SelectObject(hDC, hBrush); //選擇畫刷Pie(hDC, 700, 110, 800, 190, 0, 0, 0, 0); //畫一個圓餅//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; }// “關于”框的消息處理程序。 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; }?運行結果
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Visual C++——《可视化编程技术》课程考核的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot——WebMvcC
- 下一篇: Visual C++——《可视化编程技术