By | 25/02/2018

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

7 Replies to “Cara Membuat Aplikasi Windows GUI Bahasa C”

  1. Bejomulyo

    Baru belajar pemrograman saat usia sudah tua,hanya bisa berharap.nuwun admin nyimak

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *