/**************/ /* samplew.c */ /***************************************************************************** PROGRAM: samplew.c PURPOSE: Runko yksinkertaisille Windows-ohjelmille. Kirjoitetaan tiedosto, jossa on funktiot InitMy (tarvittavat alustukset) MyMove (kun hiiri liikkunut) MyDown (kun hiiren näppäin alhaalla) MyUp (kun hiiren nappi päästetty ylös) MyDraw (vaikkapa tiedostoon myown.c) MyTimer (kun valittu aika on kulunut) sekä merkkijono WindowName ja tehdään projekti, jossa on tiedostot samplewt.c myown.c samplewt.def ja käännetään! Siinä se! Editor: Vesa Lappalainen 15.8.1992 *****************************************************************************/ #include /* Tarvitaan kaikissa Windows C-ohjelmissa */ #define MAINWNAME "SampleWClass" /* Tunniste, jolla ikkunaluokka tunnetaan */ extern char *WindowName; extern void InitMy (HWND hWnd); extern void MyDraw (HWND hWnd, HDC hDC); extern void MyDown (HWND hWnd, WORD wParam, LONG lParam); extern void MyUp (HWND hWnd, WORD wParam, LONG lParam); extern void MyMove (HWND hWnd, WORD wParam, LONG lParam); extern void MyTimer(HWND hWnd, WORD wParam, LONG lParam); /****************************************************************************/ LONG FAR PASCAL _export MainWndProc(HWND hWnd, unsigned 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_LBUTTONDOWN: /* Hiiren vasen nappi alas: */ MyDown(hWnd,wParam,lParam); return (NULL); case WM_LBUTTONUP: /* Hiiren vasen nappi ylös: */ MyUp(hWnd,wParam,lParam); return (NULL); case WM_MOUSEMOVE : /* Hiirtä siirretty: */ MyMove(hWnd,wParam,lParam); return (NULL); case WM_TIMER: MyTimer(hWnd,wParam,lParam); 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 */ if (!lpCmdLine) lpCmdLine=NULL; /* Hämäystä, jottei valitusta param. */ 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 (FALSE); } hWnd = CreateWindow(MAINWNAME,WindowName,WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, NULL,NULL,hInstance,NULL); if (!hWnd) return (FALSE); InitMy(hWnd); 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 */ }