Generic App

Chia sẻ: Hoang Nhan | Ngày: | Loại File: PDF | Số trang:6

0
72
lượt xem
7
download

Generic App

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Application đơn giản trên Windows Sử dụng thư viện API của Windows

Chủ đề:
Lưu

Nội dung Text: Generic App

  1. // ---------------------------------------------------------------------- // Chương trình demo: Application đơn giản trên Windows // Sử dụng thư viện API của Windows // GENERIC_APP.CPP // Nguyen Tri Tuan - Khoa CNTT – ĐH.KHTN Tp.HCM // ---------------------------------------------------------------------- #include "stdafx.h" #include "resource.h" #define MAX_LOADSTRING 100 // Các biến toàn cục HINSTANCE hInst; // instance của application TCHAR szTitle[MAX_LOADSTRING]; // Tiêu đề của cửa sổ TCHAR szWindowClass[MAX_LOADSTRING]; // Tên lớp cửa sổ (window class name) // Prototype của các hàm xử lý ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM); // Hàm xử lý chính của application int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // Khởi tạo các biến chuỗi toàn cục LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_C, szWindowClass, MAX_LOADSTRING); // Đăng ký lớp cửa sổ cho ứng dụng MyRegisterClass(hInstance); // Khởi tạo ứng dụng if (!InitInstance (hInstance, nCmdShow)) { return FALSE; } // Khởi tạo bảng phím tắt (cho các menu item) MSG msg; HACCEL hAccelTable; hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_C); // Vòng lặp tiếp nhận và xử lý thông điệp while (GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return msg.wParam; } // --------------------------------------------------------------------- // Hàm: MyRegisterClass() // Đăng ký lớp cho cửa sổ chính (Frame window) // --------------------------------------------------------------------- ATOM MyRegisterClass(HINSTANCE hInstance) { WNDCLASSEX wcex; Nguyen Tri Tuan – Khoa CNTT – DHKHTN Tp.HCM 1/6
  2. wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = (WNDPROC)WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_C); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = (LPCSTR)IDC_C; wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL); return RegisterClassEx(&wcex); } // --------------------------------------------------------------------- // Hàm: InitInstance(HANDLE, int) // Khởi tạo cửa sổ giao diện chính cho ứng dụng // --------------------------------------------------------------------- BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { HWND hWnd; hInst = hInstance; // Store instance handle in our global variable hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if (!hWnd) { return FALSE; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE; } // --------------------------------------------------------------------- // Hàm: WndProc(HWND, unsigned, WORD, LONG) // Hàm nhận và xử lý thông điệp cho cửa sổ giao diện chính // --------------------------------------------------------------------- LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; TCHAR szHello[MAX_LOADSTRING]; LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING); switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Kiểm tra xem user chọn menu item nào: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About); break; case IDM_EXIT: Nguyen Tri Tuan – Khoa CNTT – DHKHTN Tp.HCM 2/6
  3. DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // Cập nhật lại nội dung màn hình client RECT rt; GetClientRect(hWnd, &rt); DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER); EndPaint(hWnd, &ps); break; case WM_DESTROY: // Kết thúc ứng dụng PostQuitMessage(0); break; default: // Gọi xử lý thông điệp mặc định return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } // --------------------------------------------------------------------- // Hàm: About(HWND, UINT, WPARAM, LPARAM) // Xử lý thông điệp cho cửa sổ hộp thoại About // --------------------------------------------------------------------- LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG: return TRUE; case WM_COMMAND: if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { EndDialog(hDlg, LOWORD(wParam)); return TRUE; } break; } return FALSE; } Nguyen Tri Tuan – Khoa CNTT – DHKHTN Tp.HCM 3/6
  4. // ---------------------------------------------------------------------- // File mô tả tài nguyên của ứng dụng (Resource of application) // Generic_App.rc // Nguyen Tri Tuan - Khoa CNTT – ĐH.KHTN Tp.HCM // ---------------------------------------------------------------------- #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #define APSTUDIO_HIDDEN_SYMBOLS #include "windows.h" #undef APSTUDIO_HIDDEN_SYMBOLS #include "resource.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // English (U.S.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) #endif //_WIN32 // ---------------------------------------------------------------------- // Mô tả các icon // ---------------------------------------------------------------------- IDI_C ICON DISCARDABLE "c.ICO" IDI_SMALL ICON DISCARDABLE "SMALL.ICO" // ---------------------------------------------------------------------- // Mô tả các menu // ---------------------------------------------------------------------- IDC_C MENU DISCARDABLE BEGIN POPUP "&File" BEGIN MENUITEM "E&xit", IDM_EXIT END POPUP "&Help" BEGIN MENUITEM "&About ...", IDM_ABOUT END END // ---------------------------------------------------------------------- // Mô tả các phím tắt (Accelerator) // ---------------------------------------------------------------------- IDC_C ACCELERATORS MOVEABLE PURE BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT END // ---------------------------------------------------------------------- // Mô tả các dialog // ---------------------------------------------------------------------- IDD_ABOUTBOX DIALOG DISCARDABLE 22, 17, 178, 39 STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU CAPTION "About" Nguyen Tri Tuan – Khoa CNTT – DHKHTN Tp.HCM 4/6
  5. FONT 8, "System" BEGIN ICON IDI_C,IDC_MYICON,14,9,20,20 LTEXT "Generic App. Version 1.0",IDC_STATIC,39,10,119,8, SS_NOPREFIX LTEXT "Copyright (C) 2004",IDC_STATIC,39,20,83,8 DEFPUSHBUTTON "OK",IDOK,138,25,30,11,WS_GROUP END #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 2 TEXTINCLUDE DISCARDABLE BEGIN "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" "#include ""windows.h""\r\n" "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" "#include ""resource.h""\r\n" "\0" END 3 TEXTINCLUDE DISCARDABLE BEGIN "\r\n" "\0" END 1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h\0" END #endif // APSTUDIO_INVOKED // ---------------------------------------------------------------------- // Mô tả các chuỗi (String table) // ---------------------------------------------------------------------- STRINGTABLE DISCARDABLE BEGIN IDS_APP_TITLE "Generic Application - API" IDS_HELLO "Hello World!" IDC_C "About Generic Application" END #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED Nguyen Tri Tuan – Khoa CNTT – DHKHTN Tp.HCM 5/6
  6. // ---------------------------------------------------------------------- // File header mô tả các hằng số của chương trình. // Generic_App.h // Sử dụng cho: Generic_App.cpp, Generic_App.rc // Nguyen Tri Tuan - Khoa CNTT – ĐH.KHTN Tp.HCM // ---------------------------------------------------------------------- // Used by C.RC // #define IDR_MAINFRAME 128 #define IDD_C_DIALOG 102 #define IDD_ABOUTBOX 103 #define IDS_APP_TITLE 103 #define IDM_ABOUT 104 #define IDM_EXIT 105 #define IDS_HELLO 106 #define IDI_C 107 #define IDI_SMALL 108 #define IDC_C 109 #define IDC_MYICON 2 #define IDC_STATIC -1 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 129 #define _APS_NEXT_COMMAND_VALUE 32771 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 110 #endif #endif Nguyen Tri Tuan – Khoa CNTT – DHKHTN Tp.HCM 6/6
Đồng bộ tài khoản