Saturday, 31 December 2011

Ayo bikin "Win32 Application" (2)

Game -> New Game (F2)


Tulisan ini merupakan lanjutan dari:
Ayo bikin "Win32 Application" (1)

Untuk menambahkan menu kita perlu membuat file tambahan yaitu file 'resource.h' dan 'resource.rc'. Langsung saja, klik File -> New -> Empty File. Ketika ditanya "Do you want to add this new file in the active project (has to be saved first)?", pilih Yes untuk menlanjutkan, lalu ketikan resource.h untuk nama file yang akan disimpan. Lanjutkan dengan memilih OK untuk Multiple Selection :

Gambar 1. Tambahkan file lainnya kedalam project.

lalu ketikan (file resource.h):

#define MENU_BUATAN 101

#define MENU_FILE_NEW 1001
#define MENU_FILE_EXIT 1002

#define MENU_HELP_ABOUT 1003

Tambahkan file baru, seperti langkah diatas dengan nama resource.rc. Kemudian isi seperti berikut :

#include "resource.h"

MENU_BUATAN  MENU
BEGIN
    POPUP "&File"
    BEGIN
        MENUITEM "&New", MENU_FILE_NEW
        MENUITEM "E&xit", MENU_FILE_EXIT
    END

    POPUP "&Help"
    BEGIN
        MENUITEM "Abou&t", MENU_HELP_ABOUT
    END
END


Untuk membuat struktur data menu kita perlu memasukkan key MENU sesudah variabel menu utama kita, yaitu MENU_BUATAN. Lalu dimulai dengan BEGIN untuk memulai, selanjutnya POPUP "&File" yang berarti ada nama File pada Menubar yang berisi submenu selanjutnya (dimulai dengan BEGIN, dan diakhiri dengan END). Sedangkan penambahan karakter '&' berarti menggunakan karakter selanjutnya untuk membuat shortkey pada menu tersebut (dalam hal ini huruf F). Untuk mencobanya tekan tombol Alt lalu akan muncul garis bawah pada setiap menu dalam Menubar. Shortkey ini tidak akan tercipta jika kita tidak menambahkan karakter '&' . Selanjutnya penambahan preprocessor seperti MENU_FILE_EXIT agar dapat menandakan menu tertentu saat diklik. Setelah selesai mempersiapkan kedua file tersebut, kita perlu menambahkan beberapa kode kedalam file utama (main.cpp):


...
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);

 // 1
 wincl.lpszMenuName = MAKEINTRESOURCE( MENU_BUATAN);                 /* My Menu :) */

    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */

...
 
/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
    {

 // 2
        case WM_COMMAND:
            switch( LOWORD(wParam))
            {
                case MENU_FILE_EXIT:
                    PostQuitMessage(WM_QUIT);
                    break;
    // 3
                case MENU_HELP_ABOUT:
                    MessageBox(NULL, "Selamat Anda telah membuat menu pada program anda. :D", "About This Program", MB_OK);
                    break;
            };
            return 0;

        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}

... 

Untuk dapat memasukkan menu buatan kita sendiri ke dalam Window, kita hanya perlu mengisi nilai pada variabel wincl (1). Tepatnya nilai wincl.lpszMenuName dengan MAKEINTRESOURCE( MENU_BUATAN). Dengan ini menu kita dapat tampil walau belum dapat menjalankan intruksi. Untuk itu kita perlu menambahkan WS_COMMAND dalam jantung utama program kita yaitu WindowProcedure() (2). Karena kita telah memasukkan nilai-nilai untuk setiap menu (seperti Exit = MENU_FILE_EXIT), kita cukup melakukan percabangan lalu menjalankan intruksi yang sesuai. Pada menu Help -> About , program akan menampilkan kotak pesan singkat yang berisi , hmm... Selamat! (3).

Akhir kata Selamat Tahun Baru 2012! ...

- krofz

2 comments:

  1. hello :) .

    It will be nice when you write your name! :D

    ReplyDelete

Maaf jika komentar anda lama terbitnya ^__^, penulis berusaha OL sesering mungkin. Komentar anda adalah semangat blog ini, dan juga semangat para blogger lainnya. You can use XHTML tags: <a href="" rel="link"> </a>, <strong> </strong>, <b> </b>, <em> </em>, <i> </i>.

Spesial character use :
&lt; for <
&gt; for >


Use Pastebin.com for alternative to display your code :) .

 

back to top

back to top