日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Visual C++——《可视化编程技术》实验报告——资源的应用

發布時間:2024/10/5 c/c++ 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Visual C++——《可视化编程技术》实验报告——资源的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、實驗目的和要求

1?使用API函數編制包含各種資源的Windows應用程序;

2 實現Windows應用程序對鍵盤與鼠標的響應。

二、實驗內容

1、問題描述:

  • 創建一個菜單,其中有三個菜單項,分別為文件計算幫助,其中,文件菜單項包含打開保存畫圖退出等菜單選項;計算菜單包含總和方差均方根等菜單選項;幫助菜單項包含計算總和幫助計算方差幫助計算均方根幫助以及關于等項
  • 若單擊畫圖菜單項,則繪出P103圖形。
  • 若在用戶區內按下鼠標左鍵,則動態創建一個包括刪除計算總和添加計算平均值修改計算均方差三個菜單項的彈出式菜單,由此菜單控制計算菜單中菜單項刪除、添加與修改。(要求新的彈出式菜單開始時不可用,按下右鍵后變為可用。) 單擊修改計算均方差菜單項后,計算菜單下的計算均方差項改為線性擬合,單擊添加計算平均值菜單項后,計算菜單中添加上了計算平均值菜單項
  • 將光標設定為自己名字中的某個字、圖標設定為自己名字中的另一個字。

2、應用程序中所用到的資源、消息,簡介主要函數的功能;

3、程序實現??????

4、操作結果

三、程序代碼

// 2018329621200_申屠志剛_可視化編程技術B_實驗二.cpp : 定義應用程序的入口點。 //#include "framework.h" #include "2018329621200_申屠志剛_可視化編程技術B_實驗二.h"#define MAX_LOADSTRING 100// 全局變量: HINSTANCE hInst; // 當前實例 WCHAR szTitle[MAX_LOADSTRING]; // 標題欄文本 WCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口類名// 此代碼模塊中包含的函數的前向聲明: 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, haddmenu,hmenut; 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);// 執行應用程序初始化:if (!InitInstance (hInstance, nCmdShow)){return FALSE;}HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MY2018329621200B));MSG msg;// 主消息循環:while (GetMessage(&msg, nullptr, 0, 0)){if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)){TranslateMessage(&msg);DispatchMessage(&msg);}}return (int) msg.wParam; }// // 函數: 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_MY2018329621200B));wcex.hCursor = LoadCursorFromFile(_T("POINTER.cur"));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); }// // 函數: InitInstance(HINSTANCE, int) // // 目標: 保存實例句柄并創建主窗口 // // 注釋: // // 在此函數中,我們在全局變量中保存實例句柄并 // 創建和顯示主程序窗口。 // 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);haddmenu = CreateMenu();hmenut = CreateMenu();// hmenut = LoadMenu(hInstance, _T("IDR_MENUCAL"));AppendMenu(hmenut, MF_ENABLED, ID_32774, _T("求和"));AppendMenu(hmenut, MF_ENABLED, ID_32776, _T("方差"));AppendMenu(hmenut, MF_ENABLED, ID_32776, _T("均方根"));InsertMenu(hmenu, 1, MF_POPUP | MF_BYPOSITION, (UINT)hmenut, _T("計算(&C)"));DrawMenuBar(hWnd);ShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);return TRUE; }// // 函數: WndProc(HWND, UINT, WPARAM, LPARAM) // // 目標: 處理主窗口的消息。 // // WM_COMMAND - 處理應用程序菜單 // WM_PAINT - 繪制主窗口 // WM_DESTROY - 發送退出消息并返回 // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {switch (message){case WM_COMMAND:{int wmId = LOWORD(wParam);PAINTSTRUCT ps;HDC hDC = BeginPaint(hWnd, &ps);// TODO: 在此處添加使用 hdc 的任何繪圖代碼...HPEN hPen;HBRUSH hBrush;// 分析菜單選擇:switch (wmId){case IDM_PAINT:hPen = CreatePen(PS_DASHDOT, 1, RGB(0, 255, 0));//自定義綠筆//所畫線條為點劃線,寬度為1hBrush = CreateHatchBrush(HS_CROSS, RGB(255, 0, 0));//紅色網狀SetMapMode(hDC, MM_TEXT); //設置映射模式,用缺省模式//使用當前缺省畫筆、畫刷進行繪圖Rectangle(hDC, 130, 60, 270, 200); //繪制矩形,并填充SelectObject(hDC, hBrush); //更新畫刷,用“紅色網狀”Ellipse(hDC, 130, 70, 270, 190);//繪制橢圓,并填充 SelectObject(hDC, hPen); //更新畫筆,選“自定義綠筆”MoveToEx(hDC, 100, 130, NULL); //使用當前畫筆繪制軸線LineTo(hDC, 300, 130);MoveToEx(hDC, 200, 30, NULL);LineTo(hDC, 200, 230);EndPaint(hWnd, &ps);break;case IDM_ABOUT:DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);break;case ID_DELCAL:break; case ID_ADDCAL:AppendMenu(hmenut, MF_ENABLED, ID_AGE, _T("計算平均值"));DrawMenuBar(hWnd);break; case ID_MOVECAL:ModifyMenu(hmenut, 2, MF_BYPOSITION, ID_32776, _T("線性擬合"));DrawMenuBar(hWnd);break;case IDM_EXIT:DestroyWindow(hWnd);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}}break;case WM_LBUTTONDOWN:AppendMenu(haddmenu, MF_GRAYED, ID_DELCAL, _T("刪除計算總和"));AppendMenu(haddmenu, MF_GRAYED, ID_ADDCAL, _T("添加計算平均值"));AppendMenu(haddmenu, MF_GRAYED, ID_MOVECAL, _T("修改計算均方差"));InsertMenu(hmenu,2,MF_POPUP|MF_BYPOSITION,(UINT)haddmenu,_T("編輯(&E)"));DrawMenuBar(hWnd);break;case WM_RBUTTONDOWN:EnableMenuItem(haddmenu, ID_DELCAL, MF_ENABLED);EnableMenuItem(haddmenu, ID_ADDCAL, MF_ENABLED);EnableMenuItem(haddmenu, ID_MOVECAL, MF_ENABLED);break;case WM_PAINT:{}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; }

?

四、運行結果及分析

?

五、實驗心得

1 使用API函數編制包含各種資源的Windows應用程序;

2 實現Windows應用程序對鍵盤與鼠標的響應。

3 掌握菜單操作

4 理解Windows的圖形設備接口;

5 Windows應用程序的程序調試。

?

總結

以上是生活随笔為你收集整理的Visual C++——《可视化编程技术》实验报告——资源的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。