<- Homepage
    Win32 api ile program yazmak o her örnekte gördüğünüz upuzun  giriş fonksiyonunu yazmanıza gerek yok. Bunun yerine main fonksiyonunun içinde, programın örneğini alabilirsiniz. Bunu yapmak için  fonksiyonunu kullanmalısınız. Argüman olarak NULL gönderirseniz şuanda kullandığınız programı döndürür.
    Pencere yaratmamızı sağlaması için bir  yapısına ihtiyacımız var. Bunu yaratıp içini doldurmalıyız. Eğer her detayla uğraşmak istemezseniz minimal olarak şunları doldurabilirsiniz: .hInstance, .lpfnWndProc, .lpszClassName. Fakat burada önemli bir nokta var. Döngünün düzgün sağlanması için lpfnWndPoc'a vereceğimiz bir  oluşturmanız lazım. Ardından bu sınıfı  fonksiyonu ile kayıt ettirmemiz gerekiyor.
    Artık pencere yaratma aşamasına geçebiliriz.  fonksiyonunu kullarak pencereyi yaratıp ondan sorumlu adresi alıyoruz. Bu adres OpenGL, DirectX gibi arayüzler ile uğraşırken çok gerekli olacak.
    Ha unutmadan bir de şundan bahsetmek gerek, program döngüsünde pencereyi güncellemekten sorumlu bir  oluşturmamız lazım. 
    Klavye girdisi almak isterseniz  fonksiyonu oldukça işe yarar bir fonksiyon. Ama daha detaylı olarak halletmek isterseniz bu input işlerini veya daha farklı döngüsel işleri, bunun için callback fonksiyonunda gelen mesaj türlerine göre ayarlamazın gerekiyor.
    Eğer bunların hepsini hallettiyseniz gerisi aslında çok kolay. Bize karmaşıkmış gelen şeyler aslında sadece bizim gözümüzde büyütmemizden ibaret. Bir kez başlayınca anlıyorsunuz. Win32 ile daha fazla işiniz kalmadı. Sıra grafikler arayüzlerinde. Kolay gelsin.

int __clrcall WinMain(
    [in]           HINSTANCE hInstance,
    [in, optional] HINSTANCE hPrevInstance,
    [in]           LPSTR     lpCmdLine,
    [in]           int       nShowCmd
);
HMODULE GetModuleHandleA(
    [in, optional] LPCSTR lpModuleName
);

Header: libloaderapi.h (include Windows.h)
Library: Kernel32.lib
typedef struct tagWNDCLASSA {
    UINT      style;
    WNDPROC   lpfnWndProc;
    int       cbClsExtra;
    int       cbWndExtra;
    HINSTANCE hInstance;
    HICON     hIcon;
    HCURSOR   hCursor;
    HBRUSH    hbrBackground;
    LPCSTR    lpszMenuName;
    LPCSTR    lpszClassName;
} WNDCLASSA, *PWNDCLASSA, *NPWNDCLASSA, *LPWNDCLASSA;

Header: winuser.h (include Windows.h)
Example:
static LRESULT CALLBACK WndProc(HWND hwnd, UINT umessage, WPARAM wparam, LPARAM lparam) {
    switch (umessage) {
    case WM_DESTROY: PostQuitMessage(0); return 0;
    case WM_CLOSE: DestroyWindow(hwnd); return 0;
    default: return DefWindowProc(hwnd, umessage, wparam, lparam);
    }
}
ATOM RegisterClassA(
    [in] const WNDCLASSA *lpWndClass
);

Header: winuser.h (include Windows.h)
Library: User32.lib
HWND CreateWindowExA(
    [in]           DWORD     dwExStyle,
    [in, optional] LPCSTR    lpClassName,
    [in, optional] LPCSTR    lpWindowName,
    [in]           DWORD     dwStyle,
    [in]           int       X,
    [in]           int       Y,
    [in]           int       nWidth,
    [in]           int       nHeight,
    [in, optional] HWND      hWndParent,
    [in, optional] HMENU     hMenu,
    [in, optional] HINSTANCE hInstance,
    [in, optional] LPVOID    lpParam
);

Header: winuser.h (include Windows.h)
Library: User32.lib

Example:
HWND hwnd = CreateWindowExA(
    WS_EX_APPWINDOW, wnd.lpszClassName, title,
    WS_POPUP | WS_VISIBLE, x, y, w, h,
    NULL, NULL, module, NULL);
Example:
...
MSG msg{};
while (PeekMessage(&msg, m_hwnd, 0, 0, PM_REMOVE)) {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}
...
SHORT GetAsyncKeyState(
    [in] int 
);

Header: winuser.h (include Windows.h)
Library: User32.lib
Bazı Önemli Tuşlar
VK_LBUTTON Left mouse button
VK_RBUTTON Right mouse button
VK_RETURN Enter key
VK_SHIFT Shift key
VK_CONTROL Ctrl key
VK_ESCAPE Esc key
'A' A key
Hepsi için msdn