Modul 1. Program Windows Pertama Anda
Dalam modul ini, kita akan menulis program desktop Windows minimal. Yang dilakukannya adalah membuat dan menampilkan jendela kosong. Program pertama ini berisi sekitar 50 baris kode, tidak menghitung baris kosong dan komentar. Ini akan menjadi titik awal kami; nanti kita akan menambahkan grafik, teks, input pengguna, dan fitur lainnya.
Jika Anda mencari detail selengkapnya tentang cara membuat aplikasi desktop Windows tradisional di Visual Studio, lihat Panduan: Membuat aplikasi Windows Desktop tradisional (C++).
Berikut adalah kode lengkap untuk program ini:
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
// Register the window class.
const wchar_t CLASS_NAME[] = L"Sample Window Class";
WNDCLASS wc = { };
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;
RegisterClass(&wc);
// Create the window.
HWND hwnd = CreateWindowEx(
0, // Optional window styles.
CLASS_NAME, // Window class
L"Learn to Program Windows", // Window text
WS_OVERLAPPEDWINDOW, // Window style
// Size and position
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, // Parent window
NULL, // Menu
hInstance, // Instance handle
NULL // Additional application data
);
if (hwnd == NULL)
{
return 0;
}
ShowWindow(hwnd, nCmdShow);
// Run the message loop.
MSG msg = { };
while (GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
// All painting occurs here, between BeginPaint and EndPaint.
FillRect(hdc, &ps.rcPaint, (HBRUSH) (COLOR_WINDOW+1));
EndPaint(hwnd, &ps);
}
return 0;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
Anda dapat mengunduh proyek Visual Studio lengkap dari Windows Hello World Sample.
Mungkin berguna untuk memberikan garis besar singkat tentang apa yang dilakukan kode ini. Nantinya topik akan memeriksa kode secara rinci.
-
wWinMain adalah titik masuk program. Ketika program dimulai, ia mendaftarkan beberapa informasi tentang perilaku jendela aplikasi. Salah satu item terpenting adalah alamat fungsi, bernama
WindowProc
dalam contoh ini. Fungsi ini mendefinisikan perilaku jendela—tampilannya, bagaimana ia berinteraksi dengan pengguna, dan sebagainya. - Selanjutnya, program membuat jendela dan menerima handel yang secara unik mengidentifikasi jendela.
- Jika jendela berhasil dibuat, program akan memasuki perulangan sementara . Program tetap dalam perulangan ini sampai pengguna menutup jendela dan keluar dari aplikasi.
Perhatikan bahwa program tidak secara eksplisit memanggil WindowProc
fungsi, meskipun kami mengatakan di sinilah sebagian besar logika aplikasi ditentukan. Windows berkomunikasi dengan program Anda dengan meneruskannya serangkaian pesan. Kode di dalam perulangan sementara mendorong proses ini. Setiap kali program memanggil fungsi DispatchMessage , secara tidak langsung menyebabkan Windows memanggil fungsi WindowProc, sekali untuk setiap pesan.
Di bagian ini
- Membuat Jendela
- Pesan Jendela
- Menulis Prosedur Jendela
- Melukis Jendela
- Menutup Jendela
- Mengelola Status Aplikasi
Topik terkait