#include "windows.h"
#define FILE_MENU_NEW 1
#define FILE_MENU_OPEN 2
#define FILE_MENU_EXIT 3
#define FILE_MENU_SUB 4
// Gửi hàm xử lí message
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
void AddMenus(HWND);
void AddControl(HWND);
// Hàm Winmain()
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
HWND hwnd;
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.lpszClassName = TEXT("Window");
wc.hInstance = hInstance;
wc.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
wc.lpszMenuName = NULL;
wc.lpfnWndProc = WndProc;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
RegisterClass(&wc);
hwnd = CreateWindow(wc.lpszClassName, TEXT("Window"), WS_OVERLAPPEDWINDOW | WS_VISIBLE,
100, 100, 500, 500, NULL, NULL, hInstance, NULL);
ShowWindow(hwnd, nCmdShow); // Display windows
UpdateWindow(hwnd); // Update windows
while (GetMessage(&msg, NULL, 0, 0))
{
DispatchMessage(&msg);
TranslateMessage(&msg);
}
return (int)msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
/*Xử lý các thông điệp cần thiết với ứng dụng*/
switch (msg)
{
case WM_COMMAND:
switch (wParam)
{
case FILE_MENU_NEW:
MessageBeep(MB_OK);
break;
case FILE_MENU_OPEN:
MessageBeep(MB_OK);
break;
case FILE_MENU_EXIT:
//PostQuitMessage(0);
DestroyWindow(hwnd);
break;
}
case WM_CREATE:
AddMenus(hwnd);
AddControl(hwnd);
break;
case WM_PAINT:
/*Viết đoạn mã khi tô vẽ lại cửa sổ*/
// hdc = BeginPaint ( hwnd, &ps);
//GetClientRect (hwnd, &rect);
//DrawText(hdc, "Hello", -1, &rect,DT_SINGLELINE| DT_CENTER| DT_VCENTER);
//EndPaint ( hwnd, &ps);
break;
case WM_SIZE:
/*Viết đoạn mã khi kích thước cửa sổ thay đổi*/
break;
case WM_DESTROY:
/*Cửa sổ bị đóng*/
PostQuitMessage(0);
break;
}
return DefWindowProc(hwnd, msg, wParam, lParam);
}
void AddMenus(HWND hwnd)
{
HMENU hMenu = CreateMenu();
HMENU hFileMenu = CreateMenu();
HMENU hSubMenu1 = CreateMenu();
AppendMenu(hFileMenu, MF_POPUP, (UINT_PTR)hSubMenu1, "New");
AppendMenu(hFileMenu, MF_STRING, FILE_MENU_OPEN, "Open");
AppendMenu(hFileMenu, MF_SEPARATOR, NULL, NULL);
AppendMenu(hFileMenu, MF_STRING, FILE_MENU_EXIT, "Exit");
AppendMenu(hSubMenu1, MF_STRING, FILE_MENU_SUB, "Open Folder");
AppendMenu(hSubMenu1, MF_STRING, NULL, "Open File");
AppendMenu(hMenu, MF_POPUP, (UINT_PTR)hFileMenu, "File");
AppendMenu(hMenu, MF_STRING, 2, "View");
SetMenu(hwnd, hMenu);
}
void AddControl(HWND hwnd)
{
CreateWindow(TEXT("static"), TEXT("Google"), WS_VISIBLE | WS_CHILD | SS_CENTER, 200, 100, 100, 50, hwnd, NULL, NULL, NULL);
CreateWindow(TEXT("edit"),TEXT("..."), WS_VISIBLE | WS_CHILD|ES_AUTOHSCROLL, 200, 152, 100, 50, hwnd, NULL, NULL, NULL);
}