Selasa, 20 Februari 2024

Dev-C++ VS C++ Builder : Pembuatan Layar Windows Disertai Tombol Close

Dalam dunia pengembangan perangkat lunak, pembuatan antarmuka pengguna grafis (GUI) adalah aspek penting yang mempengaruhi pengalaman pengguna dan efektivitas aplikasi. Dev-C++ dan C++ Builder adalah dua alat yang sering digunakan untuk tujuan ini, masing-masing dengan pendekatan dan fitur yang berbeda. Artikel ini  membahas perbandingan antara Dev-C++ dan C++ Builder dalam pembuatan jendela disertai tombol "Close".

I. Dev-C++ dengan WinAPI

Dev-C++ adalah IDE (Integrated Development Environment) yang sederhana namun kuat, sering digunakan oleh pengembang C++ untuk Windows. Untuk membuat aplikasi GUI dengan Dev-C++, umumnya kita menggunakan WinAPI (Windows API), yaitu sekumpulan fungsi dan antarmuka yang disediakan oleh Microsoft.

Langkah-langkah Membuat Jendela dengan Tombol Close di Dev-C++

  1. Buka Dev-C++ dan Buat Proyek Baru:
    • Buka Dev-C++ dan pilih "File" -> "New" -> "Project." Pilih "Windows Application" dan beri nama proyek Anda.
  1. Tulis Kode untuk Jendela Utama:
    • Secara default editor sudah menyediakan kode program untuk tampilan jendela.
    • Salin dan tempel, ganti seluruh kode default dengan kode berikut ke dalam file main.cpp :
C++

#include <windows.h>

/* Fungsi ini menangani semua input ke jendela */
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {
    switch(Message) {
        /* Jika tombol diklik, tutup aplikasi */
        case WM_COMMAND: {
            if (LOWORD(wParam) == 1) { // Cek apakah tombol dengan ID 1 diklik
                PostQuitMessage(0); // Tutup aplikasi
            }
            break;
        }
        /* Jika jendela ditutup, berhentikan aplikasi */
        case WM_DESTROY: {
            PostQuitMessage(0);
            break;
        }
        
        /* Proses pesan lainnya dengan prosedur standar */
        default:
            return DefWindowProc(hwnd, Message, wParam, lParam);
    }
    return 0;
}

/* Fungsi utama dari program GUI Win32: eksekusi dimulai di sini */
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    WNDCLASSEX wc; /* Struktur properti dari jendela kita */
    HWND hwnd; /* 'HANDLE' atau pointer ke jendela kita */
    MSG msg; /* Tempat sementara untuk semua pesan */

    /* Nol-kan struktur dan atur properti yang kita butuhkan */
    memset(&wc, 0, sizeof(wc));
    wc.cbSize         = sizeof(WNDCLASSEX);
    wc.lpfnWndProc    = WndProc; /* Fungsi untuk menangani pesan */
    wc.hInstance      = hInstance;
    wc.hCursor        = LoadCursor(NULL, IDC_ARROW);
    
    /* Warna latar belakang jendela putih */
    wc.hbrBackground  = (HBRUSH)(COLOR_WINDOW + 1);
    wc.lpszClassName  = "WindowClass";
    wc.hIcon          = LoadIcon(NULL, IDI_APPLICATION); /* Memuat ikon standar */
    wc.hIconSm        = LoadIcon(NULL, IDI_APPLICATION); /* Ikon kecil standar */

    /* Daftarkan kelas jendela, tampilkan pesan kesalahan jika gagal */
    if (!RegisterClassEx(&wc)) {
        MessageBox(NULL, "Window Registration Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK);
        return 0;
    }

    /* Buat jendela */
    hwnd = CreateWindowEx(
        WS_EX_CLIENTEDGE,
        "WindowClass",
        "Caption",
        WS_VISIBLE | WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, /* posisi x */
        CW_USEDEFAULT, /* posisi y */
        640, /* lebar */
        480, /* tinggi */
        NULL, NULL, hInstance, NULL
    );

    /* Tampilkan pesan kesalahan jika jendela gagal dibuat */
    if (hwnd == NULL) {
        MessageBox(NULL, "Window Creation Failed!", "Error!", MB_ICONEXCLAMATION | MB_OK);
        return 0;
    }

    /* Buat tombol "Close" */
    HWND hButtonClose = CreateWindowEx(
        0,
        "BUTTON",
        "Close",
        WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,
        50, 50, 100, 30, // posisi x, posisi y, lebar, tinggi
        hwnd,
        (HMENU)1, // ID Tombol
        hInstance,
        NULL
    );

    /*
        Loop utama program di mana semua input diproses dan 
        dikirim ke WndProc. GetMessage akan menunggu sampai ada pesan yang masuk,
        jadi loop ini tidak akan menggunakan CPU secara berlebihan
    */
    while (GetMessage(&msg, NULL, 0, 0) > 0) { /* Jika tidak ada error yang diterima... */
        TranslateMessage(&msg); /* Terjemahkan pesan tombol ke karakter jika ada */
        DispatchMessage(&msg); /* Kirim pesan ke WndProc */
    }
    return msg.wParam;
}

    
Code copied!

    • Penjelasan: Kode ini menangani klik pada tombol "Close" dengan menutup jendela aplikasi.
  1. Kompilasi dan Jalankan:
    • Klik "Run" untuk melihat jendela dengan tombol "Close" yang telah dibuat.


II. C++ Builder


C++ Builder adalah alat pengembangan perangkat lunak yang menawarkan lingkungan grafis dengan pustaka komponen (VCL) untuk membangun aplikasi GUI. Alat ini memungkinkan pengembang untuk merancang antarmuka pengguna menggunakan alat visual dan menulis kode untuk logika aplikasi.

Langkah-langkah Membuat Jendela dengan Tombol Close di C++ Builder

  1. Buka C++ Builder dan Buat Proyek Baru:
    • Buka C++ Builder dan pilih "File" -> "New" -> "VCL Forms Application." Beri nama proyek Anda.
  1. Desain Formulir:
    • Di jendela desain, Anda akan melihat Formulir (Form1) yang kosong. Gunakan panel komponen di sebelah kiri untuk menambahkan komponen tombol ke formulir. Pilih (klik) komponen TButton dari panel dan letakan (klik lagi) di Form1.
  1. Konfigurasi Tombol:
    • Pilih tombol yang baru ditambahkan dan buka panel Object Inspector. Ubah propertinya sebagai berikut:
      • Caption: "Close"
      • Name: CloseButton
    • Klik dua kali tombol untuk membuat prosedur penanganan klik tombol.
  1. Tambahkan Kode Penanganan Klik Tombol:
    • Di file Unit1.cpp, tambahkan kode perintah " this->Close(); " di dalam prosedur CloseButtonClick yang dihasilkan otomatis:
    C++
    
    void __fastcall TForm1::CloseButtonClick(TObject *Sender) {
        this->Close();
    }
    
    
        
    Code copied!

    • Penjelasan: Kode ini menangani klik pada tombol "Close" dengan menutup jendela aplikasi.
  1. Kompilasi dan Jalankan:
    • Klik "Run" untuk melihat jendela dengan tombol "Close" yang telah Anda desain.

III. Kesimpulan

Dev-C++ dengan WinAPI:

  • Kelebihan: Memberikan kontrol mendalam dan fleksibilitas. Cocok untuk pengembang yang ingin mempelajari dan bekerja langsung dengan Windows API.
  • Kekurangan: Memerlukan penulisan kode yang lebih panjang dan detail. Tidak ada alat desain visual, sehingga semua elemen GUI harus diatur melalui kode.

C++ Builder:

  • Kelebihan: Mempermudah pembuatan GUI dengan antarmuka grafis. Mendukung desain visual dengan komponen yang dapat di-drag-and-drop. Memisahkan desain antarmuka dari kode aplikasi.
  • Kekurangan: Mungkin kurang fleksibel dalam beberapa kasus dibandingkan dengan WinAPI untuk kontrol mendetail.

Pilihan antara Dev-C++ dan C++ Builder tergantung pada kebutuhan proyek dan preferensi pengembang. Dev-C++ cocok untuk mereka yang menginginkan kontrol penuh melalui kode, sedangkan C++ Builder menawarkan kemudahan dan kecepatan dalam pengembangan GUI melalui alat desain visual.

Tidak ada komentar:

Posting Komentar

Popular Posts