/**************/ /* laskurir.c */ /**************************************************************************** ** PROGRAM: laskurir.c ** PURPOSE: Autolaskuri tehtynä mahd. pitkälle Windowsin resursseilla. ** Windows: Win 3.1 & Win 32 ** Editor: Vesa Lappalainen ** Projektiin tarvitaan: ** laskurir.c - tämä tiedosto ** laskurir.def - moduulin määrittely ** laskurir.rc - resurssit ** ALI\tabhand.c - vietitaulukon käsittely ** ** Tehtäviä: 1) Lisää polkupyörien laskeminen (käytä .rc tiedoston ** korjailemiseen Resource WorkShopia) ** ** 2) Lisää +/- toiminto näppäinten avulla ** ** 3) Muuta .rc tiedostoa siten, että myös DEL-näppäin ** tyhjentää näytön. ** ** 4) Muuta ohjelma sellaiseksi, ettei siina ole lainkaan ** laskurit taulukkoa (Vihje: sailyta tieto Static-ikkunoissa) ** ****************************************************************************/ #include /* Tarvitaan kaikissa Windows C-ohjelmissa */ #include "laskurir.h" #include "tabhand.h" static int laskurit[LASKUREITA] = {0,0}; static int ShowStatic(HWND hWnd, int value, int nr) /* Aliohjelmalla tulostetaan Static ikkunaan numero */ { char s[20]; HWND hswnd = GetDlgItem(hWnd,nr); wsprintf(s,"%d ",value); SetWindowText(hswnd,s); return TRUE; } /***************************************************************************/ static LONG lisaa(tMSGParam *msg) { return ShowStatic(msg->hWnd,++laskurit[msg->id-HA],msg->id-HA+HAL); } static LONG nollaa(tMSGParam *msg) { int i; for (i=0; ihWnd,laskurit[i] = 0,HAL+i); return TRUE; } static LONG lopeta(tMSGParam *msg) { PostQuitMessage(msg->extra); return TRUE; } /***************************************************************************/ #define DoC DONT_CARE static tMSGEntry MsgTbl[] = { { WM_COMMAND , TRANGE , DoC, lisaa , 0 , 0, HA,HA+LASKUREITA-1}, { WM_COMMAND , NOLLAA , DoC, nollaa , 0 , 0}, { WM_COMMAND , IDCANCEL, DoC, lopeta , 0 , 0}, { WM_COMMAND , EXIT , DoC, lopeta , 0 , 0}, { 0 } }; TDIALOGPROC(MsgTbl,MainWndProc) int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { #pragma argsused MSG msg; FARPROC lProc = MakeProcInstance((FARPROC)MainWndProc,hInstance); HWND hWnd = CreateDialog(hInstance,"LASKURI",NULL,(DLGPROC)lProc); HACCEL hAccel = LoadAccelerators(hInstance,"PIKA"); if ( !hWnd ) goto lopetus; while (GetMessage(&msg,NULL,NULL,NULL)) { if ( TranslateAccelerator(hWnd,hAccel,&msg) ) continue; if ( IsDialogMessage(hWnd,&msg) ) continue; TranslateMessage(&msg); /* Tulkitaan virtuaaliset näp. koodit */ DispatchMessage(&msg); /* Lähetetään viesti ikkunalle */ } lopetus: FreeProcInstance(lProc); return 0; }