Categories: Bahasa C

Membuat Aplikasi Windows GUI dengan Bahasa C (Part 2 : Tombol)

Hello Sahabat Anak Kendali.

Pada posting sebelumnya kita sudah membuat aplikasi windows sederhana dengan Bahasa C, maka dari itu saya akan melajutkan tutorialnya

kali ini saya akan memberikan tutorial cara membuat tombol atau biasa dikenal dengan sebutan button untuk aplikasi windows atau biasa kita kenal file yang berformat .exe

pada dasarnya button termasuk child window atau jendela kecil. jadi untuk membuat tombol mirip seperti membuat window dengan memberikan “button” pada nama kelasnya. berikut contoh kodenya

HWND tombol = CreateWindow (
“button”, //nama kelas
“tombol”, //tulisan pada tombol
WS_VISIBLE | WS_CHILD | WS_BORDER, //style
260, 200, //posisi
60, 40, //ukuran
hwnd, //window induk
(HMENU) 1, //id tombol
NULL, NULL);

nah apa itu id tombol? ketika kita menekan tombol yang kita buat, windows akan memanggil message WM_COMMAND dan pada wparam akan muncul id tombol kita dan disana kita dapat memberikan fungsi ketika kita menekan tombol tersebut

Example :

misal kita buat tombol dan ketika kita menekannya akan ada pesan bahwa kita menekan tombol

LRESULT CALLBACK WndProc (HWND   hwnd, UINT   msg, 
WPARAM wParam, LPARAM lParam)
{
    switch (msg)
    {
        //ketika window dibuat
        case WM_CREATE :
        {
            HWND tombol1 = CreateWindow (“button”, “tombol 1”, 
            WS_VISIBLE | WS_CHILD | WS_BORDER, 270, 200, 
            100, 40, hwnd, (HMENU) 1, NULL, NULL);
            HWND tombol2 = CreateWindow (“button”, “tombol 2”, 
            WS_VISIBLE | WS_CHILD | WS_BORDER, 270, 240, 
            100, 40, hwnd, (HMENU) 2, NULL, NULL);
            break;
        }
        case WM_COMMAND :
            switch (LOWORD (wParam))
            {
                //id tombol
                case 1 :
                    MessageBox (hwnd, “Anda Menekan tombol 1”, “test.exe”, MB_OK);
                    break;
                case 2 :
                    MessageBox (hwnd, “Anda Menekan tombol 2”, “test.exe”, MB_OK);
                    break;
            }
            break;
        //ketika window di tutup
        case WM_CLOSE :
            DestroyWindow (hwnd) ;
            break ;
        case WM_DESTROY :
            PostQuitMessage (0) ;
            break ;
        default :
            return DefWindowProc (hwnd, msg, wParam, lParam) ;
    }
    return 0 ;
}

Penjelasan : jadi kita membuat tombol pada WM_CREATE dan ketika kita menekan tombol akan ada message WM_COMMAND, jika kita menekan tombol 1 maka wparam = 1 sedangkan jika kita menekan tombol 2 maka wparam = 2 sesuai dengan tombol id nya

berikut kode lengkapnya

#include <windows.h>

LRESULT CALLBACK WndProc (HWND   hwnd, UINT   msg, 
WPARAM wParam, LPARAM lParam)
{
    switch (msg)
    {
        //ketika window dibuat
        case WM_CREATE :
        {
            HWND tombol1 = CreateWindow (“button”, “tombol 1”, 
            WS_VISIBLE | WS_CHILD | WS_BORDER, 270, 200, 
            100, 40, hwnd, (HMENU) 1, NULL, NULL);
            HWND tombol2 = CreateWindow (“button”, “tombol 2”, 
            WS_VISIBLE | WS_CHILD | WS_BORDER, 270, 240, 
            100, 40, hwnd, (HMENU) 2, NULL, NULL);
            break;
        }
        case WM_COMMAND :
            switch (LOWORD (wParam))
            {
                //id tombol
                case 1 :
                    MessageBox (hwnd, “Anda Menekan tombol 1”, “test.exe”, MB_OK);
                    break;
                case 2 :
                    MessageBox (hwnd, “Anda Menekan tombol 2”, “test.exe”, MB_OK);
                    break;
            }
            break;
        //ketika window di tutup
        case WM_CLOSE :
            DestroyWindow (hwnd) ;
            break ;
        case WM_DESTROY :
            PostQuitMessage (0) ;
            break ;
        default :
            return DefWindowProc (hwnd, msg, wParam, lParam) ;
    }
    return 0 ;
}

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASSEX wc;
    // ukuran dari WNDCLASSEX
    wc.cbSize   = sizeof(WNDCLASSEX);
    // gaya 
    wc.style   = 0;
    // fungsi prosedur
    wc.lpfnWndProc  = WndProc;
    wc.cbClsExtra  = 0;
    wc.cbWndExtra  = 0;
    wc.hInstance  = hInstance;
    // gambar ikon 
    wc.hIcon   = LoadIcon(NULL, IDI_APPLICATION);
    // gambar kursor
    wc.hCursor   = LoadCursor(NULL, IDC_ARROW);
    // warna latar belakang
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = “namakelas”;
    // gambar ikon versi kecil
    wc.hIconSm   = LoadIcon(NULL, IDI_APPLICATION);

    RegisterClassEx(&wc);
    
    HWND hwnd = CreateWindowEx(
        WS_EX_CLIENTEDGE,
        “namakelas”,     // nama kelas
        “test.exe”,      // judul aplikasi
        WS_OVERLAPPEDWINDOW,   // model window nya
        CW_USEDEFAULT, CW_USEDEFAULT,  // letak window CW_USEDEFAULT untuk default
        640, 480,      // ukuran window
        NULL, NULL, hInstance, NULL);
    
    ShowWindow (hwnd, nCmdShow) ; // agar window terlihat
    UpdateWindow (hwnd) ;   
    
    MSG Msg ;
    while(GetMessage(&Msg, NULL, 0, 0) > 0)
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    return Msg.wParam ;
}

Mungkin cukup sekian apa yang bisa saya bagikan semoga bermanfaat

keyword :

Bahasa C
Anak kendali Bahasa C
belajar Bahasa C
cara membuat aplikasi Windows dengan Bahasa C
Belajar Aplikasi Windows dengan Bahasa C
Bahasa C
Tutorial Bahasa C
aplikasi windows GUI Bahasa C

chaerul

View Comments

Recent Posts

Panduan Lengkap: Cara Menyiapkan Klaster Kubernetes pada Ubuntu 22.04 LTS

Pendahuluan Dalam dunia pengembangan perangkat lunak yang terus berkembang, Kubernetes telah muncul sebagai alat kunci dalam orkestrasi…

1 week ago

AplikasiAkademik.com: Solusi Terbaik untuk Manajemen Sekolah yang Efisien

Mengelola sebuah sekolah atau lembaga pendidikan adalah tugas yang kompleks dan penuh tantangan. Dengan berbagai…

7 months ago

Cara Mudah Menginstal OpenVPN Server di Ubuntu 20.04 di Huaweicloud Panduan Langkah demi Langkah

Selamat datang di artikel kami tentang cara menginstal OpenVPN server di Ubuntu 20.04 di HuaweiCloud!…

12 months ago

Install Docker Portainer dan Nginx Proxy Manager Ubuntu Server

Dalam dunia pengembangan aplikasi, salah satu hal yang menjadi penting adalah mengelola dan memonitor kontainer…

1 year ago

Tutorial led blinking lengkap, Wiring & Code

Tutorial led blinking. LED (Light Emitting Diode) merupakan salah satu komponen elektronik yang paling umum…

1 year ago

Tutorial LCD Display Lengkap dengan wiring & code untuk pemula

Tutorial LCD Display, ini merupakan salah satu komponen yang sering digunakan dalam project elektronika sebagai…

1 year ago