Etusivu

C/C++ teoria
Ohjelmointitesti
C-kielen alkeet
C++-alkeet
C++-taulukkoja
Koodausohjeita
C++ tehtävät
C++ perusteet
C++ vaikeat
C++ syventävät
Kertaustehtäviä
Win32-teoria
Ohjelmointitesti
Ohjelmointimalli
Ikkunaluokat
Lyhyt pohja
Laajennettu pohja
Win32-tehtävät
Win32 perusteet
Win32 vaikeat
Win32 syventävät
MFC-teoria
Kontrolliluokat
MFC-luokat
Lyhyt pohja
Laajennettu pohja
MFC-tehtävät
MFC perusteet
MFC vaikeat
MFC syventävät
Java-teoria
Javan alkeet
Java pohja
Java-tehtävät
Java konsoli
Java perusteet
Java vaikeat
Java syventävät
 
MFC syventävät
Tehtävä 1
Kirjoita ohjelma, jossa käyttäjä voi valita lottonumerot. Ohjelmassa on CListBox-luokan luetteloruutu, kymmenen   tekstiruutua numeroille taulukkona (CStatic m_ctlStatic[i]) ja kaksi kuvassa olevalle tekstille ja nappi. Luetteloruudusta voi tuplanaputtamalla valita oikeat numerot ja ne tulevat oikeassa järjestyksessä, alusta alkaen omiin lokeroihinsa. 'Reset'-nappi käynnistää ohjelman uudestaan. Se siis kirjoittaa luetteloruutuun numerot uudelleen ja tyhjentää numerolaatikot.

mfclotto.gif (5400 bytes)

Ratkaisu: lotto.cpp lotto.h

Tehtävä 2
Kirjoita ohjelma, jossa on editbox ja listbox. Edittiin kirjoitettu teksti voidaan lisätä listboxiin 'Lisää listaan'-napilla. Listasta voidaan poistaa rivi tuplanapauttamalla tai 'Poista rivi'-napilla. Listan voi tyhjentää 'Tyhjennä lista'-napilla. Tilarivillä seurataan kokoajan tapahtumia siten, että kun käyttäjä tekee jotain sinne tulee ilmoitus tapauksesta kuten 'lisäsit rivin listaan', 'tyhjensit listan' jne. Oikeanpuoleisessa pikkulokerossa seurataan listboxin rivien lukumäärää. Ohjelman täytyy pystyä myös muuttamaan kontrollien kokoa kun lomakkeen kokoa muutetaan. Huomaa myös oikea fontti.

mfcrivit.gif (5121 bytes)

Ratkaisu: rivit.cpp rivit.h

Tehtävä 3
Kirjoita kello. Piirrä kellotaulu ja viisarit LineTo()-funktiolla. Varaa kerran sekunnissa toimiva Timer-kontrolli ja kutsu sieltä WM_PAINT sanomaa, jolloin Windows itse pyyhkii vanhat viisarit pois. Ohjelman täytyy osata skaalata viisarit oikean kokoisiksi riippumatta ikkunan koosta. Kellotaulun ympyrämuodon kaava voidaan laskea sin()- ja cos()-funktioilla. Kun origo on vasemmassa yläkulmassa, kaavan koordinaatit ovat muotoa,
- Keskipiste: ikkunan_leveys/2-ikkunan_korkeus/2

- X-koordinaatti: ikkunan_leveys/2+sin(x)*haluttu_etäisyys_keskipisteestä
- Y-koordinaatti:
ikkunan_korkeus/2-cos(x)*haluttu_etäisyys_keskipisteestä
jossa x on haluttu kulma radiaaneissa (00:00 on nolla ja 12:00 on 2*PII radiaania).

mfckello.gif (2880 bytes)

Ratkaisu: kello.cpp kello.h

Tehtävä 4
Kirjoita ohjelma, joka osaa muuntaa valuuttoja kuvan esittämällä tavalla. '-->'-nappi siirtää Valuutta 1:n edit-kontrolliin kirjoitetun valuuttamäärän Valuutta 2:n edit-kontrolliin valittuun valuuttamuotoon ja päinvastoin. Jos muunnos ei ole mahdollinen palautetaan pelkästään 0.

mfcvaluutta.gif (5145 bytes)

Ratkaisu: valuutta.cpp valuutta.h

Tehtävä 5
Kirjoita ohjelma, jossa käyttöliittymä on viimeistelty. Lomakkeen kentrollien välillä pystyy liikkumaan tabulaattorilla, painonappeja pystyy käyttämää ALT + alleviivattu_kirjain yhdistelmällä, vierityspalkkeja pystyy liikuttamaan nuolinäppäimillä sekä Page Up, Page Down, Home ja End näppäimillä, ohjelman pystyy aktivoimaan (kun se on kerran  käynnistetty) näppäinyhdistelmällä CTRL + F12 mistä tahansa kohtaa järjestelmästä sekä lomakkeen minimikoko on asetettu 400 * 200 pikseliin (lomaketta ei saa pienemmäksi). Itse ohjelma piirtää lomakkeelle ympyrän jonka väri pystytään vaihtamaan vierityspalkeilla tai painonapeilla. Käytä RGB (red, green, blue) väriyhdistelmää.

mfcui.gif (5838 bytes)

Ratkaisu: ui.cpp ui.h

 
Sivutilan tarjoaa Tietokonepalvelu Mikrolahti.