Menampilkan Menubar

Untuk menampilkan menubar kita perlu membuat menu dengan CreateMenu. Kemudian, kita perlu menyusun isi menunya terlebih dahulu dengan Append menu sebelum menggunakan SetMenu untuk menampilkan menu yang sudah kita susun sebagai menubar. Menu yang kita buat bisa berisi "popup menu" atau string tanpa popmenu. Parameter kedua dalam AppendMenu bisa berisi argumen sesuai kegunaan dari argumen parameter ketiga. Untuk membuat "menu yang berisi popup menu" kita perlu menggunakan MF_POPUP.

#include <windows.h>

LRESULT CALLBACK wndproc(
  HWND hwnd,
  UINT pesan,
  WPARAM wParam,
  LPARAM lParam
);


int __stdcall WinMain(HINSTANCE hinst, HINSTANCE hprev, char *cmdl, int cmds){
HWND wind;
MSG msg;
WNDCLASS wcls={0};
HMENU hmenu, pmenu;
    wcls.hInstance=hinst;
    wcls.hbrBackground=GetSysColorBrush(COLOR_3DFACE);
    wcls.lpszClassName=TEXT("windowku");
    wcls.lpfnWndProc=wndproc;
    wcls.hCursor=LoadCursor(0,IDC_ARROW);

    RegisterClass(&wcls);

    wind=CreateWindowEx(0, TEXT("windowku"), "Programku", WS_VISIBLE | WS_OVERLAPPEDWINDOW , 400, 200, 198, 300, 0, 0, hinst, 0);

    hmenu=CreateMenu();
    pmenu=CreateMenu();
    AppendMenu(pmenu, MF_STRING, 101, "FILE");
    AppendMenu(pmenu, MF_STRING, 102, "EDIT");

    AppendMenu(hmenu, MF_POPUP, (UINT_PTR)pmenu, "MENUKU");
    SetMenu(wind, hmenu);

    while(GetMessage(&msg, NULL, 0, 0)){
        DispatchMessage(&msg);
        TranslateMessage(&msg);
    }

    return msg.wParam;
}

LRESULT CALLBACK wndproc(HWND hwnd, UINT pesan, WPARAM wParam, LPARAM lParam){
int x;
    switch(pesan){
        case WM_COMMAND:
            x=LOWORD(wParam);
            if(x==101){
                MessageBox(hwnd, "101", "Menu", MB_OK);
            }else if(x==102){
                MessageBox(hwnd, "102", "Menu", MB_OK);
            }
            break;
        case WM_CLOSE:
            PostQuitMessage(0);
            break;

    }

    return DefWindowProc(hwnd, pesan, wParam, lParam);
}



Sama dengan saat penekanan tombol, penekanan menubar juga memicu event WM_COMMAND. Kita bisa mendapatkan ID dari menu yang ditekan dengan LOWORD(wPAram) sebelum menentukan apa yang akan kita lakukan. Pada contoh di atas, messagebox akan ditampilkan saat menu ditekan.