Tải bản đầy đủ (.pdf) (6 trang)

Tài liệu Chương trình demo trên window docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (38.19 KB, 6 trang )

Nguyen Tri Tuan – Khoa CNTT – DHKHTN Tp.HCM 1/6
// ----------------------------------------------------------------------
// 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 2/6

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 3/6
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 4/6

// ----------------------------------------------------------------------
// 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 5/6
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

×