Categories: Bahasa C

Cara Membuat Aplikasi Windows GUI Bahasa C

Hello Sahabat Anak Kendali.

Seperti yang kita kenal kalau bahasa C biasanya di Runing dengan CMD namun taukah kamu kalau Bahasa C gak cuma jalan di cmd? kita bisa loh bikin aplikasi windows. hah gimana caranya?

Di setiap Bahasa C pastinya butuh yang namanya header file. untuk  membuat aplikasi windows header yang dibutuhkan adalah

#include <windows.h>

ya sesuai dengan namanya, aplikasi yang dibuat hanya bisa dijalankan di sistem operasi windows saja.

Untuk menjalankan program c pasti butuh fungsi main yaitu fungsi
utama di setiap program. nah fungsi yang digunakan bukanlah

int main (int argc, char **argv)
{
return 0;
}

karena kita membuat aplikasi windows jadi fungsi yang digunakan adalah

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
return 0;
}

Langkah pertama untuk membuat aplikasi windows adalah mendaftar
aplikasi yang kita buat, yaitu dengan mengisi data kedalam struktur
WNDCLASSEX dengan menulis kan kode berikut

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);

setelah itu daftarkan WNDCLASSEX dengan fungsi RegisterClassEx(&wc);

Langkah kedua yaitu membuat window dengan kode berikut

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) ;

Berikutnya menambahakan kode untuk message loop

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

lalu tutup kode dalam fungsi WinMain dengan kode

return Msg.wParam ;

Selanjutnya adalah membuat fungsi prosedur.
dalam fungsi prosedur ini kita dapat menuliskan
kode. nama fungsi prosedur harus sesuai dengan
nama yang ada pada struktur WNDCLASSEX.
fungsi prosedur dapat dituliskan seperti kode
berikut

LRESULT CALLBACK WndProc (HWND   hwnd, UINT   msg, 
WPARAM wParam, LPARAM lParam)
{
HDC         hdc ;
PAINTSTRUCT ps ;
RECT        rect ;

switch (msg)
{
// ketika window kita di refresh
case WM_PAINT :
hdc = BeginPaint (hwnd, &ps) ;
GetClientRect (hwnd, &rect) ;
DrawText (hdc, “Hello, World”, -1, &rect, 
DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
EndPaint (hwnd, &ps) ;
break ;
// ketika window di tutup
case WM_CLOSE :
if (IDYES == MessageBox (hwnd, “Yakin mo Keluar?”, 
“test.exe”, MB_YESNO | MB_ICONQUESTION))
DestroyWindow (hwnd) ;
break ;
case WM_DESTROY :
PostQuitMessage (0) ;
break ;
default :
return DefWindowProc (hwnd, msg, wParam, lParam) ;
}
return 0 ;
}

sehingga kode kita menjadi

#include <windows.h>

LRESULT CALLBACK WndProc (HWND   hwnd, UINT   msg, 
WPARAM wParam, LPARAM lParam)
{
HDC         hdc ;
PAINTSTRUCT ps ;
RECT        rect ;

switch (msg)
{
// ketika window kita di refresh
case WM_PAINT :
hdc = BeginPaint (hwnd, &ps) ;
GetClientRect (hwnd, &rect) ;
DrawText (hdc, “Hello, World”, -1, &rect, 
DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
EndPaint (hwnd, &ps) ;
break ;
// ketika window di tutup
case WM_CLOSE :
if (IDYES == MessageBox (hwnd, “Yakin mo Keluar?”, 
“test.exe”, MB_YESNO | MB_ICONQUESTION))
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) ;

while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam ;

}

lalu simpan kode tersebut dengan nama aplikasi.c dan kamu bisa langsung Compile atau menjalankannya dengan menggunakan MinGW kamu bisa menuliskan

gcc -o test.exe -c aplikasi.c -m64 -mwindows

di cmd.
Semoga apa yang saya tulis bisa bermanfaat silahkan komentarnya dibawah !

keyword :
Membuat Aplikasi dengan bahasa C
Anak kendali Pemograman C
Belajar Bahasa C 
Anak Kendali

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…

2 weeks 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