Môžeš aj ručne aj vizuálne.
Vizuálne je oveľa rýchlejšie a nemusíš mať toľko znalostí ako keď to programuješ ručne.
Tu máš malú ukážku ako vyzerá jednoduché okno pomocou Win32 API:
Tu si robíš takmer všetko sám...
Ale dnes sú už dostupné inteligentnejšie prostriedky, ale myslím si, že ovládať Win32 API nie je na škodu ;-).
Kód:
#include <Windows.h>
#define _MainClass TEXT("MainClass")
#define _AppName TEXT("Simple Okno")
HINSTANCE g_hInstance;
HWND g_hwndMain;
LRESULT CALLBACK WindowProcMain(HWND, UINT, WPARAM, LPARAM);
inline BOOL InitApp();
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
if ( !InitApp() )
return FALSE;
g_hInstance = hInstance;
while ( GetMessage(&msg, NULL, 0, 0) )
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WindowProcMain(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch ( uMsg )
{
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
inline BOOL InitApp()
{
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wc.hInstance = g_hInstance;
wc.lpfnWndProc = WindowProcMain;
wc.lpszClassName = _MainClass;
wc.lpszMenuName = NULL;
wc.style = CS_HREDRAW | CS_VREDRAW;
if ( !RegisterClassEx(&wc) )
return FALSE;
g_hwndMain = CreateWindowEx(
0,
_MainClass,
_AppName,
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
100, 100,
500, 500,
NULL,
NULL,
g_hInstance,
NULL);
if ( g_hwndMain == NULL )
return FALSE;
return TRUE;
}