|
Oheinen kuva
esittää yleisesti sanomapohjaista ohjelmointiympäristöä. Tällaisia
ympäristöjä ovat kaikki Windows versiot, Unix, Linux, Symbian ja
yleensäkin kaikki graafiset käyttöjärjestelmät. Tekstipohjaisissa
ohjelmissa sanomia ei ole koska käyttäjä ei voi tehdä kuin yhtä
asiaa kerrallaan. Hiiren käyttö mahdollistaa käyttäjältä tiedon
syöttämisen useista vaihtoehtoisista kohteista ja ohjelman täytyy
reagoida kaikkiin herätteisiin oikein.
Windows-käyttöjärjestelmissä tärkeimmät sanomat ovat WM-alkuisia (WM
= Windows Message). Nämä sanomat ovat vain C-kielen
define-määrittelyllä tehtyjä numerovakioita. Ohjelmointia
helpottamaan sanomat on nimetty kuvaamaan tapahtumaa. Esimerkiksi
WM_PAINT tarkoittaa että ohelman tulisi piirtää ruutunsa uudelleen
mahdollisesti koska käyttäjä on siirtänyt ikkunaa, ohjelman on
peittänyt toinen ohjelmaikkuna tai ehkä käyttäjä on vaihtanut
Windowsin asetuksia ja ikkunan taustaväri pitää piirtää toisella
värillä. Mahdollisuuksia on useitä eikä sillä ohjelmoinnin kannalta
ole mitään merkitystä.
Sanomia siis tulee epämääräisessä järjestyksessä, ajoin ja
epämääräisille kohteille. Hetkittäin voi olla ettei ohjelma saa
yhtään sanomaa mutta seuraavassa tilanteessa niitä tulee
ryöpsähdyksen omaisesti enemmän kuin käyttöjärjestelmä pystyy
käsittelemään. Tästä syytä kaikki sanomat joutuvat sanomajonoon
ennen suoritusta. Tämä jono sijaitsee käyttöjärjestelmän sydämessä
eikä siihen ole mitään ohjelmallista pääsykeinoa.
Sanomajonosta käyttöjärjestelmä noutaa suoritukseen joutuvat sanomat
ja antaa sen sanoman kohteena olevalle ohjelmalle. Se joutuu
ohjelman omaan sanomasilmukkaan josta ne tulevat varsinaiseen
suorituskoodiin itse ohjelman ikkunaproseduuriin. Tyypillisesti
ikkunaproseduurissa on suuri switch-case-rakenne jossa on oma
case-kohtansa jokaiselle sanomalle. Tässä ohjelmoijan tehtäväna on
kirjoittaa koodi jotta ohjelman toiminta olisi oikein. Esimerkiksi
kuvankäsittelyohjelmassa WM_PAINT sanomassa piirretään käsiteltävä
kuva.
Mikäli ohjelmoija ei halua muutta sanoman oletustoimintaa voi työn
jättää käyttöjärjestelmälle. Tällön sanoma menee sanomien
oletuskäsittelijälle. Esimerkiksi omassa ohjelmassasi voit jättää
WM_SIZE sanoman käsittelemättä koska Windows osaa piirtää ikkunan
uudelleen jos sen kokoa muutetaan.
Jeff
Prosise: Programming Windows 95 with MFC
|