/**************/ /* laskurir.c */ /**************************************************************************** ** PROGRAM: laskurir.c ** PURPOSE: Autolaskuri tehtynä mahd. pitkälle Windowsin resursseilla. ** Windows: Win 3.1 & Win 32 ** Editor: Vesa Lappalainen 4.9.1994 ** Projektiin tarvitaan: ** laskurir.c - tämä tiedosto ** laskurir.def - moduulin määrittely ** laskurir.rc - resurssit ** ALI\tabhand.c - viestitaulukon käsittely ** ALI\mdialog.c - dialogien käsittely ** ** Tehtäviä: 1) Lisää polkupyörien laskeminen (käytä .rc tiedoston ** korjailemiseen Resource WorkShopia) ** ** 2) Lisää +/- toiminto näppäinten avulla ** (eli on +/- näppäin, jonka painamisen jälkeen ** ohjelma on "vähennystilassa", eli HA:n tai KA:n ** painaminen vähentää vastaavaa laskuria. Toinen +/- ** painaminen muuttaa ohjelman "lisäystilaan") ** ** 3) Muuta .rc tiedostoa siten, että myös DEL-näppäin ** tyhjentää näytön. ** ** 4) Lisää ohjelmaan näppäin "Uusi laskuri", jonka ** painamisella saadaan näyttöön toinen laskuri ** (koodina DoMultiModelessDialog(NULL,"LASKURI",MainDlgProc);) ** Kun ohjelma on käynnissä, siirrä laskurit siten, etteivät ** ne peitä toisiaan. Toimiiko niinkuin pitäisi? Selitä miksi! ** ** 5) Muuta ohjelma sellaiseksi, ettei siina ole lainkaan ** laskurit taulukkoa (Vihje: sailyta tieto Static-ikkunoissa) ** Toimiiko kohdan 4 muutokset nyt? ** ****************************************************************************/ #include /* Tarvitaan kaikissa Windows C-ohjelmissa */ #include "laskurir.h" #include "tabhand.h" #include "mdialog.h" /***************************************************************************/ /* Seuraavilla makroilla luodaan dialogin ikkunafunktio ja pääohjelma! */ TDIALOGPROC(MsgTbl,MainDlgProc); mDlgMAIN("PIKA","LASKURI",MainDlgProc); /***************************************************************************/ static int laskurit[LASKUREITA] = {0,0}; /***************************************************************************/ static LONG lisaa(tMSGParam *msg) { SetDlgItemInt(msg->hWnd,msg->id-HA+HAL,++laskurit[msg->id-HA],TRUE); return 0; } static LONG nollaa(tMSGParam *msg) { int i; for (i=0; ihWnd,HAL+i,laskurit[i] = 0,TRUE); return 0; } static LONG lopeta(tMSGParam *msg) { PostQuitMessage((int)msg->extra); return 0; } /***************************************************************************/ 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 } };