Työskentely API:en ja SDK:ien kanssa

Koko: px
Aloita esitys sivulta:

Download "Työskentely API:en ja SDK:ien kanssa"

Transkriptio

1 OSA VII 679 LUKU LUKU Työskentely API:en ja SDK:ien kanssa Opi, kuinka käytetään Visual C++-ohjelmoijille tarkoitettuja eri API-rajapintoja ja SDK-kehitysympäristöjä Tosi nopeiden ääni- ja grafiikkasovellusten luominen DirectX:llä Sähköpostin lähettäminen ja vastaanottaminen MAPI-arkkitehtuuria käyttäen Media Control rajapinnan käyttö multimediaäänen ja videon esittämiseen

2 680 Mistä API- ja SDKkehityspaketit saa? Kaikkia API- ja SDK-paketteja ei toimiteta Visual C++:n mukana, mutta useimmat voidaan ladata Microsoftin sivustosta (msdn.microsoft.com) ilmaiseksi. Vaikka käyttämäsi API tai SDK olisikin toimitettu Visual C++:n mukana, kannattaa tarkistaa Webistä uusin versio. Kehittyneet tekniikat Mitä ovat API:t ja SDK:t APIt (Application programming interface) ovat funktiokokoelmia, jotka on yleensä tallennettu dynaamisiin linkkikirjastoihin (.dll) tai staattisiin kirjastoihin (.lib). Näiden avulla voidaan toteuttaa helpommin erityyppisten sovellusten toimintoja, kuten grafiikan, äänen, tietokannan käsittelyn tai tiedonsiirron toimittamalla koodikerroksen sovelluksesi ja laitteiston väliin. Eri API-kirjastoja on lukuisia ja ne helpottavat sovellusten rakentamista sekä yhtenäistävät alan toiminnot standardiksi funktiokutsujoukoksi. COMin ja OLEn kehitys on saanut aikaan sen, että useimmat näistä API-kirjastoista on toteutettu COM-objekteina, mikä helpottaa merkittävästi eri.dll-versioista johtuneita versionhallintaongelmia. SDK:t (Software development kit) ovat API-kirjastoja, joiden mukana toimitetaan dokumentointi sekä esimerkkiohjelmia. Nämä auttavat eri tyyppisten sovellusten kehittämistä, kuten Game SDK pelien ja OLE DB SDK OLE-pohjaisten tietokantasovellusten. Yleensä API-funktiot eivät sisälly projektisi oletuksena linkitettäviin kirjastoihin ja joudut sitä varten linkittämään projektiisi erityiseen kirjastoon. Voit yleensä lisätä kaikkien tarvitsemiesi API-funktioiden prototyypit ja makromäärittelyt sovellustiedostoosi lisäämällä APIkohtaisen.h header-tiedoston käännökseen #include-lauseella. KATSO MYÖS OLEn ja COMin perusteet luvusta 25. Nopean äänen ja näytön toteuttaminen DirectX:llä DirectX APIt luotiin ratkaisemaan näyttö- ja äänilaitteisiin liittyvät suorituskykyongelmat. Vaikka Windows tarjoaakin kehittyneen vakiografiikan ja äänitoimintojen tuen, nämä eivät olleet riittävän nopeita tai joustavia nopeiden toimintapelien ja esitysohjelmistojen kirjoittajille. Pitkän aikaa ainoa ratkaisu oli kirjoittaa ohjelmisto DOSsovelluksena ja menettää näin Windowsin laitteistoriippumattomuus, konfigurointitiedot ja muut palvelut. Microsoft on täyttänyt tämän puutteen joukolla laiteriippumattomia API-rajapintoja, jotka tarjoavat nopeamman ja suoremman pääsyn

3 OSA VII LUKU näyttö-, ääni- ja syöttölaitteisiin. Nämä APIt ovat DirectSound, DirectDraw, Direct3D, DirectPlay, DirectMusic, DirectAnimation, DirectInput ja DirectSetup; yhdessä ne muodostavat Game SDK:n (peli-sdk), joka on ollut hyvin suosittu pelintekijöiden ja esitysgrafiikkateollisuuden joukossa. Kaikki nämä APIt on toteutettu komponenttiobjektimallia (COM) käyttäen ja siksi funktiokutsut on ryhmitelty ne toteuttavan COMobjektin tiettyyn COM-liittymään. Windows 95 ei asenna näiden APIen vaatimia dll-kirjastoja, mutta ne ovat vapaasti jaeltavissa ja toimitetaan yleensä niitä käyttävien pelien mukana. Nämä voidaan myös ladata Microsoftin webbipalvelusta osoitteesta KATSO MYÖS OLEn ja COMin perusteet luvusta 25. DirectSoundin käyttö DirectSound APIn avulla pääset käsiksi suoraan äänikorttisi laitteistoon tehdäksesi ääntä aaltomuotopuskurin (waveform buffer) sisällön perusteella. Puskuri tarkoittaa vain suoraa muistialuetta, jota äänikortin laitteisto lukee ja muuttaa arvot äänitasoiksi. Yksinkertaisin koodaustekniikka on antaa jokaisen puskurin tavun edustaa 256 äänenvoimakkuustasoa, mikä vastaa suoraan kaiuttimen kartion asemaa äänikorttiisi kytketyssä kaiuttimessa. Kun puskurin arvot asetetaan vastaamaan haluttua aaltomuotoa, voi määrätä suoraan äänen korkeuden. Kun muutat tämän aaltomuodon amplitudia puskurin eri kohdissa, saat eri efektejä aaltomuotoa moduloimalla. Tätä aaltomuotopuskuria kutsutaan DirectSoundin ensisijaiseksi puskuriksi. Ensisijaista puskuria ei yleensä suoraan luoda, vaan tavallisesti luodaan toissijaisia puskureita ja näitä puskureita toistettaessa ne sekoittuvat automaattisesti ja tuottavat ensisijaisen puskurin. Useaa toissijaista puskuria ja sekoittamista käyttäen voidaan helposti saada aikaan hyvinkin mutkikkaita äänitehosteita. Kuva 28.1 esittää kahden hyvin erilaisen toissijaisen puskurin sekoittavan esimerkkiohjelman tulostusta. Ylempi puskuri on puhdas vaimeneva siniaalto ja keskimmäinen esittää amplitudiltaan (voimakkuudeltaan) kasvavaa satunnaiskohinaa. Alimmainen aaltomuoto on ensisijaisen puskurin sisältö eli kahden edellisen esittämisen aikaansaama sekoitus. Tuloksena Nopean grafiikan ongelmat Graafisten animaatioiden kirjoittamisen keskeisin ongelma on puhdas suorituskyky. Ihminen näkee peräkkäin esitetyt kuvat liikkeenä, kun kuvia näytetään noin 24 kertaa sekunnissa värin 800x600 näytöllä on kuvapistettä ja jos jokaisen kuvapisteen arvo vaihdetaan, tarvitaan sekunnissa operaatiota. Kuvapisteen asettaminen vie noin 12 kellojaksoa, joten pelkkä näytön päivittäminen vaatisi kellojaksoa. 500 MHz prosessorilla tuo olisi neljännes koko CPU ajasta, 266 MHz prosessorilla jo puolet. Silti toinen puoli ajasta menisi vielä mutkikkaaseen ja raskaaseen kolmiulotteiseen laskentaan, pintakuvioinnin tekemiseen, bittikarttojen skaalaamiseen ja käyttäjän toimiin.

4 682 DirectSoundCreate()- funktion käyttö Jos käytät DirectSoundCreate()- funktiota, joudut linkittämään projektiisi myös dsound.libkirjaston Project Settingsvalintaikkunan Link-välilehden Object/Library Modules -ruutuun. CoCreateInstance()-tapaa käyttämällä tätä kirjastoa ei tarvita, mutta luokan ja liittymän tunnukset tarvitaan (CLSID ja IID). Kehittyneet tekniikat saadaan aikaan puhdas ääni, joka nopeasti muuttuu esitettäessä kohinaksi. Voit sekoittaa haluamiasi ääniä toisten kanssa, esimerkiksi sakara-aaltoa, kolmioaaltoa tai muuta puskurin sisältöä (myös äänitettyä) tuottaaksesi haluamasi äänen. Ensimmäinen tehtävä DirectSound APIa käytettäessä on IDirectSound-liittymän luominen joko kutsumalla suoraan CoCreateInstance()-funktiota (kts. luku 25) tai käyttämällä pikavalintafunktiota DirectSoundCreate(). DirectSoundCreate() käyttää kolmea parametriä: ensimmäinen on osoitin GUID-tunnukseen, joka määrittää käytettävän äänilaitteen. Nämä äänilaitteen GUID-tunnukset saadaan selville asettamalla DirectSoundEnumerate()-funktiolla callback-funktio. Vaihtoehtoisesti parametrinä voidaan antaa NULL, jolloin käytetään oletusäänilaitetta. Toinen parametri on osoitin DirectSound-liittymäobjektin osoittimeen, jonka avulla asetetaan sovelluksesi osoitin uuteen objektiin. Kolmas parametri asetetaan yleensä arvoon NULL, ellet joudu käyttämään COM-aggregaatio tekniikkaa. Jos tämä funktio onnistuu, palautettu osoitin osoittaa IDirectSoundliittymään, joka voidaan vapauttaa muiden COM-liittymien tapaan liittymän Release()-funktiolla. Kun IDirectSound-liittymä on saatu, sen yhteiskäyttötaso (cooperative level) tulee säätää välittömästi. Useilla DirectX API kirjastoilla käytetään tällaisia tasoja, jotka määrittävät, kuinka niiden käyttämää laitteistoa pitäisi jakaa eri sovellusten kesken. Voit asettaa tämän tason IDirectSound-liittymän SetCooperativeLevel()- funktiolla syöttämällä sille oman sovelluksesi Windows-kahvan. Joudut myös syöttämään lipputietona halutun yhteiskäyttötason. Tavallisesti käytettävä DSSCL_NORMAL-arvo sallii täyden yhteiskäytön muiden sovellusten kanssa. Tämän jälkeen voit luoda toissijaiset äänipuskurit IDirectSoundliittymän CreateSoundBuffer()-funktiolla. Funktio käyttää kolmea parametriä. Ensimmäinen näistä on DSBUFFERDESC-tietorakenne, joka kertoo luotavaksi halutun puskurin tyypin. Toinen parametri on uutta puskuria varten oleva sovelluksesi IDirectSoundBuffer -liittymäosoitin. Kolmas parametri asetetaan yleensä arvoon NULL, ellet joudu käyttämään COM-aggregaatio tekniikkaa.

5 DSBUFFERDESC-tietorakenne määritellään typedef struct _DSBUFFERDESC{ DWORD dwsize; DWORD dwflags; DWORD dwbufferbytes; DWORD dwreserved; LPWAVEFORMATEX lpwfxformat; } DSBUFFERDESC, *LP DSBUFFERDESC; DSBUFFERDESC-tietorakenteen jäsenet edustavat seuraavaa: dwsize on tietorakenteen koko (joka saadaan sizeof()- operaattorilla). dwflags-lippuina voidaan määritellä useita ohjausasetuksia, kuten stereoääni ja äänenvoimakkuus. Hyvät oletusarvot saadaan lipulla DSBCAPS_CTRLDEFAULT. dwbufferbytes kertoo, kuinka monta tavua uuteen puskuriin tulee mahtua. Pitkille ääninäytteille ja mutkikkaille äänille tarvitaan suurempia puskureita; pienempi puskuri käy lyhyisiin tai toistuviin ääniin. Puskureita voidaan toistaa silmukassa, jolloin puskurin sisältö käytetään ääntä tuotettaessa uudelleen ja uudelleen ja näin saadaan aikaan pitkiä toistuvia ääniä. lpwfxformat osoittaa WAVEFORMATEX-tietorakenteeseen, jossa on tiedot äänikortille siitä, kuinka äänitehoste esitetään. OSA VII LUKU WAVEFORMATEX-tietorakenteessa on tietoa muun muassa puskurin esitysnopeudesta sekä siitä, kuinka monta puskurin tavua tarvitaan yhden ääniarvon esittämiseen. Siinä on myös kerrottu laitteistosta riippuva äänen esittämistekniikka, mutta useimmat äänikortit tukevat aiemmin esiteltyä yksinkertaista WAVE_FORMAT_PCM-tekniikkaa. Kun toissijainen puskuri on käytettävissä, voit asettaa sen arvot joko lataamalla ne.wav-tiedostosta tai määrittämällä ne ohjelmassa. Saatiinpa puskurin tiedot kummalla tavalla tahansa, puskurin käsittelyä ohjaa IDirectSoundBuffer-liittymän Lock()-funktio, joka palauttaa puskurin osoitteen ja koon. Tämän funktion kutsumisen jälkeen voit kirjoittaa puskuriin haluttua aaltomuotoa vastaavat arvot ja kutsua lopuksi puskurin vapauttamiseksi Unlock()-funktiota. Kun puskurin arvot on asetettu, voit esittää sen IDirectSoundBuffer-liittymän Play()-funktiolla. Play()-funktio tarvitsee kolme parametriä, joista kaksi ensimmästä ovat varattuja ja ne Puskurin lukitseminen ja avaaminen Äänipuskuria ei kannata lukita pitkäksi aikaa, muuten lukittua puskurin osaa tarvitseva toistettava ääni aletaan esittää kohinana. Joillakin äänikorteilla on puskuri, jota ei pääse suoraan käyttämään prosessorin osoiteavaruudesta. Tällaisessa tapauksessa Lock()- ja Unlock()- funktiot myös siirtävät tiedon kortilta keskusmuistiin, jossa ohjelmasi voi sitä päivittää ja siirtää sitten takaisin toistettavaksi kortille.

6 684 Kehittyneet tekniikat tulee asettaa nollaksi. Kolmas parametri voi olla DSBPLAY_LOOPING puskurin sisällön toistamiseksi tai nolla, jolloin puskurin sisältö esitetään ainoastaan kerran. Esittäminen voidaan lopettaa kutsumalla Stop()-funktiota. Listauksessa 28.1 esitetään, kuinka DirectSoundia voidaan käyttää yksinkertaisen, mutta vaikuttavan näppäimistöltä käytettävän syntetisaattoriäänen tuottamiseen yksinkertaisen SDI-sovelluksen näkymäluokasta. Ohjelma luo ja näyttää kahden toissijaisen äänipuskurin sisällön punaisena ja vihreänä viivana, jotka asetetaan vaimenevaksi siniaalloksi ja voimakkuudeltaan kasvavaksi kohinaksi (kuva 28.1). KUVA 28.1 SoundView-esimerkki esittää kaksi puskuria ja tuloksena saadun niistä sekoitetun aaltomuodon. Tämän jälkeen sovellus esittää molemmat puskurit yhtä aikaa käyttäjän painaessa näppäintä, jolloin saadaan aikaan kohinan katoava siniaalto ensisijaisesta puskurista (yhdistetty aaltomuoto on alin sininen viiva). Siniaallon tuottama äänen korkeus määräytyy painetun näppäimen ASCII-koodin perusteella, joten aakkosten loppupään merkit saavat aikaan korkeampia ääniä. Luonnollisesti tämä esimerkki vaatii äänikortin. LISTAUS 28.1 LST28_1.CPP Yksinkertainen näppäimistöltä soitettava, kahta äänipuskuria sekoittava syntetisaattoriohjelma 1 CSoundView::CSoundView() 2 { 3 m_pdsobject = NULL;

7 OSA VII LUKU m_pdsbuffer = NULL; 5 m_pdsmix = NULL; 6 } 7 CSoundView::~CSoundView() 8 { 9 if (m_pdsmix) m_pdsmix->release(); 1 10 if (m_pdsbuffer) m_pdsbuffer->release(); 11 if (m_pdsobject) m_pdsobject->release(); 12 } 1 DirectSound COM-objektit tulee vapauttaa hallitusti Release()-funktiolla. 13 void CSoundView::PlayFreq(double dfreq) 14 { 15 if (!m_pdsobject) 16 { 17 // ** Create the Direct Sound Object 18 if(ds_ok == DirectSoundCreate(NULL, &m_pdsobject, NULL)) 19 { 20 // ** Set the Co-Operation level 21 m_pdsobject->setcooperativelevel(m_hwnd, DSSCL_NORMAL); 22 // ** Clear the direct sound buffer 23 memset(&m_dsbufferdesc,0,sizeof(dsbufferdesc)); 24 // ** Setup a secondary buffer 25 m_dsbufferdesc.dwsize = sizeof(dsbufferdesc); 26 m_dsbufferdesc.dwflags = DSBCAPS_CTRLDEFAULT; 27 m_dsbufferdesc.dwbufferbytes = 4096; 28 // ** Set a wave format for 22.0Khz, 1 byte DtoA 29 static WAVEFORMATEX swave = { 30 WAVE_FORMAT_PCM,1,22000,22000,1,8,0 }; 31 m_dsbufferdesc.lpwfxformat = &swave; // ** Create the First Secondary buffer 34 m_pdsobject->createsoundbuffer( &m_dsbufferdesc,&m_pdsbuffer,null); 35 // ** Create the Second Secondary buffer 36 m_pdsobject->createsoundbuffer( &m_dsbufferdesc,&m_pdsmix,null); 37 } 38 } 39 // ** if the DirectSound object is valid if (m_pdsobject) 41 { 42 // ** Declare buffer pointers 43 LPBYTE pbuffer1,pbuffer2; 44 LPBYTE penv1,penv2; 45 DWORD dwsize1,dwsize2; 46 // ** Erase the background 47 CClientDC dcclient(this);

8 686 Kehittyneet tekniikat 48 CRect rcclient; 49 GetClientRect(&rcClient); 50 int yoff = (rcclient.height()-24)/3; 51 dcclient.fillsolidrect(rcclient,rgb(255,255,255)); 2 Lock()-funktio lukitsee muistin ja palauttaa ohjelmasi käyttämien puskureiden osoitteet. 52 // Lock the sound buffer 53 m_pdsbuffer->lock(0,m_dsbufferdesc.dwbufferbytes, &pbuffer1,&dwsize1,&pbuffer2, &dwsize2,0); 2 54 m_pdsmix->lock(0,m_dsbufferdesc.dwbufferbytes, &penv1,&dwsize1,&penv2,&dwsize2,0); 55 // ** Set the two buffers 56 double drange = / (double)dwsize1; 57 double dxrange = (double)rcclient.width() / (double)dwsize1; 58 for(int i=0;i<(int)dwsize1;i++) 59 { 60 double damplitude = drange * (double)i; 61 BYTE b1 = (BYTE)(127 + ( damplitude) 62 * sin((double)i / (0.147 * dfreq))); 63 BYTE b2 = (BYTE)(rand()%(int)dAmplitude)>>1; 64 *(pbuffer1+i) = b1; 65 *(penv1+i) = b2; 66 BYTE b3 = b1 + b2; 3 Aaltomuodon arvot myös piirretään, jotta näkisit puskurin sisällön. 4 Puskurit asetetaan avaamisen jälkeen esittämään sisältönsä. 67 // ** Draw the waveform 3 68 int x = (int)(dxrange * (double)i); 69 dcclient.setpixelv(x,(b1>>1),rgb(255,0,0)); 70 dcclient.setpixelv(x,yoff+64 + b2>>1), RGB(0,255,0)); 71 dcclient.setpixelv(x,yoff*2 + (b3>>1), RGB(0,0,255)); 72 } 73 // ** Unlock the buffers and play the sound 4 74 m_pdsbuffer->unlock(pbuffer1, dwsize1,pbuffer2,dwsize2); 75 m_pdsmix->unlock(penv1,dwsize1,penv2,dwsize2); 76 m_pdsbuffer->play(0,0,0); 77 m_pdsmix->play(0,0,0); 78 } 79 } 80 void CSoundView::OnKeyDown(UINT nchar, UINT nrepcnt, UINT nflags) 81 { 82 CView::OnKeyDown(nChar, nrepcnt, nflags); 83 // ** Play the note with a freqency of the key value 84 if (nrepcnt==1) PlayFreq((double)nChar); 85 }

9 Listauksessa 28.1 esitetty koodi tulee sijoittaa tavallisen AppWizardin tekemän SDI-sovellusrungon (nimeltään Sound) näkymäluokkaan. Koska tässä on lisätty koodia näkymäluokkaan (SoundView.cpptiedostoon), joudut myös lisäämään uusia jäsenmuuttujia varten seuraavat rivit luokan määrittelyn header-tiedostoon (SoundView.h): IDirectSound* m_pdsobject; IDirectSoundBuffer* m_pdsbuffer; IDirectSoundBuffer* m_pdsmix; DSBUFFERDESC m_dsbufferdesc; void PlayFreq(double dfreq); Nämä rivit määrittelevät DirectSound-liittymää varten tarvittavan liittymäosoitinjäsenmuuttujan, kaksi äänipuskuria ja puskurinkuvaustietorakenteen. Myös äänitehosteen toteutuksessa tarvittava PlayFreq()-funktio määritellään. Lisää ClassWizardilla OnKeyDown()-käsittelijä WM_KEYDOWN-sanoman käsittelemistä varten. ClassWizard huolehtii myös vaadittujen headertiedostojen tekemisestä sekä sanomakartan alkion lisäämisestä. Jotta kääntäjä saisi vaadittavat tiedot liittymäosoittimesta, aaltomuototietorakenteesta toteutuksessa ja käytetystä sinifunktiosta, joudut lisäämään seuraavat #include-lauseet näkymäluokan määrittelytiedoston alkuun (soundview.h): OSA VII LUKU #include mmsystem.h #include DSOUND.H #include math.h Listauksessa 28.1 riveillä 1 6 esitetty näkymäluokan muodostin alustaa osoittimet DirectSound-objektiin m_pdsobject ja kaksi osoitinta puskureihin, m_pdsbuffer ja m_pdsmix, arvoon NULL. Vastaava tuhoajafunktio riveillä 7 12 tuhoaa nämä COM-objektit kutsumalla niiden liittymän Release()-funktiota ja vapauttaen niiden viittausluvut (reference count). Pääfunktion PlayFreq() riveillä alustetaan funktion ensimmäisellä kutsukerralla vaadittu DirectSound-objekti ja puskurit. Alustus täytyy suorittaa tässä vaiheessa, koska rivillä 21 kutsuttava SetCooperativeLevel()-funktio tarvitsee voimassa olevan ikkunakahvan, m_hwnd, joka ei ole vielä olemassa muodostinta suoritettaessa. Jos DirectSound-objektin alustaminen onnistuu rivillä 18, luodaan kaksi toissijaista puskuria kutsumalla funktiota CreateSoundBuffer() vaadittujen puskurin tietojen Yhteiskäyttötasot (cooperative levels) DirectSound-objektilla on käytettävissä neljä eri yhteiskäyttötasoa. DSSCL_EXCLUSIVE antaa sovelluksellesi (jos se ehtii ensin) äänikortit käyttöön kokonaan ja muut sovellukset eivät saa ääntä esitettyä. DSSCL_NORMAL-tasolla äänikorttia käytetään moniajon mukaan joustavasti sovellusten välillä. DSSCL_PRIORITY antaa sovelluksellesi etusijan äänikortin käyttöön muihin sovelluksiin nähden. DSSCL_WRITEPRIMARY on korkein etuoikeustaso, jolloin sovelluksesi pääsee käsiksi ensisijaiseen äänipuskuriin ja voi estää (muiden sovellusten) toissijaisten puskureiden esittämisen.

10 688 Äänipuskureiden sekoittaminen Kahta yhtäaikaa esitettävää toissijaista puskuria sekoittamalla aaltomuodolla saadaan moduloitua toista. Tällä tekniikalla voidaan esimerkiksi korkeataajuista ensimmäistä puskuria moduloida matalataajuisella toisella puskurilla, mikä tekee esitettävästä äänestä värisevän tai karkeamman. Kehittyneet tekniikat m_dsbufferdesc-jäseneen ja WAVEFORMATEX-tyyppiseen swavetietorakenteeseen asettamisen jälkeen. PlayFreq()-funktion jälkimmäinen puolisko asettaa äänipuskurit, piirtää aaltomuodot ja esittää äänen dfreq-parametrin mukaan. Riveillä alustetaan ikkunapiirtopinta, tyhjennetään näkymä ja alustetaan koko näkymän työalue. Riveillä suoritetaan kahdelle toissijaiselle puskurille Lock()-toiminto, joka palauttaa osoittimet niihin. Riveillä on toteutettu silmukka, jossa näihin kahteen puskuriin generoidaan arvot ja ne myös piirretään näkymään. Rivillä 61 lasketaan siniaallon arvo b1, joka perustuu taajuuteen, silmukkamuuttujan i edustamaan paikkaan puskurissa ja pienenevään damplitude-voimakkuusarvoon. Tämä arvo tallennetaan kahdesta puskurista ensimmäiseen rivillä 64 ja sen perusteella piirretään rivillä 69 kolmas aalto punaisena SetPixelV()-funktiolla. Toisen puskurin kohinasignaalin arvo, b2, saadaan puolittamalla satunnaislukufunktiolla rand() saadun arvon ja äänisignaalin voimakkuuden jakojäännös (rivi 63). Tämä arvo kirjoitetaan puskuriin rivillä 65 ja näytetään vihreänä kuvapisteenä rivillä 70. Kolmas arvo, b3, joka vastaa esitettäessä ensisijaisen puskurin arvoa, lasketaan rivillä 66 yksinkertaisesti sekoittamalla (laskemalla yhteen) b1 + b2. Tämä arvo näytetään sekoitettuna aaltomuotona sinisellä kuvapisteellä rivillä 71. Riveillä suoritetaan kahdelle puskurille Unlock()-toiminto niiden sisällön esittämiseksi Play()-funktiolla riveillä 76 ja 77. Kun ensimmäistä Play()-funktiota kutsutaan, muodostetaan ensisijainen puskuri automaattisesti tämän toissijaisen puskurin vaatimusten mukaisesti ja siitä kirjoitetaan äänisignaali suoraan toistavalle laitteistolle. Seuraava Play()-funktiokutsu saa aikaan toisen toissijaisen puskurin sisällön sekoittamisen ensisijaiseen puskuriin, jolloin haluttu äänitehoste saadaan aikaan. Lopuksi voidaan vielä lisätä OnKeyDown()-käsittelijä New Windows Message/Event valintaikkunan avulla näppäinpainallusten käsittelemiseksi ja PlayFreq()-funktion kutsumiseksi. Kunkin näppäimen ASCII-koodi vastaa esitettyä taajuutta, jolla saadaan aikaan vaikutelma yksinkertaisesta, näppäimistöltä ohjattavasta syntetisaattorista. Ennen tämän sovelluksen kääntämistä joudut ottamaan linkitykseen mukaan dsound.lib-kirjaston Project Settings valintaikkunan Link välilehdeltä lisäämällä sen Object/Library Modules-riville. Saat tämän valintaikkunan esiin näppäilemällä Alt+F7 tai valitsemalla Projectvalikosta Settings.

11 Kun käännät ja ajat sovelluksesi, saat aaltomuodot esiin käyttämällä näppäimistön eri kirjaimia. Kuulet samalla myös ASCII-koodia vastaavan äänen tehosteineen. OSA VII LUKU KATSO MYÖS OLEn ja COMin perusteet luvusta 25. DirectDraw:n käyttö DirectDraw API:lla voidaan kirjoittaa hyvin nopeita, välkkymättömiä grafiikkasovelluksia. Toimintapeleille ja animaatio-ohjelmille DirectDraw:n synkronoitu kaksoispuskurointitekniikka on välttämätöntä. DirectDraw:lla saadaan käyttöön koko Windowsin näyttö ja eri näyttötilat (myös vähemmän tunnettu ModeX, jota Doom2-pelin väitetään käyttäneen). Ohjelmat piirtävät näytettävän kuvan piilossa olevalle taustanäytölle, joka kuvan valmistuttua vaihdetaan esillä olevan tilalle. Tämä vaihto voidaan tahdistaa tehtäväksi näytön elektronisuihkun palatessa viimeisestä pisteestä alkuun, jolloin animaatio saadaan välkkymättömäksi. Voit myös jättää Windows-näytön ennalleen ja käyttää tavallisen ikkunan sisällä nopeampaa piirtotekniikkaa. DirectDraw:lla saadaan piirto- ja lohkon kopiointitoiminnot nopeammiksi kahta ohjelmistokerrosta, HAL (Hardware Abstraction Layer, laitteiston piilotus) ja HEL (Hardware Emulation Layer, laitteiston mallinnus), käyttäen. DirectDraw-pinnan piirto- ja kopiointitoiminnot käyttävät näistä HALia. Näin saadaan aikaan laiteriippumaton toiminta, jolloin samalla ohjelmakoodilla voidaan käyttää erilaisia näyttökortteja. Mikäli näyttökortti osaa suoraan jonkin piirtotoiminnon, tämä laitteistokiihdytys nopeuttaa piirtoa huomattavasti; ellei osaa, HEL-kerros mallintaa kortin toimintoja ohjelmallisesti ja tällöinkään näyttökortin ominaisuudet eivät rajoita piirtotoiminnon käyttöä. DirectDraw APIssa on COM-liittymien kautta käytettävissä ainoastaan neljä COM-objektia, jotka on esitetty taulukossa Taulukosta muutamien liittymien nimen lopussa oleva numero 2 kertoo, että kyseessä on uudempi versio COM-liittymästä, jonka alkuperäinen versio on vielä käytettävissä vanhemmille sovelluksille. Taulukosta ilmenee myös, että tärkein objekti on DirectDrawSurface. DirectDraw-pääobjekti luo näitä pintoja (surface), joita voidaan rajata DirectDrawClipper-objekteilla ja maalata DirectDrawPaletteobjektin väreillä. ModeX ModeX on dokumentoimaton VGA-näyttötila. Useimmat pelintekijät joutuivat valitsemaan nopeussyistä monivärisen heikkoresoluutiotilan animaatioiden esittämiseen. Tuloksena paras VGA-tila oli 0x13 (heksadesimaalisena), jolla saadaan erottelutarkkuudeksi 320x200 kuvapistettä. Erikoinen ModeX antaa kuitenkin pystysuunnassa hieman paremman arvon, 320x240.

12 690 Kehittyneet tekniikat TAULUKKO 28.1 DirectDraw-objektit ja niiden toiminnot DirectDraw-objekti COM-liittymä Toiminto DirectDraw IDirectDraw2 Käsittelee näyttötilat ja laitteiston ominaisuudet ja luo muut objektit. DirectDrawSurface IDirectDrawSurface2 Käsittelee ensisijaiset ja toissijaiset bittikartat, kaksoispuskuroinnin ja piirto- ja kopiointifunktiot. Tätä pintaa voidaan rajata DirectDrawClipperobjekteilla ja maalata DirectDrawPaletteobjektin väreillä. DirectDrawClipper IDirectDrawClipper Käsittelee pintojen rajaamisen tiedot. DirectDrawPalette IDirectDrawPalette Käsittelee väripaletin alkiot ja pinnalla käytettävien värien tiedot. COM-aggregaatio Aggregaatio on COM-tekniikka, jolla komponentteja sisältävä toinen komponentti voi hyödyntää sisältämänsä komponentin toimintoja. Ulompi komponentti tarjoaa asiakasohjelmilleen liittymän, joka on itse asiassa sen sisältämän komponentin liittymä. Asiakkaan pyytäessä osoitinta tuohon littymään ulompi komponentti palauttaa suoran osoittimen sisemmän komponentin liittymään. Tämän kolmannen parametrin tarjoamalla DirectDraw-objekti antaa muiden komponenttien upottaa sen sisälleen. DirectX-kirjaston vanhemmissa versioissa tätä ominaisuutta ei välttämättä tueta, jolloin DirectDrawCreate()- palauttaa virhekoodin. Saat luotua DirectDraw pääobjektin ddraw.lib-kirjaston funktiolla DirectDrawCreate() tai kutsumalla suoraan CoCreateInstance()- funktiota. DirectDrawCreate()-funktio tarvitsee kolme parametriä. Ensimmäinen on käytettävän näyttöajurin GUID-tunnus. Näyttöajurin tunnuksena annetaan yleensä NULL, jolloin valitaan käytettäväksi sillä hetkellä aktiivisena oleva ajuri. Muiden ajurien tunnukset löytyvät vastaavalla enumerate-funktiolla. Toinen parametri on osoitin uuden objektin IDirectDraw-liittymäosoittimeen. Jos käytät tätä metodia, joudut hankkimaan tämän jälkeen osoittimen uudempaan IDirectDraw2- liittymään COMin QueryInterface()-funktiolla. Kolmas parametri asetetaan tavallisesti arvoon NULL. Muita arvoja käytetään ainoastaan COM aggregaatio tekniikkaa käytettäessä. COM-objekti on mahdollisesti helpompi luoda CoCreateInstance()- funktiolla, koska tällöin päästään suoraan käsiksi IDirectDraw2- liittymään eikä linkittämistä ddraw.lib-kirjastoon tarvita. Funktiota käytetään välittämällä sille luokkatunnuksena CLSID_DirectDraw ja

13 OSA VII LUKU liittymäviittauksena IID_IDirectDraw2; nämä tunnukset löytyvät header-tiedostosta DrawDlg.h. Tämän jälkeen joudut kutsumaan Initialize()-funktiota näyttöajurin määrittävällä GUID-tunnuksella (tavallisesti NULL). Kun käytössä on DirectDraw-objekti, sen yhteiskäyttötaso joudutaan asettamaan IDirectDraw::SetCooperativeLevel()-funktiolla. Tälle funktiolle syötetään ensimmäisenä parametrinä omistajasovelluksen tunnuksena toimiva ikkunakahva ja toisena lippumääreet. Voit käyttää DirectDraw-objektia yhdessä muiden sovellusten kanssa tavallista Windows-näyttöä käytettäessä (lippu DDSCL_NORMAL), mutta halutessasi koko näytön käyttöön, on yhdistettävä liput DDSCL_EXCLUSIVE ja DDSCL_FULLSCREEN. Tahdistettua kaksoispuskurointia varten on koko näyttö otettava käyttöön. Pintoja piirtämistä ja kopioimista varten luodaan DirectDraw-objektin CreateSurface()-funktiolla välittämällä sille DDSURFACEDESCtietorakenne pinnan määreenä. Tässä tietorakenteessa määritellään monenlaisia pintoja. Tavallisesti luodaan yksi ensisijainen pinta DDSCAPS_PRIMARYSURFACE-lipulla ja mahdollisesti useita taustapintoja kopiointia ja kaksoispuskurointia varten. Kaksoispuskuroinnin sivun vaihtamista varten taustapuskurit voidaan luoda ja linkittää samalla CreateSurface()-kutsulla kuin ensisijainenkin puskuri. Tällöin puskureiden lukumäärä annetaan tietorakenteen dwbackbuffercountjäsenessä ja määritellään DDSD_BACKBUFFERCOUNT-lippu. Voit myös luoda useita clipper-objekteja rajausluetteloiden luomiseksi. Tämä ovat hyödyllisiä käytettäessä DirectDraw:lle tavallista Windowsin näyttöä, koska isäikkunaa rajaamalla estetään oman ikkunan alueen ulkopuolelle piirtäminen. Näitä objekteja voidaan luoda DirectDraw-objektista CreateClipper()-funktiolla, minkä jälkeen ne valitaan pinnalla käytettäviksi pinnan SetClipper()- funktiolla. Värien kierrättämistä tukevia värivalikoimia (paletteja) voidaan luoda DirectDraw-pääobjektista CreatePalette()-funktiolla. Värien arvot voidaan alustaa valikoimaan joukolla COLORREF-arvoja, minkä jälkeen ne voidaan valita pinnalle pinnan SetPalette()-funktiolla. DirectDraw-pinnalle voidaan piirtää tavallisilla GDI-funktioilla. Aluksi pinta lukitaan omaan käyttöön ja vastaava piirtopinta haetaan GetDC()-funktiolla. Piirtämisen jäljeen tämä vapautetaan ReleaseDC()-funktiolla. Käytettävissä on myös joukko nopeita bit Animointi värejä kierrättämällä Värejä kierrättämällä saadaan liikkuvaa kuvaa ilman raskasta laskentaa. Animointi ilman ylimääräistä piirtämistä on aina kannattavaa. Ottamalla käyttöön värivalikoimasta muutamia värejä värien kierrätykseen saadaan jollekin näytön alueelle toistuvaa liikettä ilman uudelleenpiirtämistä. Jos esimerkiksi tarvitaan samaan pisteeseen neljä kooltaan kasvavaa ympyrää, voitaisiin kolme väriä määrittää mustaksi ja yksi valkoiseksi. Valkoinen väri voitaisiin sitten muuttaa värivalikoimassa toiseen näistä neljästä paikasta, jolloin jokaisella mustalla piirretty ympyrä pääsisi vuorollaan esiin.

14 692 Bit blit- ja GDI-funktioiden käyttö Ole tarkkana, ettet kutsu bit blit - funktiota (lohkon kopiointi), kun käytät GetDC():llä saatua piirtopintaa. GetDC() lukitsee piirtopinnan ja bit blit -toiminto ei onnistu - joudut kutsumaan ReleaseDC()-funktiota ennen muiden bit blit -funktioiden käyttöä. 1 CoInitialize alustaa COMkirjastot. Kehittyneet tekniikat blitting kopiointifunktioita (kuten Blt), joilla pintoja voidaan kopioida ja värittää erilaisin tekniikoin, esimerkiksi kokoa muuttaen (stretch) tai pintakuviointia käyttäen (texture mapping). Ensisijainen puskuri voidaan vaihtaa taustapuskurin kanssa ensisijaisen pinnan Flip()-funktiolla, joka osaa odottaa seuraavaa juovanpaluujaksoa. Voit joko syöttää sille lipun päivityksen odottamiseksi tai käyttää DirectDraw-objektin WaitForVerticalBlank()-funktiota. Hyödyllisiä näyttöön liittyviä funktioita ovat myös GetMonitorFrequency() sekä GetScanLine(). Listauksessa 28.2 esitetään DirectDraw-esimerkkisovellus, joka esittää Windowsin näytön haltuun ottamisen jälkeen nopean, kaksoispuskurointia käyttävän, pyörivää kierrettä esittävän animaation. Sovellukseen ei jouduta linkittämään ddraw.lib-kirjastoa, koska siinä luodaan DirectDraw-objekti CoCreateInstance()-funktiolla ja palautetaan Windowsin näyttö ennalleen Esc-näppäintä painettaessa. Tämä esimerkki pohjautuu valintaikkunasovellukseen Draw, jonka OnInitDialog()-funktiossa alustetaan näyttö ja kuva piirretään taustapuskuriin Widowsin ajastimenkäsittelijässä OnTimer(). Kun tämä nopea ja mutkikas piirros on valmis, edusta- ja taustapuskurit vaihdetaan keskenään, jotta uusi kuva tulisi välittömästi esiin sen välkkymättä. LISTAUS 28.2 LST28_2.CPP Kaksoispuskurointia käyttäen tehty pyörivää kierrettä esittävä välkkymätön DirectDrawanimaatio 1 CDrawDlg::CDrawDlg(CWnd* pparent /*=NULL*/) 2 : CDialog(CDrawDlg::IDD, pparent) 3 { 4 //{{AFX_DATA_INIT(CDrawDlg) 5 // NOTE: the ClassWizard will add member initialization here 6 //}}AFX_DATA_INIT 7 // Note that LoadIcon does not require a subsequent 8 m_hicon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 9 10 m_pidraw = NULL; 11 m_pimainsurface = NULL; CoInitialize(NULL); 1 14 } CDrawDlg::~CDrawDlg() 17 { 18 if (m_pimainsurface) 19 {

15 OSA VII LUKU m_pidraw->setcooperativelevel(m_hwnd,ddscl_normal); 21 m_pidraw->restoredisplaymode(); 2 22 m_pimainsurface->release(); 23 } 24 if (m_pidraw) m_pidraw->release(); 25 CoUninitialize(); 26 } BOOL CDrawDlg::OnInitDialog() 29 { 30 CDialog::OnInitDialog(); // ** Initialize the OLE / COM library 33 if (FAILED(CoInitialize(NULL))) return FALSE; // ** Create a direct draw object and interface 36 HRESULT hr = CoCreateInstance(CLSID_DirectDraw,NULL, 37 CLSCTX_ALL, IID_IDirectDraw2, (void**)&m_pidraw); if(!failed(hr)) 40 { 41 hr = m_pidraw->initialize((struct _GUID*)NULL); 42 if (hr!=dd_ok) return FALSE; 43 } // ** Set exclusive full screen mode 46 m_pidraw->setcooperativelevel(m_hwnd, 47 DDSCL_EXCLUSIVE DDSCL_FULLSCREEN DDSCL_ALLOWREBOOT); // ** Set up a surface description structure 50 DDSURFACEDESC DrawSurfaceDesc; 51 memset(&drawsurfacedesc,0,sizeof(drawsurfacedesc)); 52 DrawSurfaceDesc.dwSize = sizeof(drawsurfacedesc); 53 DrawSurfaceDesc.dwFlags = DDSD_CAPS 54 DDSD_BACKBUFFERCOUNT; 4 55 DrawSurfaceDesc.ddsCaps.dwCaps = DDSCAPS_COMPLEX 56 DDSCAPS_FLIP DDSCAPS_PRIMARYSURFACE; 57 DrawSurfaceDesc.dwBackBufferCount = 1; 58 // ** Create the primary surface 59 hr = m_pidraw->createsurface(&drawsurfacedesc, 60 (IDirectDrawSurface**)&m_pIMainSurface,NULL); 61 if (FAILED(hr)) return FALSE; // ** Find the back buffer 64 DrawSurfaceDesc.ddsCaps.dwCaps = DDSCAPS_BACKBUFFER; 65 hr = m_pimainsurface->getattachedsurface( &DrawSurfaceDesc.ddsCaps,&m_pIFlipSurface); SetTimer(1,50,0); // ** Start the 50ms Timer return TRUE; // return TRUE unless you set the focus 71 } 2 Näyttötila asetetaan normaaliksi ja COM-objektit vapautetaan. 3 CoCreateInstance():lla haetaan osoitin uuden DirectDraw-objektin IDirectDraw2-liittymään. 4 DrawSurfaceDesc-tietorakenteessa esitetään ensisijainen puskuri, jolla on yksi taustapuskuri. 5 Taustapuskurin osoitin saadaan GetAttachedSurface()- funktiolla.

16 694 6 Blt()-funktiolla pinta voidaan täyttää halutulla värillä pinnan kopioinnin sijaan. 7 Nämä matematiikkaa sisältävät rivit tuottavat kaksi mutkikasta kiertyvää kuviota. Kehittyneet tekniikat void CDrawDlg::OnTimer(UINT nidevent) 74 { 75 CDialog::OnTimer(nIDEvent); static RECT rc={0,0,0,0}; 78 static double dpetals=2.0; // ** Clear the surface quickly with a blit 81 if (rc.right>0) 82 { 83 DDBLTFX dbltfx; 84 dbltfx.dwsize=sizeof(ddbltfx); 85 dbltfx.dwfillcolor=rgb(0,0,0); 86 HRESULT hr = m_piflipsurface->blt(&rc,null, 87 &rc,ddblt_colorfill,&dbltfx); 6 88 } 89 HDC hdc = NULL; // ** Get a device context for the surface 92 if (m_piflipsurface->getdc(&hdc) == DD_OK) 93 { 94 if (hdc) 95 { 96 CDC dc; 97 dc.attach(hdc); rc.right = dc.getdevicecaps(horzres); 100 rc.bottom = dc.getdevicecaps(vertres); double mx = (double)(rc.right>>1); 103 double my = (double)(rc.bottom>>1); CPen pscol(ps_solid,1,rgb(0,255,0)); 106 CPen* ppsold = dc.selectobject(&pscol); double sx = mx/2; 109 double sy = my/2; 110 double sangle = 0.0; // ** draw the graphical animation 113 for(i=0;i<(int)dpetals;i++) 114 { 115 double s1a = sin(sangle); double c1a = cos(sangle); 117 double s2a = sin(sangle * dpetals); 118 double c2a = sin(sangle * dpetals); 119 int x = (int)(mx+sx*c1a+sx*c2a); 120 int y = (int)(my+sy*s1a+sy*s2a); 121 if (i==0) dc.moveto(x,y); 122 else dc.lineto(x,y); 123 sangle+= ;

17 OSA VII LUKU } dpetals+=0.1; 127 dc.selectobject(ppsold); 128 dc.detach(); 129 } 130 m_piflipsurface->releasedc(hdc); 131 } // ** Show the newly drawn surface 134 m_pimainsurface->flip(null,ddflip_wait); } 8 Flip()-funktio odottaa juovanpaluuta ja vaihtaa näyttösivut ilman vajaan puoliksi piirretyn sivun aiheuttamaa välkyntää. Listauksen 28.2 lisäksi joudut lisäämään seuraavat #include-lauseet DrawDlg.cpp-toteutustiedoston alkuun, jotta GUID-arvot ja kosinifunktion määrittely tulisivat kääntämiseen mukaan: #include <initguid.h> #include DrawDlg.h #include math.h DirectDraw-liittymien määrittelyt saadaan mukaan liittämällä seuraava #include-lause DrawDlg.h-tiedoston alkuun: #include <ddraw.h> Myös seuraavat liittymäosoittimet joudutaan määrittelemään CDrawDlg-luokan jäseniksi DrawDlg.h-tiedostoon: IDirectDraw2* m_pidraw; IDirectDrawSurface2* m_pimainsurface; IDirectDrawSurface2* m_piflipsurface; Listauksessa 28.2 nämä liittymäosoittimet asetetaan CDrawDlg-luokan muodostimessa arvoon NULL (rivit 10 11) ja tämän jälkeen COMkirjasto alustetaan funktiolla CoInitialize() rivillä 13. OnInitDialog()-funktiolla luodaan DirectDraw-objekti kutsumalla rivillä 36 CoCreateInstance()-funktiota. Objekti saadaan käyttövalmiiksi alustamalla se vielä rivin 41 Initialize()-funktiolla, missä määritellään näyttöajuriksi käytössä oleva. Objektin yhteiskäyttötasoksi asetetaan rivillä 47 yksinoikeus kokoruutunäyttöön (exclusive, full screen). Rivillä 50 määritellään DDSURFACEDESC-tietorakenne DrawSurfaceDesc ja se alustetaan määrittämään ensisijaisen puskurin lisäksi yksi taustapuskuri kaksoispuskurointia varten. Tämän jälkeen DrawSurfaceDesc-tietorakennetta käyttäen voidaan luoda pinta rivin 59 CreateSurface()-kutsulla; taustapinnan liittymäosoitin saadaan

18 696 Juovanpaluujakso Kun CRT-monitorisi piirtää näytettävän kuvan, sen elektronisäde piirtää yhden rivin kerrallaan vasemmalta oikealle. Näytön sisäpinnan fosfori hehkuu hetken elektronisuihkun osuttua siihen, joka saa aikaan kuvapisteen näkymisen. Kun elektronisäde pääsee näytön alalaitaan, sen on palattava takaisin ylös pisteitä piirtämättä, joten elektronisäde katkaistaan täksi aikaa. Tällöin näyttökortti asettaa paluujaksosta kertovan lipun. Elektronisuihkun ollessa sammutettuna on paras hetki vaihtaa näytölle esitettävä muistilohko, koska vaihtaminen ei näy. Kehittyneet tekniikat tämän jälkeen rivin 65 GetAttachSurface()-kutsulla. Lopuksi rivillä 68 asetetaan 50 ms ajastin (timer) kutsumaan OnTimer()-funktioon (rivi 73) toteutettua piirtofunktiota. Tämä OnTimer()-funktio kannattaa lisätä ClassWizardilla käsittelemään WM_TIMER-sanomaa. Näin toimimalla varmistetaan luokkamäärittelyjen päivittäminen ja sanomakartan rivien lisääminen. Piirrettäessä asetetaan aluksi oletusarvoja, jonka jälkeen rivin 86 Blt()-funktiolla pyyhitään taustapuskurin edelliset kuviot asettamalla sen taustaväri mustaksi. Rivillä 92 hankitaan GDI:ltä piirtopintaosoitin GetDC()-funktiolla taustapinnalle piirtämiseksi. Tämä kahva voidaan sitten liittää CDCluokkaan, kuten rivillä 97 on esitetty. Riveillä käytetään tavallisia GDI-kutsuja ja CPen-oliota viivojen piirtoon pinnalle, jolloin saadaan piirrettyä hyvin nopeasti yksi ruutu monimutkaisesta kierreanimaatiosta. Piirtopinta vapautetaan rivillä 130 ja juuri piirretty puskuri vaihdetaan näytössä olevan tilalle Flip()-funktiolla. Funktion parametri DDFLIP_WAIT saa vaihtamisen odottamaan seuraavaa juovanpaluujaksoa. Rivien tuhoajafunktio palauttaa tavallisen Windowsin työpöydän nollaamalla yhteiskäyttötason ja kutsumalla RestoreDisplayMode()-funktiota näytön palauttamiseksi ennalleen. Release()-kutsu vapauttaa liittymät ja COM-kirjaston alustus purkautuu hallitusti. Jos teet nämä muutokset tavalliseen valintaikkunasovelluksen runkoon, voit kääntää sovelluksen ilman ylimääräisiä API-kirjastoja, mikä osoittaa aitojen COM-objektien vahvuuden. Tämän jälkeen voit suorittaa ohjelmasi ja nauttia sujuvasta ja nopeasta, välkkymättömästä tietokonegrafiikasta, joka havainnollistaa hyvin DirectX:n todellista voimaa. Saat lopetettua sovelluksen missä vaiheessa tahansa Escnäppäintä painamalla (joka on itse asiassa vielä aktiivisena olevan valintaikkunan Cancel-painike). Tämän tehtyäsi tavallinen työpöytä palautetaan hallitusti ja sovellus suljetaan. KATSO MYÖS OLEn ja COMin perusteet luvusta 25. Lisätietoja piirtopinnoista ja GDI:llä piirtämisestä luvusta 15.

19 OSA VII LUKU Direct3D:n käyttö Direct3D API:lla saat käyttöösi uusimpien näyttökorttien 3D-ominaisuudet. Direct3D toimii yhdessä DirectDraw:n kanssa peleissä ja virtuaalimaailmasovelluksissa nähdyn perspektiivigrafiikan tuottamiseksi. Direct3D käyttää kolmesta osasta koostuvaa piirtokoneistoa, joka tukee koordinaattien matriisimuunnoksia, piste- ja hajavalotehosteita ja saadun näkymän rasteroimista sen piirtämistä varten. Direct3D:n toiminnot ovat tarjolla usean liittymän kautta. Näiden avulla saadaan muodostettua ja esitettyä mutkikkaita kolmiulotteisia näkymiä kahdessa eri piirtotilassa, jotka ovat immediate-mode ja retained-mode. Immediate-mode tilan kappaleet ovat alemman tason yksinkertaisia ja nopeasti esitettäviä peruskappaleita (joiden liittymät on esitetty taulukossa 28.2). Näiden päälle on rakennettu korkean tason kappaleita, joiden avulla voidaan tehdä edistyneitä korkeatasoisia reaaliaikaisia 3D näkymiä ja animaatioita. Uudet 3D-kortit Viime vuosina on tullut yhä enemmän käyttöön 3Dnäyttökortteja, jotka toteuttavat omilla piireillään useita kolmiulotteisen kuvan esittämisessä tarvittavia toimenpiteitä. Grafiikkaprosessori suorittaa mutkikkaat koordinaattilaskennan selvästi pelkkää ohjelmallista toteutusta nopeammin. Tämä vapauttaa myös prosessoriaikaa, jotta CAD- ja peliohjelmistojen kehittäjille jäisi enemmän prosessoriaikaa pelin laadun ja kuvan laadun muuhun kehittämiseen. TAULUKKO 28.2 Direct3D:n liittymät ja niiden toiminnot Direct3D-liittymä Toiminnot IDirect3D Alustaa ympäristön ja luo Light-, Material- ja Viewport-objektit. IDirect3DDevice Käsittelee allaolevan 3D-laitteiston ja ympäris tön ominaisuuksien konfiguroinnin. Tällainen liittymä saadaan DirectDraw-pinnalta QueryInterface()-kutsulla. IDirect3DExecuteBuffer Suorituspuskureissa pidetään piirtokäskyjä ja 3Dperusobjektien tietoja valmiina kerralla piirrettäviksi. IDirect3DLight Konfiguroi näkymän valonlähteiden tiedot. IDirect3DMaterial Ylläpitää materiaalien ominaisuuksia ja niiden heijastavuus- ja läpinäkyvyystietoja. IDirect3DTexture Ylläpitää ylläolevien 3D-pintojen pintakuviobittikarttoja. IDirect3DViewport Ryhmittää valot, pintakuviot ja taustatehosteet paikalleen näytöllä. Tämän jälkeen useita viewport-projektioita yhdistetään ja tulos on valmis piirrettäväksi laitteelle peruskappaleiden koodrinaattitietojen kera.

20 698 DirectPlayn verkkoprotokollatuki DirectPlay API tukee tiedonsiirtoa koneiden välillä, jotka on kytketty yhteen sarjakaapelilla, TCP/IPlähiverkolla, puhelinverkkoliitynnällä tai suoralla Internetliitynnällä, Netwarella ja monella muullakin verkkototeutuksella. Kehittyneet tekniikat DirectPlayn käyttö DirectPlayn avulla voidaan helposti toteuttaa monen pelaajan verkkopelejä ilman tarvetta räätälöidä jokaista verkkotyyppiä erikseen. DirectPlayn liittymät, IDirectPlay2 ja IDirectPlayLobby, huolehtivat verkkopelaamiseen liittyvistä objekteista ja istuntojen hallinnasta. DirectInputin käyttö DirectInputin avulla päästään näppäimistöön ja hiireen tavallista Windowsin syöttömekanismia nopeammin. DirectInput tukee myös monipainikkeisia ja akselisia ohjainsauvoja ja auttaa niiden kalibroinnissa. Tämä API on yksinkertainen mutta joustava, ja se on toteutettu kahdella COM-liittymällä. IDirectInput-liittymällä hallitaan järjestelmän syöttölaitteita ja niiden tilaa. Sillä voidaan myös luoda ilmentymiä IDirectInputDevice-liittymästä yksittäisen laitteen konfiguroimiseksi ja syötteen lukemiseksi. DirectMusic DirectMusic on DirectX-perheen uusin tulokas. Sen avulla voidaan peleihin luoda keinotekoista musiikkia midiäkin monipuolisemmin. Taustamusiikkia varten käytettävissä ovat myös samplatut ääninäytteet. DirectSetupin käyttö DirectSetup API on kenties kaikken pienen API-rajapinta. Siinä on vain kaksi funktiota: DirectXSetup(), joka automatisoi kaikkien DirectX-osien asennuksen ja DirectXRegisterApplication(), joka rekisteröi pelin DirectPlayLobby-enabloiduksi monen pelaajan verkkosovellukseksi. Viestien ja sähköpostin luominen MAPIlla Microsoft Messaging API (MAPI) ei ole oikeastaan funktiokirjastorajapinta, vaan arkkitehtuurin muodostava standardikokoelma. Näitä standardeja seuraamalla ohjelmiston kehittäjät voivat keskittyä tekemään sähköpostijärjestelmän eri osia.

Sähköposti ja uutisryhmät 4.5.2005

Sähköposti ja uutisryhmät 4.5.2005 Outlook Express Käyttöliittymä Outlook Express on windows käyttöön tarkoitettu sähköpostin ja uutisryhmien luku- ja kirjoitussovellus. Se käynnistyy joko omasta kuvakkeestaan työpöydältä tai Internet Explorer

Lisätiedot

Microsoft Outlook Web Access. Pikaohje sähköpostin peruskäyttöön

Microsoft Outlook Web Access. Pikaohje sähköpostin peruskäyttöön Microsoft Outlook Web Access Pikaohje sähköpostin peruskäyttöön 1 Käyttö työpaikalla (Hallinto-verkossa) Käynnistetään sähköposti Työpöydällä olevasta Faiposti-pikakuvakkeesta (hiirellä kaksoisklikkaamalla).

Lisätiedot

Hiirisanomiin vastaaminen

Hiirisanomiin vastaaminen OSA II LUKU 8 163 8 LUKU Reagointi käyttäjän painaessa tai vapauttaessa hiiren painikkeen Omien funktioiden käyttö, kun hiiri liikkuu Hiirikoordinaattien käsittely ja valitun alueen tutkiminen 164 Näppäinpainallusten

Lisätiedot

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen Pedacode Pikaopas Java-kehitysympäristön pystyttäminen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Windowstyöasemalle asennetaan Java-ohjelmoinnissa tarvittavat työkalut, minkälaisia konfigurointeja

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

ELOKUVATYÖKALUN KÄYTTÖ ANIMAATION LEIKKAAMISESSA. Kun aloitetaan uusi projekti, on se ensimmäisenä syytä tallentaa.

ELOKUVATYÖKALUN KÄYTTÖ ANIMAATION LEIKKAAMISESSA. Kun aloitetaan uusi projekti, on se ensimmäisenä syytä tallentaa. ELOKUVATYÖKALUN KÄYTTÖ ANIMAATION LEIKKAAMISESSA Kun aloitetaan uusi projekti, on se ensimmäisenä syytä tallentaa. Projekti kannattaa tallentaa muutenkin aina sillöin tällöin, jos käy niin ikävästi että

Lisätiedot

Ilmoitus saapuneesta turvasähköpostiviestistä

Ilmoitus saapuneesta turvasähköpostiviestistä Tullin turvasähköposti Asiakkaan ohje www.tulli.fi versio 2.2 8.1.2015 Korvaa version 2.1 22.5.2014 Tullin turvasähköposti Tulli lähettää sinulle sähköpostiviestin salattuna silloin, kun viesti tai sen

Lisätiedot

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Viimeksi muokattu 5. toukokuuta 2012 Maastotietokannan torrent-jakeluun sisältyy yli 5000 zip-arkistoa,

Lisätiedot

CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen

CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen CUDA Moniydinohjelmointi 17.4.2012 Mikko Honkonen Yleisesti Compute Unified Device Architecture Ideana GPGPU eli grafiikkaprosessorin käyttö yleiseen laskentaan. Nvidian täysin suljetusti kehittämä. Vuoden

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

Lupa opetuskäyttöön pyydettävä. info@tietsikka.net. Näppäimistö. Kohdistimen ohjausnäppäimistö. Funktionäppäimistö. Kirjoitusnäppäimistö

Lupa opetuskäyttöön pyydettävä. info@tietsikka.net. Näppäimistö. Kohdistimen ohjausnäppäimistö. Funktionäppäimistö. Kirjoitusnäppäimistö Näppäimistö 2005 Päivi Vartiainen 1 Kohdistimen ohjausnäppäimistö Funktionäppäimistö Kirjoitusnäppäimistö Numeronäppäimistö Kohdistimen ohjausnäppäimistöllä siirretään hiiren osoitinta ruudulla. Kohdistin

Lisätiedot

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

JOVISION IP-KAMERA Käyttöohje

JOVISION IP-KAMERA Käyttöohje JOVISION IP-KAMERA Käyttöohje 1 Yleistä... 2 2 Kameran kytkeminen verkkoon... 2 2.1 Tietokoneella... 2 2.2 Älypuhelimella / tabletilla... 5 3 Salasanan vaihtaminen... 8 3.1 Salasanan vaihtaminen Windows

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

SSH Secure Shell & SSH File Transfer

SSH Secure Shell & SSH File Transfer SSH Secure Shell & SSH File Transfer TIETOHALLINTO Janne Suvanto 1.9 2002 Sisällysluettelo Sisällysluettelo... 1 Yleistä... 2 SSH Secure Shell ohjelman asetukset... 3 POP3 tunnelin asetukset... 6 Yhteyden

Lisätiedot

Lumon tuotekirjaston asennusohje. Asennus- ja rekisteröintiohje

Lumon tuotekirjaston asennusohje. Asennus- ja rekisteröintiohje Lumon tuotekirjaston asennusohje Asennus- ja rekisteröintiohje 1. Sisältö 1. Asennuspaketin lataaminen 4 2. Zip-tiedoston purkaminen ja sovelluksen asentaminen 4 3. Sovelluksen rekisteröiminen 7 4. Sisällön

Lisätiedot

Zeon PDF Driver Trial

Zeon PDF Driver Trial Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin

Lisätiedot

Android. Sähköpostin määritys. Tässä oppaassa kuvataan uuden sähköpostitilin käyttöönotto Android 4.0.3 Ice Cream Sandwichissä.

Android. Sähköpostin määritys. Tässä oppaassa kuvataan uuden sähköpostitilin käyttöönotto Android 4.0.3 Ice Cream Sandwichissä. Y K S I K Ä Ä N A S I A K A S E I O L E M E I L L E LI I A N P I E NI TAI M I K Ä Ä N H A A S T E LI I A N S U U R I. Android Sähköpostin määritys Määrittämällä sähköpostitilisi Android-laitteeseesi, voit

Lisätiedot

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

Lisätiedot

Apple iphone 4 puhelimen käyttöönotto:

Apple iphone 4 puhelimen käyttöönotto: Apple iphone 4 puhelimen käyttöönotto: Ennen vanhan puhelimesi käytöstä poistoa, pidäthän huolen, että olet synkronisoinut yhteystietosi Exchange palvelimelle! iphone 4 yhdellä silmäyksellä Purettuasi

Lisätiedot

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille: Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin

Lisätiedot

Windows Phone. Sähköpostin määritys. Tässä oppaassa kuvataan uuden sähköpostitilin käyttöönotto Windows Phone 8 -puhelimessa.

Windows Phone. Sähköpostin määritys. Tässä oppaassa kuvataan uuden sähköpostitilin käyttöönotto Windows Phone 8 -puhelimessa. Y K S I K Ä Ä N A S I A K A S E I O L E M E I L L E LI I A N P I E NI TAI M I K Ä Ä N H A A S T E LI I A N S U U R I. Windows Phone Sähköpostin määritys Määrittämällä sähköpostitilisi Windows-puhelimeesi,

Lisätiedot

OFFICE 365 PIKAOHJE 14.01.2014

OFFICE 365 PIKAOHJE 14.01.2014 OFFICE 365 PIKAOHJE 14.01.2014 SISÄLTÖ 1. O365 AVAAMINEN 3 2. KIRJAUTUMINEN 3 3. SALASANAN VAIHTAMINEN 5 4. SÄHKÖPOSTIN KANSIO RAKENNE 6 5. POISSAOLOVIESTI 7 6. SÄHKÖPOSTIN ALLEKIRJOITUS 8 7. YHTEYSTIEDOT

Lisätiedot

Valintanauhan komennot Valintanauhan kussakin välilehdessä on ryhmiä ja kussakin ryhmässä on toisiinsa liittyviä komentoja.

Valintanauhan komennot Valintanauhan kussakin välilehdessä on ryhmiä ja kussakin ryhmässä on toisiinsa liittyviä komentoja. Pikaopas Microsoft Excel 2013 näyttää erilaiselta kuin aiemmat versiot. Tämän oppaan avulla pääset alkuun nopeasti ja saat yleiskuvan uusista ominaisuuksista. Komentojen lisääminen pikatyökaluriville Pidä

Lisätiedot

Muuttujien määrittely

Muuttujien määrittely Tarja Heikkilä Muuttujien määrittely Määrittele muuttujat SPSS-ohjelmaan lomakkeen kysymyksistä. Harjoitusta varten lomakkeeseen on muokattu kysymyksiä kahdesta opiskelijoiden tekemästä Joupiskan rinneravintolaa

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

Sähköpostitilin käyttöönotto

Sähköpostitilin käyttöönotto Sähköpostitilin käyttöönotto Versio 1.0 Jarno Parkkinen jarno@atflow.fi Sivu 1 / 16 1 Johdanto... 2 2 Thunderbird ohjelman lataus ja asennus... 3 3 Sähköpostitilin lisääminen ja käyttöönotto... 4 3.2 Tietojen

Lisätiedot

MPCC-työkalua voidaan käyttää yhden laitteen valvontaan ja yhden tai useamman laitteen konfigurointiin (Modbus broadcast, osoite 0).

MPCC-työkalua voidaan käyttää yhden laitteen valvontaan ja yhden tai useamman laitteen konfigurointiin (Modbus broadcast, osoite 0). V1.0.0 (14.10.2015) 1 (7) KYTKENTÄ HUOM: toimii Modbus-masterina. Tämän vuoksi toinen mahdollinen Modbus-master on irrotettava verkosta, kun kytketään valmiiseen Modbus-verkkoon. Produalin Modbus-laitteiden

Lisätiedot

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Kieliversiointityökalu Java-ohjelmistoon. Ohje Kieliversiointityökalu Java-ohjelmistoon Ohje 2/6 SISÄLLYSLUETTELO 1 YLEISTÄ OHJELMASTA... 3 2 PÄÄ-IKKUNA...4 3 YLÄVALIKKO... 4 3.1 TIEDOSTO... 4 3.2 TOIMINTO... 4 3.3 ASETUKSET... 5 3.4 OHJE... 5 4 VÄLILEHDET...5

Lisätiedot

Kahoot! Kirjautuminen palveluun. Sinikka Leivonen

Kahoot! Kirjautuminen palveluun. Sinikka Leivonen Kahoot! Kahoot! on internetselaimessa toimiva sovellus, jonka avulla voit pitää pieniä testejä/kokeita tai kysellä mielipiteitä. Testeihin liittyy myös pelillisyys, sillä eniten pisteitä saanut voittaa.

Lisätiedot

BaseMidlet. KÄYTTÖOHJE v. 1.00

BaseMidlet. KÄYTTÖOHJE v. 1.00 KÄYTTÖOHJE v. 1.00 KUVAUS BaseMidlet on matkapuhelimessa toimiva sovellus jolla voi etäkäyttää Tiimi 7000 sarjan säätimiä. Copyright Team-Control Oy, oikeudet muutoksiin pidätetään. TiiMi on Team-Control

Lisätiedot

Sonera Yrityssähköposti. Outlook 2013 lataus ja asennus

Sonera Yrityssähköposti. Outlook 2013 lataus ja asennus Sonera Yrityssähköposti. Outlook 2013 lataus ja asennus Sisältö 1/14 Sonera Yrityssähköpostin käyttöönotto Outlook 2013 -sovelluksella SISÄLLYS Outlook 2013 asennuspaketin lataus... 2 Outlook 2013 asennus...

Lisätiedot

Viva-16. Käyttöohje. 1.4.2009 Veikko Nokkala Suomen Videovalvonta.com

Viva-16. Käyttöohje. 1.4.2009 Veikko Nokkala Suomen Videovalvonta.com Viva-16 Käyttöohje 1.4.2009 Veikko Nokkala Sisällysluettelo Sisällysluettelo... 2 Ohjelmisto käyttöliittymä... 3 Asentaminen... 3 Käyttöönotto... 3 Katselu... 6 Tallennus... 8 Toistaminen... 9 Selain käyttöliittymä...

Lisätiedot

KServer Etäohjaus Spesifikaatio asiakaspuolen toteutuksille

KServer Etäohjaus Spesifikaatio asiakaspuolen toteutuksille KServer Etäohjaus 1 (5) KServer Etäohjaus Spesifikaatio asiakaspuolen toteutuksille Palvelimen toteutuksen ollessa versio 1.0, spesifikaation versio 1.0.0. 2009, Riku Eskelinen/ KServer Software Development

Lisätiedot

Webforum. Version 15.1 uudet ominaisuudet. Päivitetty: 2015-03-28

Webforum. Version 15.1 uudet ominaisuudet. Päivitetty: 2015-03-28 Webforum Version 15.1 uudet ominaisuudet Päivitetty: 2015-03-28 Sisältö Tietoja tästä dokumentista... 3 Yleistä... 4 Dokumentit... 5 Uudet versiot dokumenttien katseluohjelmista ipadille... 5 Dokumenttien

Lisätiedot

Luento 5. Timo Savola. 28. huhtikuuta 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke

Lisätiedot

Gree Smart -sovelluksen (WiFi) asennus- ja käyttöohje: Hansol-sarjan ilmalämpöpumput WiFi-ominaisuuksilla

Gree Smart -sovelluksen (WiFi) asennus- ja käyttöohje: Hansol-sarjan ilmalämpöpumput WiFi-ominaisuuksilla 02/2016, ed. 5 KÄYTTÖOHJE Gree Smart -sovelluksen (WiFi) asennus- ja käyttöohje: Hansol-sarjan ilmalämpöpumput WiFi-ominaisuuksilla Maahantuoja: Tiilenlyöjänkuja 9 A 01720 Vantaa www.scanvarm.fi Kiitos

Lisätiedot

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

Ohjeet e kirjan ostajalle

Ohjeet e kirjan ostajalle 1 Ohjeet e kirjan ostajalle 1. Ostaminen ja käyttöönotto 1.1. Näin saat e kirjan käyttöösi Lataa tietokoneellesi Adobe Digital Editions (ADE) ohjelma täältä: http://www.adobe.com/products/digitaleditions/.

Lisätiedot

Epooqin perusominaisuudet

Epooqin perusominaisuudet Epooqin perusominaisuudet Huom! Epooqia käytettäessä on suositeltavaa käyttää Firefox -selainta. Chrome toimii myös, mutta eräissä asioissa, kuten äänittämisessä, voi esiintyä ongelmia. Internet Exploreria

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

Lisätiedot

Sen jälkeen Microsoft Office ja sen alta löytyy ohjelmat. Ensin käynnistä-valikosta kaikki ohjelmat

Sen jälkeen Microsoft Office ja sen alta löytyy ohjelmat. Ensin käynnistä-valikosta kaikki ohjelmat Microsoft Office 2010 löytyy tietokoneen käynnistävalikosta aivan kuin kaikki muutkin tietokoneelle asennetut ohjelmat. Microsoft kansion sisältä löytyy toimisto-ohjelmistopakettiin kuuluvat eri ohjelmat,

Lisätiedot

Valintanauhan komennot Valintanauhan välilehdissä on ryhmiä ja kussakin ryhmässä on toisiinsa liittyviä komentoja.

Valintanauhan komennot Valintanauhan välilehdissä on ryhmiä ja kussakin ryhmässä on toisiinsa liittyviä komentoja. Pikaopas Microsoft Project 2013 näyttää erilaiselta kuin aiemmat versiot. Tämän oppaan avulla pääset alkuun nopeasti ja saat yleiskuvan uusista ominaisuuksista. Pikatyökalurivi Mukauta tämä alue niin,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot Tiedosto yhteenkuuluvien tietojen joukko, joka on tavallisesti talletettu pysyväismuistiin muodostuu tietueista, jotka voivat olla keskenään samanlaisia tai vaihdella tyypiltään tiedostot ovat joko tekstitiedostoja

Lisätiedot

Audio- ja videotiedostoja sisältävän PowerPoint-esityksen pakkaaminen

Audio- ja videotiedostoja sisältävän PowerPoint-esityksen pakkaaminen Audio- ja videotiedostoja sisältävän PowerPoint-esityksen pakkaaminen Nämä ohjeet koskevat Microsoft Office-versiota 2003 tai uudempaa. Toimintoa kutsutaan nimellä Package for CD. Vanhemmissa versioissa

Lisätiedot

E-kirjan lainaaminen ja lukeminen

E-kirjan lainaaminen ja lukeminen E-kirjan lainaaminen ja lukeminen Missä ne ovat LAKIA-KIRJASTOJEN E-KIRJAT OVAT ELLIBS-KIRJAKAUPAN SIVULLA. VOIT HAKEA NIITÄ KAHDELLA TAVALLA: 1. LAKIA-TIETOKANNASTA ETSIMÄLLÄ TIETTYÄ KIRJAA TAI KAIKKIA

Lisätiedot

KIITOS RICA OPTIMOINTIOHJELMAN VALITSEMISESTA

KIITOS RICA OPTIMOINTIOHJELMAN VALITSEMISESTA KIITOS RICA OPTIMOINTIOHJELMAN VALITSEMISESTA Asennusohjeiden sisältö 1. RICA optimointiohjelmoinnin periaate isoftloaderilla... 2 2. RICA isoftloader toimituspaketin sisältö... 3 3. isoftloader Sync-ohjelmiston

Lisätiedot

Ohjeistus yhdistysten internetpäivittäjille

Ohjeistus yhdistysten internetpäivittäjille Ohjeistus yhdistysten internetpäivittäjille Oman yhdistyksen tietojen päivittäminen www.krell.fi-sivuille Huom! Tarvitset päivittämistä varten tunnukset, jotka saat ottamalla yhteyden Kristillisen Eläkeliiton

Lisätiedot

Valintanauhan komentojen selaaminen Jokaisessa valintanauhassa on ryhmiä ja jokaisessa ryhmässä on joukko siihen liittyviä komentoja.

Valintanauhan komentojen selaaminen Jokaisessa valintanauhassa on ryhmiä ja jokaisessa ryhmässä on joukko siihen liittyviä komentoja. Pikaopas Microsoft Project 2013 näyttää erilaiselta kuin aiemmat versiot. Tämän oppaan avulla pääset alkuun nopeasti ja saat yleiskuvan uusista ominaisuuksista. Pikatyökalurivi Voit mukauttaa tämän alueen,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

Mikäli olet saanut e-kirjan latauslinkin sähköpostilla, seuraa näitä ohjeita e-kirjan lataamisessa.

Mikäli olet saanut e-kirjan latauslinkin sähköpostilla, seuraa näitä ohjeita e-kirjan lataamisessa. E-kirjan latausohje Mikäli olet saanut e-kirjan latauslinkin sähköpostilla, seuraa näitä ohjeita e-kirjan lataamisessa. Pikaohjeet 1. Varmista että tietokoneellesi on asennettu Adobe Digital Editions ohjelma.

Lisätiedot

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8)

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8) WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8) 1 UUDEN KILPAILUTIEDOSTON AVAUS Avaa Wcondes ohjelma tuplaklikkaamalla wcondes.lnk ikonia. Ohjelma avaa automaattisesti viimeksi tallennetun kilpailutiedoston.

Lisätiedot

KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN

KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN -Mene osoitteeseen keskustanuoret.fi/user - Kirjoita saamasi käyttäjätunnus ja salasana - Klikkaa yllä olevaa piirisi logoa niin

Lisätiedot

KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA

KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA SISÄLLYS 1. KUVAN TUOMINEN PAINTIIN...1 1.1. TALLENNETUN KUVAN HAKEMINEN...1 1.2. KUVAN KOPIOIMINEN JA LIITTÄMINEN...1 1.1. PRINT

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 12.4.2010 T-106.1208 Ohjelmoinnin perusteet Y 12.4.2010 1 / 34 Graafiset käyttöliittymät Tähän asti kirjoitetuissa ohjelmissa on ollut tekstipohjainen käyttöliittymä.

Lisätiedot

Sport In The Box Käyttöohje

Sport In The Box Käyttöohje Sport In The Box Käyttöohje Esivalmistelut: Kytke käytössä oleva pelikello/konsoli kiinni USBkaapelilla tietokoneeseen ennen virran kytkemistä pelikelloon/konsoliin. Odota että laite on asennettu käyttövalmiiksi,

Lisätiedot

Kaakkois-Suomen Ammattikorkeakoulu Oy Mikkelin Ammattikorkeakoulu Oy Kymenlaakson Ammattikorkeakoulu Oy

Kaakkois-Suomen Ammattikorkeakoulu Oy Mikkelin Ammattikorkeakoulu Oy Kymenlaakson Ammattikorkeakoulu Oy Opiskelijoiden OneDriveohje Kaakkois-Suomen Ammattikorkeakoulu Oy Mikkelin Ammattikorkeakoulu Oy Kymenlaakson Ammattikorkeakoulu Oy Ohjeen nimi Opiskelijoiden OneDrive-ohje Vastuuhenkilö Mari Jokiniemi

Lisätiedot

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include 15: 16: int main() 17: {

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: { Osa I 2. oppitunti C++-ohjelman osat Ennen kuin menemme yksityiskohtaisemmin sisälle C++-luokkiin, -muuttujiin jne, katsokaamme ensin, millaisista osista C++-ohjelma koostuu. Tämän tunnin aikana opit seuraavat

Lisätiedot

Ohjelmisto on tietokanta pohjainen tiedostojärjestelmä, joka sisältää virtuaalisen hakemisto rakenteen.

Ohjelmisto on tietokanta pohjainen tiedostojärjestelmä, joka sisältää virtuaalisen hakemisto rakenteen. 1 / 50 1. Etusivu Ohjelmisto on tietokanta pohjainen tiedostojärjestelmä, joka sisältää virtuaalisen hakemisto rakenteen. Virtuaali hakemistoihin voi tuoda tiedostoja tietokoneelta tai luoda niitä tällä

Lisätiedot

SÄHKÖPOSTIPALVELUIDEN KÄYTTÖÖNOTTO LOUNEA OY

SÄHKÖPOSTIPALVELUIDEN KÄYTTÖÖNOTTO LOUNEA OY 1 SÄHKÖPOSTIPALVELUIDEN KÄYTTÖÖNOTTO LOUNEA OY 17.8.2015 Lounea Oy Tehdaskatu 6, 24100 Salo Puh. 029 707 00 Y-tunnus 0139471-8 www.lounea.fi Asiakaspalvelu 0800 303 00 Yrityspalvelu 0800 303 01 Myymälät

Lisätiedot

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14 Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2

Lisätiedot

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.3.0

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.3.0 Toukokuu 2013 1 (10) Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.3.0 Päivitysohje Copyright Aditro 2013 Toukokuu 2013 2 (10) Sisällysluettelo 1. Tehtävät ennen versiopäivitystä... 3 1.1. Ohjelmistomuutosten

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

Autentikoivan lähtevän postin palvelimen asetukset

Autentikoivan lähtevän postin palvelimen asetukset Autentikoivan lähtevän postin palvelimen asetukset - Avaa Työkalut valikko ja valitse Tilien asetukset - Valitse vasemman reunan lokerosta Lähtevän postin palvelin (SM - Valitse listasta palvelin, jonka

Lisätiedot

Muuttujien roolit Kiintoarvo cin >> r;

Muuttujien roolit Kiintoarvo cin >> r; Muuttujien roolit Muuttujilla on ohjelmissa eräitä tyypillisiä käyttötapoja, joita kutsutaan muuttujien rooleiksi. Esimerkiksi muuttuja, jonka arvoa ei muuteta enää kertaakaan muuttujan alustamisen jälkeen,

Lisätiedot

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.4.0

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.4.0 Toukokuu 2014 1 (11) Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.4.0 Päivitysohje Toukokuu 2014 2 (11) Sisällysluettelo 1. Tehtävät ennen versiopäivitystä... 3 1.1. Ohjelmistomuutosten luku...

Lisätiedot

Skype for Business pikaohje

Skype for Business pikaohje Skype for Business pikaohje Sisällys KOKOUSKUTSU... 2 ENNEN ENSIMMÄISEN KOKOUKSEN ALKUA... 4 LIITTYMINEN KOKOUKSEEN SKYPE FOR BUSINEKSELLA... 5 LIITTYMINEN KOKOUKSEEN SELAIMEN KAUTTA... 6 LIITTYMINEN KOKOUKSEEN

Lisätiedot

JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++

JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++ JAVA alkeet JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++ ja Javascriptin kanssa. Huom! JAVA ja JavaScript eivät silti ole sama asia, eivätkä edes sukulaiskieliä.

Lisätiedot

Posterin teko MS Publisherilla

Posterin teko MS Publisherilla Posterin teko MS Publisherilla Ensimmäisenä avaa MS Publisher 2010. Löydät sen Windows valikosta - All programs - Microsoft Office. Publisheriin avautuu allaolevan kuvan mukainen näkymä. Mikäli et näe

Lisätiedot

TIETORAKENTEET JA ALGORITMIT

TIETORAKENTEET JA ALGORITMIT TIETORAKENTEET JA ALGORITMIT Timo Harju 1999-2004 1 typedef link List; /* Vaihtoehtoisia nimiä */ typedef link Stack; /* nodepointterille */ typedef link Queue typedef struct node Node; /* itse nodelle

Lisätiedot

Salasanojen hallinta. Salasanojen hallintaopas RESTAURANT ENTERPRISE SOLUTION

Salasanojen hallinta. Salasanojen hallintaopas RESTAURANT ENTERPRISE SOLUTION Salasanojen hallinta Salasanojen hallintaopas RESTAURANT ENTERPRISE SOLUTION Restaurant Enterprise Solution Asiakirjan tarkoitus Tämä asiakirja kertoo tarvittavat säännöt kuinka hallinnoida RES salasanoja

Lisätiedot

Novell Messenger 3.0.1 Mobile -aloitusopas

Novell Messenger 3.0.1 Mobile -aloitusopas Novell Messenger 3.0.1 Mobile -aloitusopas toukokuu 2015 Novell Messenger 3.0.1 ja uudemmat versiot ovat saatavilla tuetuille ios-, Android- BlackBerry-mobiililaitteille. Koska voit olla kirjautuneena

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

Cubase perusteet pähkinänkuoressa. Mikä Cubase on? Projektin aloitus

Cubase perusteet pähkinänkuoressa. Mikä Cubase on? Projektin aloitus Cubase perusteet pähkinänkuoressa 1. Mikä Cubase on? 2. Projektin aloitus 3. Audion äänittäminen. 4. MIDI-tiedon tallentaminen ja virtuaali instrumentit 5. Miksaus. Mikä Cubase on? Cubase on Windows XP

Lisätiedot

Esimerkkinä http://wordpress.com/ - ilmainen blogi-julkaisujärjestelmä. WordPress:stä on myös palvelimelle asennettava versio (WordPress.

Esimerkkinä http://wordpress.com/ - ilmainen blogi-julkaisujärjestelmä. WordPress:stä on myös palvelimelle asennettava versio (WordPress. BLOGIN LUOMINEN Esimerkkinä http://wordpress.com/ - ilmainen blogi-julkaisujärjestelmä. WordPress:stä on myös palvelimelle asennettava versio (WordPress.org) Myös http://blogspot.com on ilmainen ja helppokäyttöinen

Lisätiedot

MEM-O-MATIC. 6800 järjestelmä

MEM-O-MATIC. 6800 järjestelmä MEM-O-MATIC 6800 järjestelmä Ohjeet Windows yhdysohjelmalle / 6800 yhdysohjelman käyttöohje זתתתתת Windows yhdysohjelman asennus tietokoneelle Tee uusi kansio esimerkiksi nimellä MEMO kovalevyllesi. Kopio

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 7. Quick Start - opas Condes 7. olfellows www.olfellows.net 1.

Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 7. Quick Start - opas Condes 7. olfellows www.olfellows.net 1. Condes Suunnistuksen ratamestariohjelmisto Versio 7 Quick Start opas Yhteystiedot: olfellows Jouni Laaksonen Poijukuja 4 21120 RAISIO jouni.laaksonen@olfellows.net www.olfellows.net olfellows www.olfellows.net

Lisätiedot

FrontPage 2000 - Näkymät

FrontPage 2000 - Näkymät FrontPage 2000 - Näkymät FrontPagessa on kuusi erilaista näkymää sivustoon. Sivunäkymä Tässä näkymässä luodaan sivut eli näkymä vastaa paljolti Wordin tekstinkäsittelyohjelman näkymää. Tässä on myös muokattava

Lisätiedot

GeoGebra-harjoituksia malu-opettajille

GeoGebra-harjoituksia malu-opettajille GeoGebra-harjoituksia malu-opettajille 1. Ohjelman kielen vaihtaminen Mikäli ohjelma ei syystä tai toisesta avaudu toivomallasi kielellä, voit vaihtaa ohjelman käyttöliittymän kielen seuraavasti: 2. Fonttikoon

Lisätiedot

Adobe Premiere Elements ohjeet

Adobe Premiere Elements ohjeet Adobe Premiere Elements ohjeet 1. Käynnistä ohjelma kaksoisnapsauttamalla työpöydän kuvaketta. 2. Avautuvasta Elements-ikkunasa valitse a. New Project jos aloitat uuden videoeditoinnin. b. Open Project

Lisätiedot

Tiedostojen lataaminen netistä ja asentaminen

Tiedostojen lataaminen netistä ja asentaminen s. 1/5 Tiedostojen lataaminen netistä ja asentaminen Yleistä Internetissä on paljon hyödyllisiä ilmaisohjelmia, jotka voi ladata ja asentaa omalle koneelle. Osa ohjelmista löytyy suomenkielisiltä sivuilta,

Lisätiedot

HAMINETTI WLAN LIITTYMÄN KÄYTTÖÖNOTTO-OHJE

HAMINETTI WLAN LIITTYMÄN KÄYTTÖÖNOTTO-OHJE HAMINETTI WLAN LIITTYMÄN KÄYTTÖÖNOTTO-OHJE Vaihe 1, Client manager ohjelmiston ja sovittimen ajureiden asennus Asennuksen vaiheissa saattaa olla sovitin ja käyttöjärjestelmä kohtaisia eroja. Alla olevassa

Lisätiedot

Videokuvan siirtäminen kamerasta tietokoneelle Windows Movie Maker -ohjelman avulla

Videokuvan siirtäminen kamerasta tietokoneelle Windows Movie Maker -ohjelman avulla Videokuvan siirtäminen kamerasta tietokoneelle Windows Movie Maker -ohjelman avulla 1. Digivideokamera liitetään tietokoneeseen FireWire-piuhalla. (Liitännällä on useita eri nimiä: myös IEEE 1394, DV,

Lisätiedot

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen

Lisätiedot

Office 2013 - ohjelmiston asennusohje

Office 2013 - ohjelmiston asennusohje Office 2013 - ohjelmiston asennusohje Tämän ohjeen kuvakaappaukset on otettu asentaessa ohjelmistoa Windows 7 käyttöjärjestelmää käyttävään koneeseen. Näkymät voivat hieman poiketa, jos sinulla on Windows

Lisätiedot

CE (versio 3) tukee neljää ajurityyppiä: native, stream interface, USB ja NDIS.

CE (versio 3) tukee neljää ajurityyppiä: native, stream interface, USB ja NDIS. Laiteajurissa rutiineja laitteen luku/kirjoitus ovat toteutetaan mm. (Haikala, laitteen Järvinen) ohjauksessa : tarvittavat rutiinit ja tietorakenteet. Tällaisia LAITEAJURIT ohjausrutiini alustus (esim.

Lisätiedot

Tavallisen videomainoksen sijasta Ruudussa voidaan mainostauolla esittää dynaamisia spotteja.

Tavallisen videomainoksen sijasta Ruudussa voidaan mainostauolla esittää dynaamisia spotteja. RUUTU DYNAAMINEN SPOTTI TEKNISET OHJEET Versio 1.0 Yleistä Tavallisen videomainoksen sijasta Ruudussa voidaan mainostauolla esittää dynaamisia spotteja. Dynaamiset spotit ovat flash mainoksia, jotka mahdollistavat

Lisätiedot

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto Condess ratamestariohjelman käyttö Aloitus ja alkumäärittelyt Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto Kun kysytään kilpailun nimeä, syötä kuvaava nimi. Samaa nimeä käytetään oletuksena

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

Pörisevä tietokone. morsetusta äänikortilla ja mikrofonilla

Pörisevä tietokone. morsetusta äänikortilla ja mikrofonilla Pörisevä tietokone morsetusta äänikortilla ja mikrofonilla 1 Tiivistelmä Idea toteuttaa seuraavat vaatimukset: 1. kommunikointi toisen opiskelijan kanssa (morsetus) 2. toisen opiskelijan häirintä (keskittymistä

Lisätiedot

EMVHost Online SUBJECT: EMVHOST ONLINE CLIENT - AUTOMAATTISIIRROT COMPANY: EMVHost Online Client sovelluksen käyttöohje AUTHOR: DATE: 15.03.

EMVHost Online SUBJECT: EMVHOST ONLINE CLIENT - AUTOMAATTISIIRROT COMPANY: EMVHost Online Client sovelluksen käyttöohje AUTHOR: DATE: 15.03. EMVHost Online SUBJECT: COMPANY: COMMENTS: AUTHOR: EMVHOST ONLINE CLIENT - AUTOMAATTISIIRROT NETS OY EMVHost Online Client sovelluksen käyttöohje NETS OY DATE: 15.03.2011 VERSION: 1.0 1 SISÄLLYS SISÄLLYS...

Lisätiedot