/**************/ /* simplew.c */ /***************************************************************************** PROGRAM: simplew.c PURPOSE: Runko yksinkertaisille Windows-ohjelmille. Kirjoitetaan tiedosto, jossa on funktio MyDraw (vaikkapa tiedostoon myown.c) sekä merkkijono WindowName ja tehdään projekti, jossa on tiedostot simplew.c myown.c simplew.def ja käännetään! Siinä se! Editor: Vesa Lappalainen 15.8.1992 *****************************************************************************/ #include /* Tarvitaan kaikissa Windows C-ohjelmissa */ #define MAINWNAME "SimpleWClass" /* Tunniste, jolla ikkunaluokka tunnetaan */ extern char *WindowName; extern void MyDraw(HWND hWnd,HDC hdc); /****************************************************************************/ LONG CALLBACK _export MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; switch (message) { case WM_PAINT: /* Viesti: Piirrä ikkuna uudelleen */ if ( BeginPaint(hWnd,&ps) ) MyDraw(hWnd,ps.hdc); EndPaint(hWnd,&ps); return NULL; case WM_DESTROY: /* Viesti: ikkuna hävitetään */ PostQuitMessage(0); return NULL; default: /* Antaa Windowsin käsitellä muut */ break; } return DefWindowProc(hWnd, message, wParam, lParam); } /****************************************************************************/ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASS wc; /* Ikkunaluokka */ HWND hWnd; /* Pääikkunan kahva */ MSG msg; /* Viesti */ (void)(lpCmdLine); /* Hämäystä, jottei valitusta param. käytt. */ if (!hPrevInstance) { /* Onko muita esiintymiä käynnisssä? */ wc.style = NULL; wc.lpfnWndProc = MainWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = GetStockObject(WHITE_BRUSH); wc.lpszMenuName = NULL; wc.lpszClassName = MAINWNAME; if (!RegisterClass(&wc)) return 1; } hWnd = CreateWindow(MAINWNAME,WindowName,WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, NULL,NULL,hInstance,NULL); if (!hWnd) return 2; ShowWindow(hWnd, nCmdShow); /* Näytetään ikkuna */ UpdateWindow(hWnd); /* Lähetetään WM_PAINT viesti */ while (GetMessage(&msg,NULL,NULL,NULL)) { TranslateMessage(&msg); /* Tulkitaan virtuaaliset näp. koodit */ DispatchMessage(&msg); /* Lähetetään viesti ikkunalle */ } return msg.wParam; /* Palautetaan PostQuitMessage-funktion arvo */ }