/* ----------------------------------------------------------------- HELLOWIN.C -- Gibt "Hello, Windows!" in einem eigenen Fenster aus (c) Charles Petzold, 1992 ----------------------------------------------------------------- */ #include long FAR PASCAL _export WndProc (HWND, UINT, UINT, LONG) ; /* added following code snippet to avoid warning when linking under cygwin */ #ifdef __CYGWIN__ WinMainCRTStartup() { mainCRTStartup(); } #endif /* changed PASCAL to APIENTRY and HANDLE to HINSTANCE to get clean compile under cygwin int PASCAL WinMain (HANDLE hInstance, HANDLE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow) */ int APIENTRY WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow) { static char szAppName[] = "HelloWin" ; HWND hwnd ; MSG msg ; WNDCLASS wndclass ; if (!hPrevInstance) { wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor ( NULL, IDC_ARROW) ; wndclass.hbrBackground = GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szAppName ; RegisterClass (&wndclass) ; } hwnd = CreateWindow (szAppName, // Fensterklassenname "Das erste Programm", // Titelleiste WS_OVERLAPPEDWINDOW, // Fensterstil CW_USEDEFAULT, // Fensterposition, x CW_USEDEFAULT, // Fensterposition, y CW_USEDEFAULT, // horizontale Größe CW_USEDEFAULT, // vertikale Größe NULL, // Handle Parent-Window NULL, // Handle Menü hInstance, // Handle Programmkopie NULL) ; // Spezialparameter ShowWindow (hwnd, nCmdShow) ; UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } return msg.wParam ; } long FAR PASCAL _export WndProc (HWND hwnd, UINT message, UINT wParam, LONG lParam) { HDC hdc ; PAINTSTRUCT ps ; RECT rect ; switch (message) { case WM_PAINT : hdc = BeginPaint (hwnd, &ps) ; GetClientRect (hwnd, &rect) ; DrawText (hdc, "Hello, Windows!", -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ; EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY : PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; }