#include <windows.h>
#include <stdio.h>
#define FILE_MENU_EXIT 1
#define FILE_MENU_INTERFACE 2
// Prototypes
LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
void AddMenus(HWND);
HMENU hMenu;
// MAIN
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR args, int ncmdshow)
{
WNDCLASSW wc = {0};
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hInstance = hInst;
wc.lpszClassName = L"myWindowClass";
wc.lpfnWndProc = WindowProcedure;
if ( ! RegisterClassW(&wc))
return -1;
// MessageBox(NULL, "Hello World!", "My first GUI", MB_OK);
CreateWindowW(L"myWindowClass", L"My Window", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100, 200, 640, 480, NULL, NULL, NULL, NULL);
MSG msg = {0};
while(GetMessage(&msg, NULL, NULL, NULL))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch (msg)
{
case WM_COMMAND:
switch(wp)
{
case FILE_MENU_INTERFACE:
printf("MENU INTERFACE CLICKED\n");
break;
case FILE_MENU_EXIT:
DestroyWindow(hWnd);
break;
}
break;
case WM_CREATE:
AddMenus(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProcW(hWnd,msg,wp,lp);
}
}
void AddMenus(HWND hWnd)
{
hMenu = CreateMenu();
HMENU hFileMenu = CreateMenu();
AppendMenu(hFileMenu, MF_STRING, FILE_MENU_INTERFACE, "Interface");
AppendMenu(hFileMenu, MF_SEPARATOR, NULL, NULL);
AppendMenu(hFileMenu, MF_STRING, FILE_MENU_EXIT, "Exit");
AppendMenu(hMenu, MF_POPUP, (UINT_PTR)hFileMenu, "File");
AppendMenu(hMenu, MF_STRING, NULL, "Help");
SetMenu(hWnd, hMenu);
}