Membuat dan menampilkan window

Setelah sebelumnya kita hanya mempelajari cara membuat program dengan windows.h dan menampilkan MessageBox, sekarang kita akan mempelajari cara membuat tampilan windows sederhana. Untuk membuat windows, kita perlu WNDCLASS yang berisi data-data yang akan digunakan windows. Untuk lebih mudahnya, gunakan saja project yang sudah kita buat pada tulisan saya sebelumnya dan ubah isi kode programnya.

#include <windows.h>

LRESULT CALLBACK wndproc(
  HWND   hwnd,
  UINT   pesan,
  WPARAM wParam,
  LPARAM lParam
);

int __stdcall WinMain(HINSTANCE hinst, HINSTANCE hprev, char *cmdl, int cmds){
HWND wind;
MSG msg;
WNDCLASS wcls={0};
wcls.hInstance=hinst;
wcls.hbrBackground=GetSysColorBrush(COLOR_3DFACE);
wcls.lpszClassName=TEXT("windowku");
wcls.lpfnWndProc=wndproc;
wcls.hCursor=LoadCursor(0,IDC_ARROW);
RegisterClass(&wcls);

return msg.wParam;
}

LRESULT CALLBACK wndproc(HWND hwnd, UINT pesan, WPARAM wParam, LPARAM lParam){
};

WNDCLASS memiliki beberapa anggota, salah satunya adalah lpfnWndProc yang berisi function untuk callback. Selain itu ada hCursor yang bisa kita gunakan untuk menentukan kursor yang akan kita gunakan. hInstance harus kita isi sesuai nama HINSTANCE yang ada di parameter dari WinMain. Setelah kita mengisi data yang diperlukan, kita bisa menggunakan RegisterClass untuk menggunakan data, data tersebut saat pembuatan windows.

Kode program di atas belum lengkap. Selanjutnya kita akan melengkapinya sehingga menjadi seperti di bawah ini.

#include <windows.h>

LRESULT CALLBACK wndproc(
  HWND   hwnd,
  UINT   pesan,
  WPARAM wParam,
  LPARAM lParam
);

int __stdcall WinMain(HINSTANCE hinst, HINSTANCE hprev, char *cmdl, int cmds){
HWND wind;
MSG msg;
WNDCLASS wcls={0};
wcls.hInstance=hinst;
wcls.hbrBackground=GetSysColorBrush(COLOR_3DFACE);
wcls.lpszClassName=TEXT("windowku");
wcls.lpfnWndProc=wndproc;
wcls.hCursor=LoadCursor(0,IDC_ARROW);
RegisterClass(&wcls);

wind=CreateWindowEx(0, TEXT("windowku"), "Programku", WS_VISIBLE|WS_OVERLAPPEDWINDOW, 0, 0, 400, 400, 0, 0, hinst, 0);

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

LRESULT CALLBACK wndproc(HWND hwnd, UINT pesan, WPARAM wParam, LPARAM lParam){
switch(pesan){
case WM_CLOSE:
PostQuitMessage(0);
break;
}
return DefWindowProc(hwnd, pesan, wParam, lParam);
};

Pada kode program di atas, kita menggunakan CreateWindowEx untuk membuat Windows dengan ukuran 400x400 dan namanya caption-nya adalah Programku. Kita menggunakan nama class "windowku" sesuai dengan nama kelas yang kita gunakan pada variabel wcls.lpszClassName. Untuk bagian lainnya, abakan saja dulu untuk sementara, atau silakan caritahu sendiri.

Sekarang klik menu Project => rebuild, kemudian klik menu Project => run.