ActiveX-kontrollien luominen
|
|
- Santeri Siitonen
- 9 vuotta sitten
- Katselukertoja:
Transkriptio
1 433 L U K U 1 1 ActiveX-kontrollien luominen Oppitunti 1: ActiveX-komponenttien tekeminen MFC:llä 434 Oppitunti 2: ActiveX-kontrollien tekeminen ATL:llä 448 Laboratorio 11: ActiveX-kontrollin käyttäminen sovelluksessa 461 Kertaus 464 Tässä luvussa Luvussa 8 tutustuit muutamiin ActiveX-kontrollien piirteisiin, jotka erottavat ne muista COM-objekteista ja ActiveX-kontrollisäilöön. Säilöhän toteuttaa yleensä käyttöliittymä ja odottaa kontrollin toimivan osana käyttöliittymäänsä. Kontrollilla on rajapinta, jonka kautta säilö voi asettaa sen ominaisuuksia ja kutsua sen metodeja. Kontrolli kommunikoi säilön kanssa laukaisemalla tapahtumia. ActiveX-kontrolleilla on yleensä ominaisuussivu, jonka avulla käyttäjä voi muuttaa kontrollin ominaisuuksia. Kontrollisäilöt pystyvät yleensä tallentamaan sisältämiensä ActiveX-kontrollien ominaisuudet. Tässä luvussa opit kaksi suosituinta tapaa tehdä ActiveX-kontrolleja Microsoft Visual C++:ssa. Oppitunnilla 1 teet yksinkertaisen ActiveX-kontrollin käyttämällä MFC:tä. Oppitunnilla 2 teet saman kontrollin käyttämällä ATL:ää. Tekemällä saman kontrollin eri tekniikoilla pystyt vertailemaan ja arvioimaan näitä menetelmiä ja päättämäänm milloin käytät mitäkin menetelmää. Ennen kuin aloitat Ennen tämän luvun aloittamista sinun tulisi lukea luvut 2-10 ja suorittaa lukuihin liittyvät harjoitukset.
2 434 Microsoft Visual C MCSD Training Kit Oppitunti 1: ActiveX-kontrollin tekeminen MFC:llä MFC yksinkertaistaa ActiveX-kontrollin tekemistä. Käyttämällä MFC:n ActiveX ControlWizardia voit luoda helposti täysin toimivan ActiveX-kontrollin. Tällä oppitunnilla käytetään MFC:tä ActiveX-kontrollin tekemiseen. Kontrollilla on viestirajapinta, se laukaisee tapahtumia ja sillä on ominaisuussivu, jonka avulla pysyviä ominaisuuksia voidaan asettaa ja tutkia. Tämän oppitunnin jälkeen: Tiedät, kuinka MFC:n ActiveX ControlWizardia käytetään ActiveXkontrollin luomiseen. Tiedät, kuinka ClassWizardilla lisätään ominaisuuksia, metodeja ja tapahtumia kontrolliin. Tiedät, kuinka kontrollin ominaisuussivu tehdään. Tiedät, kuinka ominaisuuksista tehdään pysyviä. Tiedät, kuinka ActiveX Control Test Containeria käytetään kontrollin testaamiseen. Oppitunnin arvioitu kesto: 50 minuuttia MFC:n ActiveX-kontrolliprojektin luominen Tällä oppitunnilla tehdään OneArmedBandit ActiveX-kontrolli, joka on ohjelmallinen versio hedelmäpelin tapaisesta peliautomaatista. Kontrollilla on yksi metodi Play(), joka arpoo kolmen satunnaisen symbolin rivin kontrollin rulliin. Kun kontrollissa on kolmen samanlaisen symboolin yhdistelmä, laukaistaan Jackpot-tapahtuma. Kun käyttäjä napauttaa kontrollia, laukaistaan Click-tapahtuma. Kuvassa 11.1 seuraavalla sivulla nähdään OneArmedBanditkontrolli ActiveX Control Test Containerissa. OneArmedBandit-kontrollilla on ominaisuussivu, jonka avulla käyttäjä voi asettaa ForeColor ja BackColor ominaisuuksien arvot, ja asettaa oman kontrollikohtaisen NumberOfSymbols-ominaisuuden. Tämän ominaisuuden avulla asetetaan kontrollin käyttämien symbolien määrä, eli lisätään tai pienennetään voittomahdollisuuksia. Kaikki kolme ominaisuutta ovat pysyviä.
3 Luku 11 ActiveX-kontrollien luominen 435 Kuva 11.1 OneArmedBandit ActiveX-kontrolli Kuten aina MFC:tä käytettäessä ensimmäinen vaihe ActiveX-kontrollin tekemisessä on kehitysprojektin luominen. Seuraavassa harjoituksessa tehdään OneArmedBandit-projekti. OneArmedBandit-projektin luominen 1. Valitse File-valikosta New ja napauta sitten Projects-välilehteä. 2. Napauta MFC ActiveX ControlWizard. Kirjoita Project name -ruutuun OneArmedBandit ja napauta OK. 3. ControlWizardin vaihe 1 avautuu. Silmäile valinnat läpi ja hyväksy oletukset napauttamalla Next. 4. Poista Has an About box -valinta ControlWizardin vaiheessa 2. Napauta Finish. 5. New Project Information -dialogi avautuu kuten seuraavan sivun kuvassa 11.2.
4 436 Microsoft Visual C MCSD Training Kit Kuva 11.2 OneArmedBandit-projektin luominen Dialogissa nähtävissä tiedoissa on muutamia mielenkiintoisia kohtia. Ensinnäkin luodulle DLL:lle annettiin tarkentimeksi.ocx..ocx-tarkentimen käyttö ei ole ActiveX-kontrolleille pakollista, vaan se on jäänne ajalta, jolloin ActiveX-kontrolleja kutsuttiin OLE-kontrolleiksi. OLE-kontrollit korvasivat vanhemmat Visual Basic Extension (VBX) -kontrollit. Toiseksi tyyppikirjaston lähdekoodi on tiedostossa nimeltä OneArmedBandit.odl. Tämä tiedosto sisältää Object Description Language (ODL) -koodin. ODL oli Interface Definition Languagen (IDL) edeltäjä, ja sen syntaksi on hyvin samankaltainen kuin IDL:n. Microsoft IDL (MIDL) -kääntäjä pystyy kääntämään ODL-koodia. 6. Luo OneArmedBandit-projekti napauttamalla OK. Avaa ClassViewin kohteet ja tutki projektiin luotuja luokkia, jotka näet kuvassa 11.3 seuraavalla sivulla. ActiveX ControlWizard luo luokat, jotka edustavat kontrollin DLL-palvelua, kontrollia itseään ja kontrollin ominaisuussivua. COneArmedBanditCtrlkontrolliluokka periytetään MFC:n luokasta COleControl. Tämä tehokas luokka perii luokkien CWnd ja CCmdTarget toiminnot ja sillä on suuri joukko funktioita, jotka liittyvät ActiveX-kontrollin toimintaan. Näitä funktiota käyttämällä voit käsitellä kontrollin ominaisuuksia, hakea ympäristön ominaisuudet säilöltä, laukaista tapahtumia, toteuttaa ominaisuuksien tallennukset ja hoitaa joukon kontrollin asettamiseen ja näyttämiseen liittyviä toimintoja.
5 Luku 11 ActiveX-kontrollien luominen 437 Kuva 11.3 OneArmedBandit-projektin luokat Kontrollin rajapinnan määrittäminen ControlWizard määrittelee kontrollille kaksi rajapintaa: _DOneArmedBandit ja _DOneArmedBanditEvents. Ensimmäiseen lisätään metodit ja ominaisuudet ja toiseen tapahtumat. Vaikka voitkin tehdä nämä lisäykset napauttamalla rajapinnan osaa hiiren kakkospainikkeella ja valitsemalla sopivan komennon pikavalikosta, on suositeltavampaa käyttää ClassWizardia. Ominaisuuksien lisääminen Seuraavassa harjoituksessa lisätään ominaisuudet ForeColor ja BackColor, sekä NumberOfSymbols luokkaan COneArmedBanditCtrl. Ominaisuuksien lisääminen ActiveX-kontrolliin 1. Avaa ClassWizard painamalla CTRL+W. Valitse Automation-välilehti. 2. Avaa Add Property -dialogi napauttamalla Add Property. 3. Avaa External name -alasvetovalikko, josta näet COleControl-luokan tukemat ominaisuudet. Valitse luettelosta BackColor. 4. Huomaa, että Stock-valintanappi Implementation-ryhmästä valitaan automaattisesti. Dialogi ilmoittaa myös, että GetBackColor() ja SetBackColor() -funktiot luodaan. Lisää BackColor-ominaisuus, sekä Get ja Set -funktiot napauttamalla OK. 5. Lisää ForeColor-ominaisuus toistamalla samat toimet. 6. Luo erikoisominaisuus avaamalla Add Property-dialogi ja kirjoittamalla nimi NumberOfSymbols luetteloon External name. Huomaa, että ClassWizard luo m_numberofsymbols-jäsenmuuttujan ominaisuuden arvon
6 438 Microsoft Visual C MCSD Training Kit tallentamista varten, ja että se luo myös funktion OnNumberOf SymbolsChanged(), jota kutsutaan muutettaessa ominaisuuden arvoa. 7. Valitse Type-alasvetovalikosta short, ja luo sitten ominaisuus napauttamalla OK. 8. Lopeta ominaisuuksien tekeminen napauttamalla OK. ClassViewissä näet uusien ominaisuuksien luettelon _DOneArmedBanditrajapintayksikön alla. Huomaa myös, että jäsenmuuttuja ja käsittelyfunktio on lisätty COneArmedBanditCtrl-luokkaan. Kaksoisnapauttamalla OnNumberOfSymbolsChanged()-funktiota pääset tutkimaan tiedostossa OneArmedBanditCtl.cpp olevaa lähdekoodia. Funktion oletusversio kutsuu vain yksinkertaiseti COleControl::SetModifiedFlag()-funktiota. Lähempänä OneArmedBanditCtl.cpp-tiedoston alkua näet seuraavan koodin: BEGIN_DISPATCH_MAP(COneArmedBanditCtrl, COleControl) //{{AFX_DISPATCH_MAP(COneArmedBanditCtrl) DISP_PROPERTY_NOTIFY(COneArmedBanditCtrl, NumberOfSymbols, m_numberofsymbols, OnNumberOfSymbolsChanged, VT_I2) DISP_STOCKPROP_BACKCOLOR() DISP_STOCKPROP_FORECOLOR() //}}AFX_DISPATCH_MAP END_DISPATCH_MAP() Tämä koodi toteuttaa yhdessä vastaavan header-tiedostossa olevan DECLARE_DISPATCH_MAP-makron kanssa luokan MFC viestikartan (dispatch map). Viestikartta on hyvin samantyypinen kuin luvussa 3 käsitelty sanomakartta, mutta se ohjaa Windows-sanomien sijasta Automationasiakkaiden palvelupyyntöjä luokan ominaisuuksiin ja metodeihin. Jos esimerkiksi Visual Basic -asiakas pyytää NumberOfSymbols-ominaisuutta seuraavalla koodilla, kontrolli käyttää viestikarttaa (erityisesti DISP_PROPERTY_NOTIFY-makroa) hakiessaan m_numberofsymbolsmuuttujaan talletettua arvoa ja välittäessään sitä takaisin asiakkaalle: Dim myobj As OneArmedBandit Set myobj = New OneArmedBandit MsgBox myobj.numberofsymbols Kuten voit viestikartan koodista nähdä, perusominaisuudet käyttävät omia makrojaan. Ominaisuuksien pysyvyys MFC:n avulla kontrollien ominaisuuksien säilyttäminen on helppoa. COleControl::DoPropExchange()-funktio serialisoi kontrollin ominaisuudet tallennuslaitteelle ja takaisin yleensä hyödynnetään kontrollin säilöä. ActiveX ControlWizard ylikuormittaa kontrolliluokan DoPropExchange()-funktion.
7 Luku 11 ActiveX-kontrollien luominen 439 Framework välittää tämän funktion osoittimen CPropExchange-objektille, joka kapseloi ominaisuuksien välittämiseen liittyvät seikat, kuten välityksen suunnan. DoPropExchange()-luokan ylikirjoitettu versio kutsuu kantaluokan versiota serialisoidakseen kontrollin toteuttamat perusominaisuudet. Erikoisominaisuuksien serialisointiin tarvittavan koodin kirjoittaminen on ohjelmoijan vastuulla. MFC sisältää joukon funktioita, joiden avulla voit serialisoida eri tietotyyppejä. Näiden funktioiden nimet alkavat etuliitteellä PX_. Voit sarjoittaa NumberOfSymbols-ominaisuuden korvaamalla kontrolliluokan //TODOkomentin kontrolliluokan DoPropExchange()-funktiossa PX_Short()-funktion kutsulla seuraavasti: void COneArmedBanditCtrl::DoPropExchange(CPropExchange* ppx) { ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wvermajor)); COleControl::DoPropExchange(pPX); PX_Short(pPX, NumberOfSymbols, m_numberofsymbols, 3); } PX_Short()-funktion neljäs argumentti määrittelee ominaisuuden oletusarvon, jota käytetään, mikäli varastoitua arvoa ei pystytä käyttämään. Ylläolevassa esimerkkikoodissa varmistetaan, että uuden kontrollin NumberOfSymbolsominaisuus alustetaan oletusarvolla 3. Metodien lisääminen Viestikartta ohjaa myös asiakkaiden metodikutsut luokan jäsenfunktioille. Käytetään ClassWizardia metodin lisäämiseen. Metodin lisääminen ActiveX-kontrolliin 1. Napauta ClassWizardissa Automation-välilehteä ja avaa Add Method - dialogi napauttamalla Add Method. 2. Kirjoita External name -luetteloon Play. 3. Valitse Return type -alasvetovalikosta void. 4. Napauta OK, ja luo sitten metodi napauttamalla ClassWizardissa OK. Huomaa, että Play()-funktio on lisätty COneArmedBanditCtrl-luokkaan. Jos tutkit viestikarttaa huomaat, että sinne on lisätty seuraava rivi: DISP_FUNCTION(COneArmedBanditCtrl, Play, Play, VT_EMPTY, VTS_NONE)
8 440 Microsoft Visual C MCSD Training Kit Tapahtumien lisääminen ClassWizard automatisoi myös kontrollin laukaisemien tapahtumien määrittelyn. Seuraavassa harjoituksessa toteutetaan Click-perustapahtuma ja Jackpoterikoistapahtuma. ActiveX-kontrollin tapahtuman määrittely 1. Napauta ClassWizardissa ActiveX Events-välilehteä. Avaa Add Event -dialogi napauttamalla Add Event. 2. Valitse External name -alasvetovalikosta Click-perustapahtuma. Lisää tapahtuma napauttamalla OK. 3. Napauta Add Event kerran uudelleen. Kirjoita Add Event -dialogin External name -luetteloon Jackpot. Napauta OK. 4. Lopeta tapahtuman luominen napauttamalla ClassWizardissa OK. Huomaa ClassViewissä, että FireJackpot()-funktio on lisätty COneArmedBanditCtrl-luokkaan. Voit laukaista koodissasi Jackpottapahtuman tätä funktiota käyttämällä. ClassWizard on lisännyt merkinnän myös luokan tapahtumakarttaan (event map). Tapahtumakartta on rakenne, joka muistuttaa huomattavasti ActiveX-kontrollien viestikarttaa ja sitä käytetään tapahtumien toteuttamiseen. Seuraavassa näet COneArmedBanditCtrl-luokan tapahtumakartan: BEGIN_EVENT_MAP(COneArmedBanditCtrl, COleControl) //{{AFX_EVENT_MAP(COneArmedBanditCtrl) EVENT_CUSTOM( Jackpot, FireJackpot, VTS_NONE) EVENT_STOCK_CLICK() //}}AFX_EVENT_MAP END_EVENT_MAP() Ominaisuussivun tekeminen Nyt, kun ActiveX-kontrollin rajapinnat on tehty, voidaan lisätä ominaisuussivu, jonka kautta kontrollin käyttäjä voi tutkia ja asettaa kontrollin ominaisuuksia. Framework käyttää PROPPAGEID-makrojen sarjaa määritellessään ominaisuussivujen tunnistetaulukkoa kontrollin ominaisuussivua varten. ActiveX ControlWizardin OneArmedBandit -projektiin tekemä oletuskoodi on OneArmedBandit.cpp-tiedostossa ja se näyttää seuraavalta: BEGIN_PROPPAGEIDS(COneArmedBanditCtrl, 1) PROPPAGEID(COneArmedBanditPropPage::guid) END_PROPPAGEIDS(COneArmedBanditCtrl) Huomaa, että tämä rakenne ei, poiketen viesti- ja tapahtumakartoista, ole ClassWizardin ylläpitämä. Sinun täytyy huolehtia itse koodin ylläpidosta.
9 Luku 11 ActiveX-kontrollien luominen 441 Mukautetut ominaisuussivut Edellä esitetyssä koodissa taulukon PROPPAGEID-merkintä viittaa kontrollille luotuun oletusominaisuussivuun. ActiveX ControlWizard luo dialogimalliresurssin ja dialogiluokan (joka pohjautuu COlePropertyPage-luokkaan), joita voit muokata niin, että myös kontrollin erityisominaisuuksia voidaan käsitellä niiden avulla. Seuraavassa harjoituksessa tehdään ominaisuussivu, jonka avulla käyttäjä voi asettaa NumberOfSymbols-ominaisuuden. Oman ominaisuussivun tekeminen 1. Avaa ResourceViewissä Dialog-kansio. Aloita dialogimallin muokkaaminen kaksoisnapauttamalla kohtaa IDD_PROPPAGE_ ONEARMEDBANDIT. 2. Poista //TODO-teksti. Lisää seliteteksti- ja muokkausruutukontrollit niin, että dialogi näyttää samalta kuin kuvassa Kuva 11.4 Oman ominaisuussivun tekeminen. Anna muokkausruudulle tunniste IDC_NUMSYMBOLS. Valitse Edit Properties -dialogin Styles-välilehdeltä Number-valintaruutu. 3. Avaa ClassWizard painamalla CTRL+W. Valitse Member Variables - välilehti. 4. Lisää Value kategorian jäsen m_numsymbols napauttamalla Add Variable. Muuttujan tulee olla tyypiltään short. Kirjoita Optional property name -ruutuun NumberOfSymbols ja napauta sitten OK. 5. Aseta sallituksi alarajaksi 3 ja ylärajaksi 7. Napauta OK. Tutki COneArmedBanditPropPage-luokan DoDataExchange()-funktiota. Huomaa, että DDX ja DDV -funktioiden lisäksi ClassWizard on lisännyt seuraavan rivin: DDP_Text(pDX, IDC_NUMSYMBOLS, m_numsymbols, _T( NumberOfSymbols )); Tämä on yksi MFC:n tarjoamista monista DDP_-etuliitteisistä funktioista, jotka siirtävät tietoa ActiveX-kontrollin ominaisuuksien ja ominaisuussivun välillä. Huomaa, että kontrollin ominaisuuden viestinimeä on käytetty niin, että luokan COneArmedBanditPropPage ja COneArmedBanditCtrl-luokan välistä tiedonsiirtoa varten ei enää tarvita lisäkoodia.
10 442 Microsoft Visual C MCSD Training Kit Perusominaisuussivut Koska kontrollille on lisätty ForeColor ja BackColor -ominaisuudet, täytyy myös niitä vastaavat ominaisuussivut toteuttaa, jotta käyttäjät pääsevät muuttamaan niiden ominaisuuksia. MFC sisältää kolme perusominaisuussivua, joita voidaan käyttää ActiveX-kontrollien kanssa: CLSID_ CColorPropPage, CLSID_CFontPropPage ja CLSID_CPicturePropPage. Nämä sivut sisältävät mainitussa järjestyksessä käyttöliittymän väri-, kirjasin- ja kuvaominaisuuksille. Perusominaisuussivun saat lisättyä lisäämällä toisen PROPPAGEID-makron OneArmedBandit.cpp-tiedoston koodiin seuraavalla tavalla: BEGIN_PROPPAGEIDS(COneArmedBanditCtrl, 2) PROPPAGEID(COneArmedBanditPropPage::guid) PROPPAGEID(CLSID_CColorPropPage) END_PROPPAGEIDS(COneArmedBanditCtrl) Huomaa, että toinen BEGIN_PROPPAGEIDS-makron parametreistä täytyy muuttaa niin, että se vastaa ActiveX-kontrollille määriteltyjen ominaisuussivujen määrää. OnDraw()-Funktio MFC ActiveX ControlWizardilla luodut kontrollit ovat käyttöliittymäkontrolleja. Tästä suuri osa kontrollikohtaisesta koodista liittyy kontrollin ulkoasun piirtämiseen. Kuten MFC:n dokumentti/näkymä-sovelluksessa, kaikki kontrollin piirtokoodi on sijoitettu yhteen OnDraw()-nimiseen funktioon. Seuraavassa ControlWizardin tekemä oletusfunktio: void COneArmedBanditCtrl::OnDraw( CDC* pdc, const CRect& rcbounds, const CRect& rcinvalid) { // TODO: Replace the following code with your own drawing code. pdc->fillrect(rcbounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH))); pdc->ellipse(rcbounds); } COleControl::OnDraw()-funktio saa osoittimen MFC:n laiterajapintaobjektiin, ja kontrollin näytöllä näkyvää aluetta vastaavan suorakaiteen määrittävän loogisen yksikön. Piirtokoodissa tulisi välttää kiinteiden arvojen käyttämistä ja kaikki piirtotapahtumat tulisi skaalata suorakaiteen mittasuhteisiin. Näin toimien varmistetaan, että kontrolli on aina näkyvissä ja että sen sisäiset mittasuhteet pysyvät kunnossa. OnDraw()-funktiolle väitetään myös suorakaide, joka edustaa kontrollin epäkelpoa aluetta ja jota voidaan näin käyttää piirtokoodin optimoimiseen.
11 Luku 11 ActiveX-kontrollien luominen 443 COneArmedBanditCtrl::OnDraw()-funktion toteutus Korvaa projektissasi oleva koodi seuraavalla: (Tämä koodi on asennettu oheisrompulta tiedostoon CH11_01.cpp.) void COneArmedBanditCtrl::OnDraw( CDC* pdc, const CRect& rcbounds, const CRect& rcinvalid) { // Get colors of stock properties COLORREF colorback = TranslateColor(GetBackColor()); COLORREF colorfore = TranslateColor(GetForeColor()); // Get dimensions of control float ctrlwidth = float(rcbounds.width()); float ctrlheight = float(rcbounds.height()); // Setup DC CBrush brush(colorback); CBrush * poldbrush = pdc->selectobject(&brush); CPen pen(ps_solid, 3, colorfore); CPen *poldpen = pdc->selectobject(&pen); CFont SymbolFont; CFont *poldfont; if(symbolfont. CreateFont(long(ctrlHeight / 1.1), long(ctrlwidth/6), 0, 0, 0, 0, 0, 0, SYMBOL_CHARSET, 0, 0, 0, 0, WingDings )); poldfont = pdc->selectobject(&symbolfont); else poldfont = SelectStockFont(pdc); // Draw bounding rectangle pdc->rectangle(rcbounds); pdc->setbkmode(transparent); // Draw text pdc->settextcolor(colorfore); RECT rect; ::CopyRect(&rect, rcbounds); CString strdisplay; strdisplay.format( %c %c %c, m_symbols[0], m_symbols[1], m_symbols[2]); pdc->drawtext(strdisplay, &rect, DT_SINGLELINE DT_CENTER DT_VCENTER );
12 444 Microsoft Visual C MCSD Training Kit // Draw vertical bars long onethird = long(ctrlwidth / 3); CPoint pttop(rcbounds.topleft()); CPoint ptbtm(rcbounds.left, rcbounds.bottom); pttop.x += onethird; ptbtm.x += onethird; pdc->moveto(pttop); pdc->lineto(ptbtm); pttop.x += onethird; ptbtm.x += onethird; pdc->moveto(pttop); pdc->lineto(ptbtm); } // Restore device context pdc->selectobject(poldfont); pdc->selectobject(poldpen); pdc->selectobject(poldbrush); Tämä funktio simuloi hedelmäpelin ruutua näyttämällä kolme Wingdingstyyppistä kirjainta, kuten kuvassa 11.1 näkyy. Itse merkit on sijoitettu kiinteäpituiseen merkkijonoon m_symbols, joka on COneArmedBanditCtrlluokan jäsenmuuttuja. Tämä jäsenmuuttuja täytyy lisätä ennen koodin kääntämistä. COneArmedBanditCtrl::m_symbols-merkkijonon lisääminen 1. Napauta ClassWizardissa hiiren kakkospainikkeella COneArmedBanditCtrl-luokkaa. Napauta Add Member Variable. Luo seuraava protected-jäsenmuuttuja: TCHAR m_symbols[3]; 2. Etsi COneArmedBanditCtrl-muodostin ja lisää seuraava koodirivi, joka alustaa muuttujan: _tcscpy(m_symbols, _T( JJJ )); Control-metodin toteutus Tekämättä on vielä Play()-metodi, joka simuloi pelin renkaiden pyörittämisen ja näyttää renkaisiin arvotut symbolit. Play()-funktiolle tehtiin tynkäfunktio samalla, kun metodi lisättiin kätyttöliittymään. Nyt täytyy kirjoittaa koodia, joka arpoo merkit COneArmedBanditCtrl::m_symbols-merkkijonoon.
13 Luku 11 ActiveX-kontrollien luominen 445 COneArmedBanditCtrl::Play()-funktion toteutus 1. Etsi Play()-funktion tynkä ja korvaa se seuraavalla koodilla: (Tämä koodi on asennettu oheisrompulta tiedostoon CH11_02.cpp.) void COneArmedBanditCtrl::Play() { srand((unsigned)time(null)); _tcscpy(m_symbols, _T( JJJ )); for(int i = 0; i < 3; i++) m_symbols[i] += UINT(rand() % m_numberofsymbols); InvalidateControl(); // repaints control if(m_symbols[0] == m_symbols[1] && m_symbols[1] == m_symbols[2]) FireJackpot(); } Modulo-operaattoria (%) käyttäen varmistetaan, että jokaisen m_symbolsmerkkijonon merkin arvoa lisätään satunnaisluvulla, joka on nollan ja m_numberofsymbols-arvon välillä. Kun kaikki kirjaimet ovat samoja, laukaistaan Jackpot-tapahtuma. 2. Käännä OneArmedBandit ActiveX-kontrolli painamalla F7. Kääntäjä ja linkkeri tekevät.ocx-päätteisen DLL:n output-hakemistoosi. Jos käännös onnistuu, kontrolli rekisteröidään tietokoneellesi. Kontrollin testaaminen ActiveX Control Test Container on hyödyllinen Visual Studion mukana toimitettava työkalu, jonka avulla voit ajaa ja testata koneellesi rekisteröityjä ActiveX-komponnentteja. Seuraavissa harjoituksissa käytetään ActiveX Control Test Containeria OneArmedBandit ActiveX-kontrollin ominaisuussivujen, tapahtumien ja Play()-metodin toimivuuden kokeilemiseen. OneArmedBandit-kontrollin kokeileminen 1. Valitse Visual C++:n Tools-valikosta ActiveX Control Test Container. Valitse Test Containerin Edit-valikosta Insert New Control. 2. Valitse Insert Control -dialogista OneArmedBandit Control ja napauta OK.
14 446 Microsoft Visual C MCSD Training Kit 3. Muuta kontrollin koko sopivaksi käyttämällä kontrollin reunoilla olevia kahvoja. 4. Napauta Edit-valikosta Properties. Muuta OneArmedBandit Control Properties -dialogin General-välilehdellä Number of symbols -ominaisuuden arvoksi Napauta Colors-välilehteä ja valitse kontrollin BackColor (taustaväri) ja ForeColor (edustan väri) arvot. 6. Napauta OK ja varmista, että kontrollin värit ovat oikeat. 7. Napauta kontrollia ja tarkista, että Click-tapahtuma huomiodaan Test Container -ikkunan alareunassa. 8. Valitse Control-valikosta Invoke Methods. Siirrä tarvittaessa Invoke Methods -dialogia niin, että näet kontrollin kokonaan ja tulosteet Test Container -ikkunan alareunassa. 9. Play (Method) olessa valittuna Method Name -alasvetovalikosta napauta Invoke, jolloin pääset pelaamaan peliä. Pelaa kunnes saat kolme samaa symbolia. Kun näin käy, pitäisi Jackpot-tapahtuman näkyä Test Container -ikkunan alareunassa. Ominaisuuksien säilyvyyden varmistaminen 1. Sulje ActiveX Control Test Container. Tallenna kehotettaessa istunto nimellä oab.tcs. 2. Avaa ActiveX Control Test Container uudelleen. Valitse File-valikon viimeksikäytettyjen tiedostojen luettelosta oab.tcs. OneArmedBanditkontrollin pitäisi avautua sen kokoisena ja värisenä kuin se on tallennettu. (COleControl-luokka huolehtii kontrollin mittasuhteiden serialisoinnista ilman ohjelmoijan toimenpiteitä.) 3. Valitse kontrolli napauttamalla sen reunusta. Varmista kontrollin ominaisuuksia tutkimalla, että NumberOfSymbols-ominaisuuden arvo on edelleen Sulje ActiveX Control Test Container.
15 Luku 11 ActiveX-kontrollien luominen 447 Oppitunnin yhteenveto Tällä oppitunnilla näit, kuinka helppoa ActiveX-kontrollin tekeminen on MFC:tä käyttäen. ActiveX ControlWizard luo joukon luokkia, jotka toteuttavat DLL:n, kontrollin ja ominaisuussivun. ControlWizard määrittelee erilliset rajapinnat kontrollin ominaisuuksille, metodeille ja tapahtumille. Nämä rajapinnat suunnitellaan ClassWizardilla. MFC ActiveX -kontrollit perustuvat COleControl-luokkaan, joka sisältää joukon jäsenfunktioita, jotka toteuttavat perusominaisuudet ja -tapahtumat, hakevat ulkoamäärätyt ominaisuudet säilöltä, toteuttavat ominaisuuksien tallentamisen ja yhdistävät kontrollin ominaisuudet ominaisuussivulle. Riippumatta mukautettujen metodien toteutuksesta suurin osa tarvittavasta lisäkoodista on kontrollin piirtokoodia, joka sijoitetaan kontrollin OnDraw()-funktioon.
16 448 Microsoft Visual C MCSD Training Kit Oppitunti 2: ActiveX-kontrollin tekeminen ATL:llä Tällä oppitunnilla tehdään OneArmedBandit ActiveX-kontrolli uudelleen käyttämällä ATL:ää. Näin voit vertailla MFC ja ATL -kontrolliohjelmoinnin eroja ja pystyt päättämään, kumpi tekniikoista sopii paremmin tarpeisiisi. Tämän oppitunnin jälkeen: Tiedät, kuinka ActiveX-kontrolli ohjelmoidaan ATL:llä. Tiedät, kuinka kontrollille lisätään ominaisuuksia ja metodeja. Tiedät, kuinka kontrollille tehdään ominaisuusikkuna ja kuinka kontrollin ominaisuudet saadaan tallennettua. Tiedät, kuinka ATL:n muunnosta COM:n yhteyspistearkkitehtuurista käytetään tapahtumien liittämiseen kontrolliin. Oppitunnin arvioitu kesto: 50 minuuttia Kontrollin lisääminen ATL COM-projektiin Kuten aina ATL COM-ohjelmoinnissa, luodaan ensin ATL-projekti ja lisätään sitten yksittäiset COM-objektit ATL:n Object Wizardilla. Seuraavissa harjoituksissa luodaan kontrollia varten DLL-projekti ja lisätään sitten ATL ActiveX-kontrolli. OneArmedBanditATL-projektin luominen 1. Valitse File-valikosta New. Valitse Projects-välilehdeltä ATL COM AppWizard. 2. Kirjoita Project name -ruutuun OneArmedBanditATL ja napauta OK. 3. Varmista ATL COM AppWizard dialogista, ettät Dynamic Link Library (DLL) on valittu ja napauta Finish. 4. Tutki uudelleen New Project Information -dialogi ja napauta OK. ATLBandit-kontrollin lisääminen 1. Valitse Insert-valikosta New ATL Object. 2. Valitse Category-luettelosta Controls. ATL Object Wizardin pitäisi avautua kuten kuvassa 11.5 seuraavalla sivulla.
17 Luku 11 ActiveX-kontrollien luominen 449 Kuva 11.5 ATL Object Wizard ATL Object Wizard osaa näyttää useita erityyppisiä kontrolleja, kuten: Full controls Kontrollit, jotka voidaan sijoittaa mihin tahansa ActiveX:ää tukevaan säilöön. Lite controls Kontrollit, jotka voidaan sijoittaa Internet Exploreriin, mutta joista puuttuvat monien muiden säilöjen vaatimat rajapinnat. Composite controls Kontrollit, jotka voivat sisältää muita ActiveXkontrolleja. Tällaisia kontrolleja ovat esimerkiksi dialogit. HTML controls Kontrollit, joissa on HTML-sivujen näyttämistä varten upotettu Web-selainkontrolli. Näitä kontrolleja käsitellään tarkemmin luvussa Valitse Objects-luettelosta Full Control. Napauta Next. 4. Napauta Names-välilehteä. Kirjoita Short Name -ruutuun ATLBandit. 5. Valitse Attributes-välilehdeltä Support Connection Points -vaihtoehto. 6. Siirrä Stock Properties -välilehdellä >-painiketta käyttämällä Background Color ja Foreground Color -perusominaisuudet Not Supported -luettelosta Supported-luetteloon, kuten kuvassa Kuva 11.6 Perusominaisuuksien valinta ATL Object Wizardissa
18 450 Microsoft Visual C MCSD Training Kit 7. Lisää ATLBandit ActiveX-kontrolli projektiin napauttamalla OK. ClassViewissä nähdään, että wizard on lisännyt IATLBandit-rajapinnan ja CATLBandit-toteutusluokan. CATLBandit-luokka on periytetty ATL:n CComControl-luokasta (samoin kuin moni muukin luokka). Avaa ATLBandit.htiedosto ja etsi COM-karttarakenne. Näet, että CATLBandit-luokka tukee monia ActiveX-kontrollisäilöjen vaatimia rajapintoja. Heti COM-kartan jälkeen näet seuraavan ominaisuussivurakenteen: BEGIN_PROP_MAP(CATLBandit) PROP_DATA_ENTRY( _cx, m_sizeextent.cx, VT_UI4) PROP_DATA_ENTRY( _cy, m_sizeextent.cy, VT_UI4) PROP_ENTRY( BackColor, DISPID_BACKCOLOR, CLSID_StockColorPage) PROP_ENTRY( ForeColor, DISPID_FORECOLOR, CLSID_StockColorPage) // Example entries // PROP_ENTRY( Property Description, dispid, clsid) // PROP_PAGE(CLSID_StockColorPage) END_PROP_MAP() ATL luo ominaisuuskarttarakenteen, jotta ominaisuuksien tallentaminen olisi helpommin toteutettavissa. Edellisestä koodista nähdään, että perusominaisuuksia, myös kontrollin mittasuhteita, koskevat merkinnät on jo tehty. Huomaa, että PROP_ENTRY-makrojen avulla on mahdollista liittää ominaisuussivu ominaisuuteen, ja että väriominaisuussivu on jo liitetty ForeColor ja BackColor ominaisuuksiin. Ominaisuuksien lisääminen Seuraavaksi lisätään luokkaan mukautettu NumberOfSymbols-ominaisuus. NumberOfSymbols-ominaisuuden lisääminen 1. Napauta ClassViewissä hiiren kakkospainikkeella IATLBandit. Napauta Add Property. 2. Valitse Add Property To Interface -dialogissa ominaisuustyypiksi short. Kirjoita Property Name -ruutuun NumberOfSymbols. 3. Luo ominaisuuden toteuttava funktio napauttamalla OK. Muista, että ATL:ssä täytyy määritellä ominaisuuden arvon sisältävä jäsenmuuttuja sekä tehdä Get ja Put -funktiot, joiden avulla tietoja haetaan ja viedään jäsenmuuttujiin.
19 Luku 11 ActiveX-kontrollien luominen 451 NumberOfSymbols-ominaisuuden toteutus 1. Lisää suojattu short-tyyppinen jäsenmuuttuja m_numberofsymbols CATLBandit-luokkaan. 2. Avaa ClassViewissä IATLBandit-rajapinta CATLBandit-luokan alta ja etsi get_numberofsymbols() ja put_numberofsymbols() -funktiot. Tee funktiot seuraavassa koodissa esitellyllä tavalla: STDMETHODIMP CATLBandit::get_NumberOfSymbols(short *pval) { *pval = m_numberofsymbols; } return S_OK; STDMETHODIMP CATLBandit::put_NumberOfSymbols(short newval) { newval = newval < 3? 3 : newval; newval = newval > 7? 7 : newval; m_numberofsymbols = newval; SetDirty(TRUE); } return S_OK; Huomaa, että put_ NumberOfSymbols()-funktio tarkastaa, että NumberOfSymbols-ominaisuuteen asetetaan käypä arvo. Huomaa myös SetDirty()-funktion kutsu. Tätä funktiota tulee kutsua talletettavan ominaisuuden muuttuessa, jolloin säilö voi kysyä käyttäjältä, talletetaanko muutos vai hylätäänkö kontrollin tilaan tehdyt muutokset. NumberOfSymbolsominaisuuden tallennustoiminto tehdään sen jälkeen, kun on ensin lisätty ominaisuussivu, joka mahdollistaa ominaisuuden arvon muuttamisen. Tapahtumien lisääminen Seuraavaksi toteutetaan kontrollin Click ja Jackpot tapahtumat. COMtapahtumien ymmärtäminen on helpompaa, jos avaat projektin IDL-tiedoston, OneArmedBanditATL.idl, ja tutkit tyyppikirjaston määrittelyjä, jotka näet seuraavalla sivulla.
20 452 Microsoft Visual C MCSD Training Kit [ uuid( faa-11d3-935d-0080c7fa0c3e), version(1.0), helpstring( OneArmedBanditATL 1.0 Type Library ) ] library ONEARMEDBANDITATLLib { importlib( stdole32.tlb ); importlib( stdole2.tlb ); [ uuid( faa-11d3-935d-0080c7fa0c3e), helpstring( _IATLBanditEvents Interface ) ] dispinterface _IATLBanditEvents { properties: methods: }; }; [ uuid( f-6faa-11d3-935d-0080c7fa0c3e), helpstring( ATLBandit Class ) ] coclass ATLBandit { [default] interface IATLBandit; [default, source] dispinterface _IATLBanditEvents; }; ONEARMEDBANDITATLLib-tyyppikirjaston määrittely sisältää erillisen _IATLBanditEvents-rajapinnan määrittelyn. Tämä rajapinta määritellään ATLBandit coclass-lohkon sisällä osoittaen, että ATLBandit-kontrolli julkistaa _IATLBanditEvents-rajapinnan. Huomaa kuitenkin, että rajapinnan määrittelyssä on mukana IDL-attribuutti [source], joka määrittelee, että _IATLBanditEvents-rajapinta on tapahtumien lähde. Tällaista rajapintaa kutsutaan yhteyspisteeksi (connection point). COM-objekti, joka julkistaa yhteyspisteen, toteuttaa IConnectionPointContainer-rajapinnan, joka huolehtii lähderajapintojen yhteykisistä vastaavaan asiakasobjektiin, josta käytetään nimitystä sink. Sink-objekti toteuttaa lähdeobjektin määrittelemät toiminnot. Sink-objektin rajapinnan osoitin välitetään lähdeobjektille yhteyspistemekanismin kautta. Tämän osoittimen avulla lähde voi muodostaa yhteyden metodiensa toteutuksiin. Laukaistessaan tapahtuman lähdeobjekti kutsuu vastaavaa sink-rajapinnan metodia. Ensimmäinen tehtävä tapahtumaa määriteltäessä on tapahtumaa edustavan metodin lisääminen lähderajapintaan.
21 Luku 11 ActiveX-kontrollien luominen 453 Click() ja Jackpot() -tapahtumien metodien lisääminen 1. Napauta ClassViewissä hiiren kakkospainikkeella _IATLBanditEvents. Valitse pikavalikosta Add Method. 2. Valitse void paluuarvon tyypiksi. Anna metodin nimeksi Click. 3. Luo samalla tavalla Jackpot-niminen void-metodi. Kun metodit on lisätty lähderajapintaan, käytetään ATL Wizardia yhteyspisteen tekemiseen. ATL käyttää tyyppikirjaston tietoja tämän toteutuksen muodostamisessa, joten tyyppikirjasto täytyy ensin kääntää. Tyyppikirjaston kääntäminen 1. Siirry FileViewiin ja etsi OneArmedBanditATL.idl-tiedosto. 2. Napauta hiiren kakkospainikkeella OneArmedBanditATL.idl ja valitse sitten Compile OneArmedBanditATL.idl. 3. Kun käännös on suoritettu palaa ClassViewiin. Nyt voidaan yhteyspiste toteuttaa ATL Wizardilla. ATLBandit-kontrollin yhteyspisteen tekeminen 1. Napauta hiiren kakkospainikkeella CATLBandit-luokkaa ja valitse Implement Connection Point. Implement Connection Point Wizard avautuu kuten kuvassa Kuva 11.7 Implement Connection Point Wizard 2. Valitse Implement Connection Point Wizardissa _IATLBanditEventsvalintaruutu ja napauta OK.
22 454 Microsoft Visual C MCSD Training Kit Wizard luo proxy-luokan (jolla ei ole mitään tekemistä parametrien järjestelyssä käytettävien proxy-objektien kanssa), joka sisältää proxyfunktiot, jotka toteuttavat tapahtumametodit, jotka lisättiin tapahtumarajapintaan. Jos katsot ClassViewiin, näet, että projektiisi on lisätty CProxy_IATLBanditEventsluokka, ja että se sisältää funktiot Fire_Click() ja Fire_Jackpot(), joiden avulla kontrollin tapahtumat laukaistaan. ATL muuttaa CATLBandit-luokan toteutusta niin, että se periytyy CProxy_IATLBanditEvents class-luokasta. Näin kontrolliluokkasi jäsenet pystyvät käsittelemään Fire_Click() ja Fire_Jackpot() metodeja. Implement Connection Point Wizard luo myös seuraavan yhteyspistekartan luokkaasi. BEGIN_CONNECTION_POINT_MAP(CATLBandit) CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink) CONNECTION_POINT_ENTRY(DIID IATLBanditEvents) END_CONNECTION_POINT_MAP() Varmista, että yhteyspistekartta näyttää täsmälleen samanlaiselta kuin mallissa ATL ei aina pysty muodostamaan tätä karttaa oikein, mistä aiheutuu käännösvirheitä. Voit nyt käyttää tapahtumien proxyfunktioita kontrolliesi tapahtumien laukaisemiseen. Tämän havainnollistamiseksi toteutetaan käsittelijä, joka laukaisee Click()-tapahtuman, kun kontrollia napautetaan. OnLButtonDown()-käsittelijän lisääminen 1. Napauta ClassViewissä hiiren kakkospainikkeella CATLBandit-luokkaa. Valitse pikavalikosta Add Windows Message Handler. 2. Valitse New Windows messages/events -luettelosta WM_LBUTTONDOWN. 3. Lisää OnLButtonDown()-funktio napauttamalla Add and Edit. Samalla siirryt funktion toteuttavaan koodiin, joka on määritelty CATLBandit-luokan määrittelyssä. Huomaa, että ATL ylläpitää omanlaistaan sanomakartaa, joka on sijoitettu yhteyspistekartan alle. 4. Korvaa OnLButtonDown()-funktion sisällä oleva //TODO-kommentti seuraavalla koodirivillä: Fire_Click();
23 Luku 11 ActiveX-kontrollien luominen 455 Metodien lisääminen Seuraavaksi lisätään kontrollin rajapintaan Play()-metodi ja lisätään metodin toteuttamiseen tarvittava koodi. Play()-metodin lisääminen 1. Napauta ClassViewissä hiiren kakkospainikkeella IATLBandit-rajapintaa. Valitse pikavalikosta Add Method. 2. Kirjoita Add Method to Interface -dialogissa Method Name -ruutuun Play. 3. Luo metodi napauttamalla OK. Play()-metodin toteuttaminen 1. Samoin kuin teit MFC OneArmedBandit-kontrollille oppitunnilla 1, lisää seuraava suojattu jäsenmuuttuja CATLBandit-luokkaan: TCHAR m_symbols[3]; Lisää seuraava alustuskomento CATLBandit-muodostimeen: _tcscpy(m_symbols, _T( JJJ )); 2. Avaa ClassViewissä IATLBandit-rajapinta CATLBandit-luokan alta. 3. Kaksoisnapauta Play()-metodia IATLBandit-rajapinnan alta, jolloin pääset muokkaamaan CATLBandit::Play()-funktiota. 4. Lisää tarvittava koodi CATLBandit::Play()-funktion runkoon niin, että se näyttää seuraavalta: (Tämä koodi on asennettu oheisrompulta tiedostoon CH11_03.cpp.) STDMETHODIMP CATLBandit::Play() { srand((unsigned)time(null)); _tcscpy(m_symbols, _T( JJJ )); for(int i = 0; i < 3; i++) m_symbols[i] += UINT(rand() % m_numberofsymbols); // repaint control m_spinplacesite->invalidaterect(null, TRUE); if(m_symbols[0] == m_symbols[1] && m_symbols[1] == m_symbols[2]) Fire_Jackpot(); } return S_OK;
24 456 Microsoft Visual C MCSD Training Kit 5. Lisää seuraava rivi ATLBandit.cpp-tiedoston alkuun: #include <time.h> Ominaisuussivun luominen Seuraavaksi tehdään Symbols-ominaisuussivu, jonka avulla käyttäjä voi asettaa NumberOfSymbols-ominaisuuden arvon. ATL asettaa kontrollin ominaisuusikkunan jokaisen sivun erillisiksi objekteiksi, joiden toteutuksesta huolehtii IPropertyPage-luokasta periytetty luokka. Seuraavassa harjoituksessa projektiin lisätään uusi ominaisuusikkuna luokka. Symbols-ominaisuussivun lisääminen 1. Valitse Insert-valikosta New ATL Object. Valitse Category-luettelosta Controls. 2. Valitse Objects-luettelosta Property Page. Napauta Next. 3. Napauta Names-välilehteä. Kirjoita Short Name -ruutuun BanditPP. 4. Kirjoita Strings-välilehden Title-ruutuun Symbols. Poista tekstit kahdesta muusta ruudusta. 5. Lisää ominaisuusikkuna napauttamalla OK. Sivun dialogimalli avautuu dialogieditoriin. 6. Tee dialogimalli aivan kuin MFC-kontrollillekin (palaa kuvaan 11.4). Lisää selitetekstikontrolli ja numeerinen muokkausruutu, jonka tunnisteeksi tulee IDC_NUMSYMBOLS. Jos siirryt takaisin ClassViewiin, näet, että CBanditPP-luokka on lisätty projektiin. ATL Object Wizard on tehnyt IPropertyPageImpl::Apply()-funktion tähän luokkaan. Apply() suoritetaan ominaisuusikkunan käyttäjän napautettua OK tai Apply -painiketta. Seuraavaksi lisätään tämän funktion toteuttamiseen tarvittava koodi. CBanditPP::Apply()-funktion toteutus Etsi CBanditPP::Apply()-funktio BanditPP.h-tiedostosta. Korvaa esimerkkikoodi seuraavalla toteutuksella: STDMETHOD(Apply)(void) { CComQIPtr<IATLBandit> pibandit(m_ppunk[0]); pibandit->put_numberofsymbols(getdlgitemint(idc_numsymbols)); } m_bdirty = FALSE; return S_OK;
25 Luku 11 ActiveX-kontrollien luominen 457 Tämä funktio asettaa kontrollin NumberOfProperties-ominaisuudeksi muokkausruudusta saadun numeroarvon. Huomaa kuinka ATL:n osoitinluokkaa CComQIPtr käytetään IATLBandit-osoittimen hakemiseen. Jäsenmuuttuja m_ppunk on IUnknown-osoittimista muodostuva taulukko, jossa olevat osoittimet viittaavat ominaisuussivuun yhdistettyihin objekteihin. Apply()-funktio tallettaa muokkausruutukontrollin arvon pysyvään IATLBandit: :NumberOfSymbols-ominaisuuteen. Muokkausruutukontrollin alustamiseen tarvittava funktio täytyy tehdä myös. Tämä funktio on oikeastaan Apply()-funktio takaperin. CBanditPP::OnInitDialog()-funktion toteutus 1. Napauta ClassWizardissa hiiren kakkospainikkeella CBanditPP-luokkaa. Valitse pikavalikosta Add Windows Message Handler. 2. Valitse New Windows messages/events-luettelosta WM_INITDIALOGsanoma. 3. Lisää OnInitDialog()-dialogi napauttamalla Add and Edit. Siirryt samalla funktion toteutukseen. 4. Tee funktion toteutus seuraavassa koodissa esitetyllä tavalla: LRESULT OnInitDialog(UINT umsg, WPARAM wparam, LPARAM lparam, BOOL& bhandled) { CComQIPtr<IATLBandit> pibandit(m_ppunk[0]); } short i = 0; pibandit->get_numberofsymbols(&i); SetDlgItemInt(IDC_NUMSYMBOLS, i); return 0; Tässä vaiheessa täytyy lisätä ilmoitusfunktio, joka ilmaisee, että ominaisuussivua on muokattu. Tämän funktion tulee käsitellä EN_CHANGE-tapahtuma, joka laukeaa käyttäjän muuttaessa muokkausruudussa olevaa arvoa. CBanditPP::OnChangeNumsymbols()-funktion toteutus 1. Napauta ClassWizardissa hiiren kakkospainikkeella CBanditPP-luokkaa. Valitse pikavalikosta Add Windows Message Handler. 2. Valitse Class or object to handle -luettelosta IDC_NUMSYMBOLSobjekti. 3. Valitse New Windows messages/events-luettelosta EN_CHANGEtapahtuma. 4. Napauta Add and Edit ja sitten OK. Näin lisätään OnChangeNumsymbols()-funktio ja siirrytään samalla sen toteuttavaan koodiin.
26 458 Microsoft Visual C MCSD Training Kit 5. Korvaa //TODO-kommentti seuraavalla koodirivillä: SetDirty(TRUE); Nyt, kun ominaisuussivu on kokonaisuudessaan valmis, voidaan lisätä koodi, joka tallentaa NumberOfSymbols-ominaisuuden arvon. NumberOfSymbols-ominaisuuden tekeminen pysyväksi 1. Etsi ominaisuuskartasta ATLBandit.h-tiedosto. 2. Lisää uusi NumberOfSymbols-ominaisuutta koskeva merkintä niin, että ominaisuuskartta näyttää lopulta seuraavalta: BEGIN_PROP_MAP(CATLBandit) PROP_DATA_ENTRY( _cx, m_sizeextent.cx, VT_UI4) PROP_DATA_ENTRY( _cy, m_sizeextent.cy, VT_UI4) PROP_ENTRY( NumberOfSymbols, 1, CLSID_BanditPP) PROP_ENTRY( BackColor, DISPID_BACKCOLOR, CLSID_StockColorPage) PROP_ENTRY( ForeColor, DISPID_FORECOLOR, CLSID_StockColorPage) END_PROP_MAP() PROP_ENTRY-makron toinen parametri on DISPID, joka voidaan löytää IDLtiedostosta. CLSID_BanditPP-vakio on määritelty OneArmedBanditATL_i.ctiedostossa. Kontrollin piirtäminen Jäljellä on vain piirtokoodin toteutus. Kuten MFC:n COleControl-luokassakin, CComControl-luokka sisältää OnDraw()-funktion, joka sisältää piirtokoodin. CComControl::OnDraw()-funktio saa viittauksen ATL_DRAWINFOrakenteeseen, joka sisältää, monien muiden asioiden lisäksi, piirtopinnan kahvan ja osoittimen RECT-rakenteeseen, joka osoittaa kontrollin suorakaiteen reunat. Piirtopinta sisältyy HDC:hen, joka on MFC-luokkaan CDC-kiedottu Windowsin alkuperäinen tietotyyppi. Tämä tarkoittaa sitä, että kontrollin muodostamiseen täytyy käyttää GDI API -funktioita. GDI-funktiot ovat samanlaisisa kuin vastaavat CDC-funktiot, tärkein ero on, että ne ottavat ensimmäiseksi argumentikseen HDC:n. Jos vertaat CATLBandit::OnDraw()-funktiota ja edellisen oppitunnin COneArmedBanditCtrl::OnDraw()-funktioita keskenään, saat hyvän käsityk-sen siitä, kuinka tämä kaikki toimii. CATLBandit::OnDraw()-funktion toteutus Korvaa ATLBandit.h-tiedostossa oleva funktio seuraavalla versiolla: (Tämä koodi on asennettu oheisrompulta tiedostoon CH11_04.cpp.) HRESULT OnDraw(ATL_DRAWINFO& di) { const RECT& rc = *reinterpret_cast<const RECT*>(di.prcBounds); HDC dc = di.hdcdraw;
27 Luku 11 ActiveX-kontrollien luominen 459 COLORREF colorback, colorfore; OleTranslateColor(m_clrForeColor, NULL, &colorfore); OleTranslateColor(m_clrBackColor, NULL, &colorback); // Get dimensions of control float ctrlwidth = float(rc.right - rc.left); float ctrlheight = float(rc.bottom - rc.top); // Set up DC HBRUSH brush = CreateSolidBrush(colorBack); HBRUSH oldbrush = static_cast<hbrush>(selectobject(dc, brush)); HPEN pen = CreatePen(PS_SOLID, 3, colorfore); HPEN oldpen = static_cast<hpen>(selectobject(dc, pen)); HFONT SymbolFont = CreateFont(long(ctrlHeight / 1.1), long(ctrlwidth/6), 0, 0, 0, 0, 0, 0, SYMBOL_CHARSET, 0, 0, 0, 0, WingDings ); HFONT oldfont = static_cast<hfont>(selectobject(dc, SymbolFont)); // Draw bounding rectangle Rectangle(dc, rc.left, rc.top, rc.right, rc.bottom); SetBkMode(dc, TRANSPARENT); // Draw text SetTextColor(dc, colorfore); RECT rect; CopyRect(&rect, &rc); TCHAR strdisplay[5]; _stprintf(strdisplay, %c %c %c, m_symbols[0], m_symbols[1], m_symbols[2]); DrawText(dc, strdisplay, 5, &rect, DT_SINGLELINE DT_CENTER DT_VCENTER ); // Draw vertical bars long onethird = long(ctrlwidth / 3); POINT pttop = { rc.left, rc.top }; POINT ptbtm = { rc.left, rc.bottom }; pttop.x += onethird; ptbtm.x += onethird; MoveToEx(dc, pttop.x, pttop.y, NULL); LineTo(dc, ptbtm.x, ptbtm.y); pttop.x += onethird; ptbtm.x += onethird; MoveToEx(dc, pttop.x, pttop.y, NULL); LineTo(dc, ptbtm.x, ptbtm.y);
28 460 Microsoft Visual C MCSD Training Kit // Restore device context SelectObject(dc, oldfont); SelectObject(dc, oldpen); SelectObject(dc, oldbrush); DeleteObject(brush); DeleteObject(pen); DeleteObject(SymbolFont); } return S_OK; Voit nyt kääntää ATLBandit-kontrollin. Kokeile kontrollin näyttöä, ominaisuussivuja, Play()-metodia, sekä Click ja Jackpot -tapahtumia lataamalla kontrolli ActiveX Control Test Containeriin. MFC vai ATL? Sinulla pitäisi nyt olla hyvä kuva MFC:n ja ATL:n eroavaisuuksista ActiveXkontrolleja ohjelmoitaessa. MFC tekee kontrollin ohjelmoinnista helpon toimenpiteen kätkemällä lähes kaikki COM-ohjelmoinnin monimutkaisuudet. Vaikka kontrollien ohjelmoiminen ATL:llä vaatiikin enemmän työtä, opit COMohjelmointitaitojesi karttuessa todennäköisesti arvostamaan sen antamia vaikutusmahdollisuuksia. ATL ActiveX-kontrollit ovat pienempiä kuin MFC-vastineensa ja oikein ohjelmoituina toimivat paremmin. ATLBandit-projektin itsenäinen (MinDependency) käännös tuottaa kontrollin, jonka koko on 100 Kt. Staattisesti MFC-kirjastoihin linkitetty OneArmedBandit.ocx on kooltaan noin 264 Kt. Kun komponentti linkitetään MFC-kirjastoihin dynaamisesti, koko putoaa noin 36 kilotavuun, jolloin MFC:stä tulee houkutteleva vaihtoehto, mikäli kohdeympäristössä voidaan olettaa MFC:n DLL:ien olevan asennettuina. Oppitunnin yhteenveto ATL:ää voidaan käyttää pienten, nopeiden ja tehokkaiden kaikissa säilöissä toimivien ActiveX-kontrollien ohjelmoimiseen. ATL:ssä ActiveX-kontrollit toteuttaa CComControl-luokasta periytetty luokka. ActiveX-kontrollit toteuttavat myös monia ActiveX-kontrollisäilöjen vaatimia COM-rajapintoja. ATL-kontrolliluokka sisältää ominaisuuskarttarakenteen, joka toteuttaa ominaisuuksien tallettamisen, sanomakartan, joka käsittelee Windowsin sanomat, COM-yhteyspisteen, joka huolehtii ActiveX-tapahtumista. Voit toteuttaa kontrollin ominaisuussivun sijoittamalla ominaisuussivun COMobjektin projektiisi. Kontrolli piirretään käyttämällä GDI API -funktioita CComControl::OnDraw()-funktiossa.
29 Luku 11 ActiveX-kontrollien luominen 461 Laboratorio 11: ActiveX-kontrollin käyttäminen sovelluksessa Laboratoriossa 7 näit, kuinka STUpload-sovellus käytti kahta ActiveX-kontrollia Microsoft ADO Data Control ja Microsoft DataGrid Control osana käyttöliittymäänsä. STUpload-sovellukseen ei lisätä enää uusia ActiveXkontrolleja. Sen sijaan opit, kuinka tässä luvussa luomaasi OneArmedBanditkontrollia käytetään osana Windows-sovellusta. Tämä VirtualSlot niminen sovellus on kuvassa Kuva 11.8 VirtualSlot-sovellus Sovellus kutsuu OneArmedBandit-kontrollin julkistamaa Play()-metodia ja käsittelee Jackpot-tapahtuman. Sovelluksen kehitystyön aikana asetetaan ominaisuussivun avulla käytettävien symbolien määrä ja kontrollin värit. Jos et ole tehnyt tämän luvun harjoituksia, voit käyttää kansiossa Chapter 11\Lab olevaa OneArmedBandit-kontrollia. Tämän kontrollin rekisteröinti tapahtuu seuraavasti: 1. Kopioi OneArmedBandit.ocx-tiedosto sopivaan paikkaan kiintolevyllesi. 2. Avaa Käynnistä-valikosta komentokehote ja siirry hakemistoon, jossa OneArmedBandit.ocx-tiedosto on. 3. Rekisteröi kontrolli koneellesi seuraavalla komennolla: regsvr32 onearmedbandit.ocx Nyt olet valmis aloittamaan VirtualSlot-sovelluksen tekemiseen. VirtualSlot-projektin luominen 1. Valitse Visual C++:n File-valikosta New. 2. Valitse MFC AppWizard (exe) uuden VirtualSlot-projektin luomista varten. Napauta OK. 3. Napauta AppWizardin vaiheessa 1 Dialog Based ja sitten Finish.
30 462 Microsoft Visual C MCSD Training Kit 4. Vahvista valinta napauttamalla OK. IDD_VIRTUALSLOT_DIALOG-dialogimalli avautuu dialogieditoriin. Luot dialogia muokkaamalla VirtualSlot-sovelluksen käyttöliittymän, joka koostuu OneArmedBandit-kontrollista, Play-painikkeesta ja Close-painikkeesta. IDD_VIRTUALSLOT_DIALOG-dialogimallin muokkaaminen 1. Poista //TODO-teksti. 2. Muuta OK-painikkeen otsikoksi Close. Yhdistä Cancel-painikkeeseen uusi tunniste ID_PLAY, ja muuta sen otsikoksi Play. 3. Järjestä painikkeet kuten kuvassa OneArmedBandit-kontrollin lisääminen projektiin 1. Valitse Project-valikosta Add to Project, ja napauta sitten Components and Controls. 2. Kaksoisnapauta Components and Controls Galleryn Registered ActiveX Controls -kansiota, jolloin näet kaikki järjestelmääsi rekisteröidyt ActiveXkontrollit. 3. Valitse OneArmedBandit Control ja napauta Insert. 4. Lisää komponentti napauttamalla OK. Vahvista COneArmedBandit-luokan luominen napauttamalla OK. 5. Sulje Components and Controls Gallery napauttamalla Close. Huomaa, että OneArmedBandit-kontrollin oletus OCX-kuvake on lisätty Controls-työkaluriville. Tässä luvussa luomasi MFC OneArmedBandit -projekti sisältää IDB_ONEARMEDBANDIT-bittikartan, jota muokkaamalla kontrollille voidaan tehdä erilainen työkalupainike. Näet ClassViewissä COneArmedBandit-luokan, jonka Components and Controls Gallery on luonut. Tämä luokka sisältää käärefunktiot, joiden avulla voidaan käsitellä kontrollin ominaisuuksia ja metodeja. Create()-funktion avulla voidaa luoda kontrollin ilmentymä dynaamisesti (esimerkiksi CViewobjektissa). COneArmedBandit-kontrollin ilmentymän sijoittaminen 1. Napauta Controls-työkalurivin OneArmedBandit-painiketta ja sijoita kontrolli dialogiin. Muuta kontrollin ja dialogin kokoa niin, että lopputulos vastaa kuvaa 11.8.
31 Luku 11 ActiveX-kontrollien luominen Siirry muokkaamaan kontrollin ominaisuuksia painamalla ENTER OneArmedBandit-kontrollin ollessa valittuna. Tuttujen ominaisuussivujen lisäksi ilmestyvät näkyviin myös säilön luomat General ja All -sivut. 3. Muuta Control-sivulla Number of Symbols:n arvoksi Aseta Colors-sivulla ForeColor ja BackColor -ominaisuuksien värit. Seuraavaksi muokataan CVirtualSlotDlg-dialogiluokkaa niin, että se sisältää Play-painikkeen toiminnan ja käsittelee Jackpot-tapahtuman. Play-painikkeen toteuttaminen 1. Avaa ClassWizard painamalla CTRL+W. Valitse Member Variables -välilehdeltä IDC_ONEARMEDBANDIT1-kontrollitunniste. Luo m_bandit-niminen COneArmedBandit-tyyppinen Control-jäsenmuuttuja napauttamalla Add Variable. 2. Valitse Message Maps -sivulla ID_PLAY-objektitunniste. Lisää BN_CLICKED-sanomalle käsittelijä OnPlay(). 3. Napauta Edit Code. Korvaa OnPlay()-funktion toteutuksesta //TODOkommentti seuraavalla koodirivillä: m_bandit.play(); Jackpot-tapahtuman käsittely 1. Valitse ClassWizardin Message Maps -välilehdeltä kontrollitunniste IDC_ONEARMEDBANDIT1. 2. Valitse Jackpot-sanoma ja luo OnJackpotOnearmedbanditctrl1()-funktio napautamalla Add Function. 3. Napauta Edit Code. Korvaa funktion toteutuksesta //TODO-kommentti koodirivillä: AfxMessageBox( Jackpot! ); 4. Voit nyt kääntää ja käynnistää VirtualSlot-sovelluksen. Pelaa hedelmäpeliä napauttamalla Play-painiketta. Pelaa kunnes saat jackpotin!
32 464 Microsoft Visual C MCSD Training Kit Kertaus 1. Kuinka ominaisuuksien tallentaminen tehdään MFC ActiveX-kontrollissa? 2. Mikä on DDP-funktion tehtävä, ja missä niitä käytetään? 3. Mikä on yhteyspiste? 4. Kuinka CComControl-luokasta periytetty objekti käsittelee Windowsin sanomia? 5. Missä tilanteissa MFC soveltuu parhaiten käytettäväksi ActiveX-kontrollin tekemiseen?
Sovelluksen toimintojen toteuttaminen
161 L U K U 5 Sovelluksen toimintojen toteuttaminen Oppitunti 1: Dialogien käyttäminen 162 Oppitunti 2: Sovelluksen tietojen näyttäminen ja tulostaminen 183 Oppitunti 3: Useiden säikeiden käyttäminen 197
Sovellusten ohjelmointi Microsoft Foundation Classes -luokkien avulla
73 L U K U 3 Sovellusten ohjelmointi Microsoft Foundation Classes -luokkien avulla Oppitunti 1: Yleiskatsaus MFC:hen 74 Oppitunti 2: Win32-sovellusarkkitehtuuri 84 Oppitunti 3: MFC-sovelluskehys 89 Oppitunti
Visual C++ -ohjelman tekeminen ja suunnittelu
Visual C++ -ohjelman tekeminen ja suunnittelu OSA I LUKU 1 5 1 LUKU Visual C++ -ohjelman tekeminen ja suunnittelu Windows sovellusten tekeminen AppWizardilla Sovelluksen muokkaaminen resurssieditorilla
Jypelin käyttöohjeet» Ruutukentän luominen
Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen
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ä.
ActiveX-kontrollien käyttö
OSA II LUKU 9 181 9 LUKU Kehittyneiden ActiveX-kontrollien lisääminen projektiisi Kontrollin ominaisuuksien ja tyylien muokkaaminen Kontrollista saadun tiedon hyödyntäminen ohjelmassa 182 ActiveX-kontrollit
Harjoitustyö: virtuaalikone
Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman
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
Web Services tietokantaohjelmoinnin perusteet
ASP.NET Web Services Web Services tietokantaohjelmoinnin 2 (22) Sisällys Harjoitus 1: Tietokannat ja Web Services... 3 Harjoitus 2: Windows Client... 10 Harjoitus 3: Datan päivitys TableAdapterin avulla...
Visual C++ Development Environment
39 L U K U 2 Visual C++ Development Environment Oppitunti 1: MFC-projektin luominen 40 Oppitunti 2: Ohjelmointiympäristö 49 Oppitunti 3: Lähdekoodin hallinta 58 Laboratorio 2: STUpload-projektin luominen
Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016)
Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016) Tietokoneavusteinen opetus -kurssilla opetetaan Adobe Flash CS6:n käyttämistä neljänä kertana: 11.3.2016, 15.3.2016, 18.3.2016 ja 1.4.2016. Harjoituskerroilla
TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE
TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE HERVANNAN KIRJASTON TIETOTORI Insinöörinkatu 38 33720 Tampere 040 800 7805 tietotori.hervanta@tampere.fi TALLENNETAAN MUISTIKULLE JA MUISTIKORTILLE 1 Muistitikun
Microsoft Visual Studio 2005
Sovelluksen jako palvelimiksi: Palvelin on sille annettuun vastuulliseen tehtävään erikoistunut sovellusosa. Käyttöliittymäpalvelin (Web-palvelin) vastaa käyttöliittymän toteuttamisesta. Web-palvelin toteuttaa
Kehitysympäristö LUKU. Developer Studio kehitysympäristön alkeet. Liikkuminen projektin työtilassa ja sen eri näkymissä
OSA I LUKU 2 23 2 LUKU Developer Studio kehitysympäristön alkeet Liikkuminen projektin työtilassa ja sen eri näkymissä Projektien hallinnan vaatimat asetukset 24 Developer Studio - ympäristön räätälöinti
Tekstikontrollit LUKU. Tekstin ja sanomien esittäminen valintaikkunoissa. Tekstin muokkaaminen suorituksen aikana. Tiedon tarkistaminen syötön aikana
OSA II LUKU 5 85 5 LUKU Tekstin ja sanomien esittäminen valintaikkunoissa Tekstin muokkaaminen suorituksen aikana Tiedon tarkistaminen syötön aikana Kontrollien toiminnan laajentaminen aliluokkien avulla
Verkkosivut perinteisesti. Tanja Välisalo 11.2.2009
Verkkosivut perinteisesti Tanja Välisalo 11.2.2009 WWW-sivujen vieminen omaan kotisivutilaan yliopiston mikroverkossa https://salasana.jyu.fi Klikkaa painiketta Activate WWW Klikkaa painiketta Activate
DVD-RAM-levyjen käyttö
Tämä opas sisältää vähimmäistiedot, joita tarvitaan DVD-RAM-levyjen käyttöön DVD MULTI -asemassa Windows 98/Me/2000 -käyttöjärjestelmässä. Windows, Windows NT ja MS-DOS ovat Microsoft Corporationin rekisteröityjä
Käyttöliittymän luominen
119 L U K U 4 Käyttöliittymän luominen Oppitunti 1: Windows-sovelluksen käyttöliittymät 120 Oppitunti 2: Dialogien luominen 139 Laboratorio 4: STUploadin käyttöliittymän luominen 150 Kertaus 159 Tässä
MDI-sovellusten kehittäminen
OSA V 491 LUKU 21 21 LUKU MDI-sovelluksen luominen Siirtyminen dokumentti, näkymä- ja kehysluokan välillä Sovelluksen kehittäminen MFC;n monidokumentti/näkymä-arkkitehtuurilla 492 Kehittyneet dokumentti/näkymä-tekniikat
Delegaatit ja tapahtumakäsittelijät
14 Delegaatit ja tapahtumakäsittelijät Toinen käyttökelpoinen keksintö C#-kielessä ovat delegaatit. Periaatteessa ne palvelevat samaa tarkoitusta kuin C++:n funktio-osoittimet. Delegaatit ovat kuitenkin
Väitöskirja -mallipohja
JYVÄSKYLÄN YLIOPISTO Väitöskirja -mallipohja Word 2007/2010 IT-palvelut hannele.rajaniemi@jyu.fi https://koppa.jyu.fi/avoimet/thk/vaitoskirja sovellustuki@jyu.fi Sisältö Miten toimii väitöskirja/asiakirjamallipohja?
Usean näkymän luominen
OSA V 471 LUKU 20 20 LUKU Dynaamisten ja staattisten jakajaikkunoiden käyttö Resurssienhallinnan kaltaisen käyttöliittymän tekeminen sovelluksiin ja hallinta ilman ikkunan jakamista 472 Kehittyneet dokumentti/näkymä
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
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
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne
Varmuuskopiointi ja palauttaminen Käyttöopas
Varmuuskopiointi ja palauttaminen Käyttöopas Copyright 2009 Hewlett-Packard Development Company, L.P. Windows on Microsoft Corporationin Yhdysvalloissa rekisteröimä tavaramerkki. Tässä olevat tiedot voivat
Goalkeeper Game Statistics (v12) käyttöohjeet
1 Goalkeeper Game Statistics (v12) käyttöohjeet Oikeudet Goalkeeper game statistics v12 ohjelman tekijänoikeudet ovat pysyvästi tekijällä (Markku Aalto, Vantaa, markku.aalto@finhockey.fi), ellei niitä
Ohjelmointikielet ja -paradigmat 5op. Markus Norrena
Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja
Tilastokeskuksen rajapintapalveluiden käyttöönotto QGISohjelmistossa
1(13) Tilastokeskuksen rajapintapalveluiden käyttöönotto QGISohjelmistossa (QuantumGIS) Ohjeita laatiessa on käytetty QuantumGIS:n versiota 2.0.1. Ruudunkaappauskuvat ovat englanninkielisestä versiosta,
Alkuun HTML5 peliohjelmoinnissa
Paavo Räisänen Alkuun HTML5 peliohjelmoinnissa www.ohjelmoimaan.net Tätä opasta saa vapaasti kopioida ja levittää ei kaupallisissa tarkoituksissa. Sisällysluettelo 1: Alkusanat 2: Alkuun 3: Pelinäkymä
Kertauskysymykset ja vastaukset
613 L I I T E ja vastaukset Sivu 1 Luku 1 1. Mikä on MSF? MSF on kokoelma malleja, periaatteita ja käytäntöjä, jotka auttavat organisaatioita tehostamaan kehitystyötä ja teknologian hyväksikäyttöä liiketoimintaongelmien
Harjoitus 2: Oppijan aktivointi (15.3.2016)
Harjoitus 2: Oppijan aktivointi (15.3.2016) Tietokoneavusteinen opetus -kurssilla opetetaan Adobe Flash CS6:n käyttämistä neljänä kertana: 11.3.2016, 15.3.2016, 18.3.2016 ja 1.4.2016. Harjoituskerroilla
Verkkojulkaiseminen Minna Väisänen. HTML5-tehtävä
Verkkojulkaiseminen Minna Väisänen HTML5-tehtävä Kirjoita Dreamweaverissa oheisen nettisivun koodi. Lisää xx-kohtiin omat tietosi. Kuvan nimi on joki.jpg. Ensin tehdään sivusto ja sitten yksittäinen sivu.
OHJE EXCEL-MAKRON LUOMISEKSI JA MAKRON KÄYTÖSTÄ
OHJE EXCEL-MAKRON LUOMISEKSI JA MAKRON KÄYTÖSTÄ Tässä ohjeessa esitetään kuinka Excel-taulukkolaskentaan luodaan makro ja annetaan muutama vinkki makron käyttöön. Ohje koostuu seuraavasti: 1. Mikä makro
Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 8. Quick Start - opas Condes 8. olfellows www.olfellows.fi 1.
Condes Suunnistuksen ratamestariohjelmisto Versio 8 Quick Start opas Yhteystiedot: olfellows Jouni Laaksonen Poijukuja 4 21120 RAISIO Sähköposti: jouni.laaksonen@olfellows.fi www.olfellows.fi olfellows
http://www.microsoft.com/expression/
Verkkojulkaisuharjoitus1 TAVOITE Harjoituksen tarkoituksena on opiskella käyttämään verkkojulkaisueditoria (Microsoft Expression Web) ja käynnistämään verkkosivu internetissä. VERKKOSIVUEDITORIN KÄYTTÖOHJEITA
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,
Sukupuu -ohjelma. Ossi Väre (013759021) Joni Virtanen (013760641)
Sukupuu -ohjelma Ossi Väre (013759021) Joni Virtanen (013760641) 7.11.2011 1 Johdanto Toteutimme C -kielellä sukupuuohjelman, johon käyttäjä voi lisätä ja poistaa henkilöitä ja määrittää henkilöiden välisiä
1. HARJOITUS harjoitus3_korjaus.doc
Word - harjoitus 1 1. HARJOITUS harjoitus3_korjaus.doc Kopioi itsellesi harjoitus3_korjaus.doc niminen tiedosto Avaa näyttöön kopioimasi harjoitus. Harjoitus on kirjoitettu WordPerfet 5.1 (DOS) versiolla
Backup Premium Pikakäyttöopas
Tietoja Memeo Backup Premium on yksinkertainen varmuuskopiointiratkaisu monimutkaiseen digitaaliseen maailmaan. Automaattisesti varmuuskopioimalla Memeo Backup Premium pystyy palauttamaan arvokkaat ja
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
3. Vasemman reunan resurssiselaimen Omiin resursseihin luodaan uusi Handmade -niminen kansio.
ActivInspire JATKO AINEISTON TUOTTAMINEN Uuden aineiston tekemisen alkua helpottaa etukäteen tehty suunnitelma (tekstit, kuvat, videot, linkit) miellekarttaa hyödyntäen. Valmista aineistoa voi muokata
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
RATKI 1.0 Käyttäjän ohje
RATKI RATKI 1.0 Käyttäjän ohje Ohje 0.5 Luottamuksellinen Vastuuhenkilö Petri Ahola Sisällysluettelo 1. Yleistä... 3 1.1. Kuvaus... 3 1.2. Esitiedot... 3 1.3. RATKIn käyttöoikeuksien hankinta... 3 1.4.
Taulukot. 2002 Päivi Vartiainen 1
Taulukot Taulukon lisääminen FrontPagessa tapahtuu samalla tavoin kuin Word tekstinkäsittelyohjelmassakin. Valitse vakiotyökaluriviltä Lisää taulukko painike. Kun olet napsauttanut painikkeen alas voit
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman
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.
Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36
!!!!! Relaatiotietokannat ovat vallanneet markkinat tietokantojen osalta. Flat file on jäänyt siinä kehityksessä jalkoihin. Mutta sillä on kuitenkin tiettyjä etuja, joten ei se ole täysin kuollut. Flat
Google-dokumentit. Opetusteknologiakeskus Mediamylly
Google-dokumentit 1 2 3 Yleistä 1.1 Tilin luominen 4 1.2 Docs-päävalikkoon siirtyminen 7 Dokumentit-päävalikko 2.1 Kirjaudu Dokumentteihin 9 2.2 Lähetä tiedosto Google-dokumentteihin 11 2.3 Uuden asiakirjan
BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä
Pekka Ryhänen & Erkki Pesonen 2002 BlueJ:n käyttö Nämä ohjeet on tarkoitettu tkt-laitoksen mikroluokan koneilla tapahtuvaa käyttöä varten. Samat asiat pätevät myös muissa luokissa ja kotikäytössä, joskin
Tapahtumapohjainen ohjelmointi. Juha Järvensivu juha.jarvensivu@tut.fi 2007
Tapahtumapohjainen ohjelmointi Juha Järvensivu juha.jarvensivu@tut.fi 2007 Sisältö Tapahtumapohjainen ohjelmointi Käyttöliittymän rakenne Pääikkuna (top-level window) Lapsi-ikkuna (child window) Dialogit
Visma Business AddOn Tuotetarrat. Käsikirja
Visma Business AddOn Tuotetarrat Käsikirja Oppaan päiväys: 30.8.2012. Asiakaspalvelu: Helpdesk: www.visma.fi Visma Software Oy pidättää itsellään oikeuden mahdollisiin parannuksiin ja/tai muutoksiin tässä
Attribuutit. Copyright IT Press Tämän e-kirjan kopiointi, tulostaminen ja jakeleminen eteenpäin luvatta on kielletty.
8 Attribuutit Useimmat ohjelmointikielet on suunniteltu tavoitteena määrätty joukko ominaisuuksia. Kun esimerkiksi ryhdyt tekemään kääntäjää, mietit millainen uudella kielellä tehty sovellus on rakenteeltaan,
JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002
JReleaser Yksikkötestaus ja JUnit Mikko Mäkelä 6.11.2002 Sisältö Johdanto yksikkötestaukseen JUnit yleisesti JUnit Framework API (TestCase, TestSuite) Testien suorittaminen eri työkaluilla Teknisiä käytäntöjä
Kirkkopalvelut Office365, Opiskelijan ohje 1 / 17 IT Juha Nalli 22.12.2015
Kirkkopalvelut Office365, Opiskelijan ohje 1 / 17 Oppilaat saavat vuoden 2016 alusta käyttöönsä oppilaitoksen sähköpostin ja muita palveluita Microsoftin Office365:sta. Oppilaiden sähköposti on muotoa
Flowcode 6 Omien komponenttien luonti 3D- tilassa Ledi
Flowcode 6 Omien komponenttien luonti 3D- tilassa Ledi Oman painonappi komponentin luonti 6 versiossa Flowcode 6 versio mahdollistaa omien Flowcode komponenttien tekemisen. Komponentit on mahdollista piirtää
Flash ActionScript osa 4
Flash ActionScript osa 4 Tekstikentät Flash:ssa tekstikenttä voi olla tyypiltään joko TLF Text tai Classic Text. TLF Text on uusi Flash CS5 tullut tyyppi. Sen animointi ja muotoilu ominaisuudet ovat monipuolisemmat
E-RESULTS LITE -OHJEET
E-RESULTS LITE -OHJEET 1 ALKUVALMISTELUT Huolehdi ennen rastiesi pitoa, että Tulospalvelutietokoneen akku on ladattu täyteen Seuran EMIT-kortit ovat tallessa ja selkeästi erillään lähtöleimasimesta. Lähtö-
Windows 8.1 -käyttöjärjestelmän käytön aloitus
Windows 8.1 -käyttöjärjestelmän käytön aloitus Windows 8.1 Support Center @ Lenovo support.lenovo.com/windows8.1 Hyvä lukija! Lenovo on laatinut tämän ohjeen helpottamaan Microsoft Windows 8.1 -käyttöjärjestelmän
Visma Econet -ohjelmat ActiveX on epävakaa -virheilmoituksen korjausohjeet
1 Visma Econet -ohjelmat ActiveX on epävakaa -virheilmoituksen korjausohjeet Microsoft on julkaissut Office-paketteihin tietoturvapäivitykset. Seuraavat päivitykset aiheuttavat Visma Econet -ohjelmissa
Kirjaudu sisään palveluun klikkaamalla Omat kartat -painiketta.
Kirjaudu sisään palveluun klikkaamalla Omat kartat -painiketta. Sisäänkirjauduttuasi näet palvelun etusivulla helppokäyttöisen hallintapaneelin. Vasemmassa reunassa on esillä viimeisimmät tehdyt muutokset
Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö
Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö OSA V 439 LUKU 19 19 LUKU Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö Luettelon tietojen ylläpito List View näkymässä
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
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
JUnit ja EasyMock (TilaustenKäsittely)
OHJELMISTOJEN TESTAUS JA HALLINTA Syksy 2015 / Auvo Häkkinen JUnit ja EasyMock (TilaustenKäsittely) Tehtävässä tarvittava koodi löytyy osoitteella http://users.metropolia.fi/~hakka/oth/mockesimerkki.zip
Pedacode Pikaopas. Web-sovelluksen luominen
Pedacode Pikaopas Web-sovelluksen luominen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Netbeans-työkalulla luodaan uusi yksinkertainen web-sovellus ja testataan sen toiminta. Opas kattaa kaiken aiheeseen
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
OHJE Jos Kelaimeen kirjautuminen ei onnistu Mac-koneella Sisällys
Sisällys 1 Varmista, että DigiSign-kortinlukijaohjelmisto on käynnissä 2 1.1 DigiSign-kuvake 2 1.2 Sovelluksen käynnistäminen 2 1.3 Kortin toiminnan varmistaminen 4 2 Jos käytät selaimena Mozilla, Firefox
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
ASCII-taidetta. Intro: Python
Python 1 ASCII-taidetta All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/18cplpy to find out what to do.
Operaattorin ylikuormitus ja käyttäjän muunnokset
13 Operaattorin ylikuormitus ja käyttäjän muunnokset Luvussa 7, "Ominaisuudet, taulukot ja indeksoijat," opit, miten luokan yhteydessä käytetään ohjelmallisesti []-operaattoria, jolloin objektia voidaan
GEOS 1. Ilmastodiagrammi Libre Office Calc ohjelmalla
GEOS 1 Ilmastodiagrammi Libre Office Calc ohjelmalla Libre Office Calc ohjelman saat ladattua ilmaiseksi osoitteesta: https://fi.libreoffice.org/ Tässä ohjeessa on käytetty Libre Office Calc 5.0 versiota
11. oppitunti III. Viittaukset. Osa. Mikä on viittaus?
Osa III 11. oppitunti Viittaukset Kahdessa viime luvussa opit käyttämään osoittimia kohteiden käsittelyyn vapaalla muistialueella sekä viittaamaan noihin kohteisiin epäsuorasti. Tässä luvussa käsiteltävät
Nuorten hyvinvointi tilastotietokannan käyttöohjeet Tieke 18.5 2015
Nuorten hyvinvointi tilastotietokannan käyttöohjeet Tieke 18.5 2015 Taulukon valinta Valitse vasemmalta kansioita, kunnes saat taulukkoluettelon näkyviin. Jos etsit tietoa jostain tietystä aiheesta, voit
Fonttien käyttö LUKU. Tekstin esittäminen värein ja tyylein. Fonttien käyttö sovelluksen viimeistelyyn OSA IV LUKU 17.
OSA IV 389 LUKU 17 17 LUKU Tekstin esittäminen värein ja tyylein sovelluksen viimeistelyyn 390 Grafiikan piirtäminen William Caxtonin keksittyä painetun sanomalehden olemme olleet pääsemättömissä painotuotteista.
Sisällys Clerica Web-sovellusten käytön aloittaminen 2
Sisällys Clerica Web-sovellusten käytön aloittaminen 2 Kirjautuminen järjestelmään 2 Myyntilaskut 2 Ostolaskujen käsittely 4 Uuden laskun syöttö 6 Palkkailmoituslomake 8 Palkkailmoituksesta kopio 9 Henkilötietojen
Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:
Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Microsoft SQL käyttö Yleistä VisualStudiosta Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen: - sovellushallintaan -
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
Työvälineohjelmistot KSAO Liiketalous 1
KSAO Liiketalous 1 Osat Tiedosto voidaan jakaa osiin ja jokainen osa muotoilla erikseen. Osa voi olla miten pitkä tahansa, yhdestä kappaleesta kokonaiseen tiedostoon. Osanvaihto näkyy näytöllä vaakasuorana
VINKKEJÄ CV-NETIN KÄYTTÖÖN. www.te-palvelut.fi
VINKKEJÄ CV-NETIN KÄYTTÖÖN www.te-palvelut.fi TE-toimiston verkkoasiointiin pääset kirjautumaan www.te-palvelut.fi Oma asiointi Henkilöasiakas Kirjaudu sisään verkkopankkitunnuksilla ja hyväksy käyttöehdot
Ennen kuin aloitat lataamisen tarkista järjestelmävaatimukset: http://www.fprot.com/support/windows/fpwin_faq/425.html
Lataaminen ja asennus F-PROT Antivirus 6 Windows Home Huomautukset: Ennen kuin aloitat lataamisen tarkista järjestelmävaatimukset: http://www.fprot.com/support/windows/fpwin_faq/425.html F-PROT Antivirus
WINDOWS 10 -kurssi. petri.kiiskinen@wellamo-opisto.fi
WINDOWS 10 -kurssi petri.kiiskinen@wellamo-opisto.fi Yleistä kurssista Keskiviikkoisin 9.9. 30.9. (15 oppituntia) 16:45 20:00 (viimeinen kerta 16:45 19:15) Puolivälissä 15 minuutin kahvitauko Materiaali
QT tyylit. Juha Järvensivu 2008
QT tyylit Juha Järvensivu juha.jarvensivu@tut.fi 2008 Sisällys QStyle Style sheet Tyyli (QStyle) Kapseloi widgettien Look And Feel ominaisuudet Toteutettu QT:ssa QStyle luokkaan Sisäänrakennettuja tyylejä
Uutiskirjesovelluksen käyttöohje
Uutiskirjesovelluksen käyttöohje Käyttäjätuki: Suomen Golfpiste Oy Esterinportti 1 00240 HELSINKI Puhelin: (09) 1566 8800 Fax: (09) 1566 8801 E-mail: gp@golfpiste.com 2 Sisällys Johdanto... 1 Päänavigointi...
Siirtyminen Outlook 2010 -versioon
Tämän oppaan sisältö Microsoft Microsoft Outlook 2010 näyttää hyvin erilaiselta kuin Outlook 2003. Tämän oppaan tarkoituksena on helpottaa uuden ohjelman opiskelua. Seuraavassa on tietoja uuden käyttöliittymän
Näin asennat MS-DOS käyttöjärjestelmän virtuaalikoneeseen
Näissä ohjeissa käydään läpi Microsoftin MS-DOS 6.22 -käyttöjärjestelmän asennus Microsoftin Virtual PC 2007 -virtuaalikoneeseen. Asennusta varten sinulla on oltava Virtual PC 2007 asennettuna tietokoneellasi
Racket ohjelmointia osa 2. Tiina Partanen Lielahden koulu 2014
Racket ohjelmointia osa 2 Tiina Partanen Lielahden koulu 2014 Sisältö 1) Funktiot ja muuttujat (kertaus) 2) Animaatiot & pelit (big-bang) 3) Vertailuoperaattorit sekä boolean arvot 4) Tietorakenteet (struct)
Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana
Muilla kielillä: English Suomi Pong-peli, vaihe 3 Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Jaetaan ohjelma pienempiin palasiin (aliohjelmiin) Lisätään peliin maila (jota ei voi vielä
6. Harjoitusjakso II. Vinkkejä ja ohjeita
6. Harjoitusjakso II Seuraavaksi harjoitellaan algebrallisten syötteiden, komentojen ja funktioiden käyttöä GeoGebrassa. Tarjolla on ensimmäisen harjoittelujakson tapaan kahden tasoisia harjoituksia: perustaso
Asiakastukiryhmä Kesä- ja talviaika
Asiakastukiryhmä Kesä- ja talviaika Seppo Takkula Ohjelmistoversio Päiväys Hlö 1.0 04/04/2002 Seppo Takkula Sisältö 1. TARKOITUS...3 2. OHJEET...3 2.1. CLS....3 2.2. NT Tallennin...5 2.3. Näyttötapahtumien
Maha Eurosystem jarrulaskentaohjelman asennusohje versio 7.20.026
2012 Tecalemit Oy Seppo Koskivuori Maha Eurosystem jarrulaskentaohjelman asennusohje versio 7.20.026 Vaatimukset: - tietokone (PC), jossa vapaa USB portti - käyttöjärjestelmä Windows XP, Vista tai Windows
Piirtopinnalle piirtäminen
OSA IV 333 LUKU 15 15 LUKU Erilaiset piirtopinnat ja niiden käyttö Piirtotilan ja piirtopinnan asetukset ja käyttö Koordinaatistojen kohdistustapojen käyttö piirrettäessä tuumina tai sentteinä 334 Piirtopintatietorakenteet
Graafisen käyttöliittymän ohjelmointi
TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Luento 2 Tapahtumapohjainen ohjelmointi Juha-Matti Vanhatupa Sisältö Tapahtumapohjainen ohjelmointi Tapahtumakuuntelijoiden
Kompassin käyttöönotto ja kokeen luominen Opettaja
Kompassin käyttöönotto ja kokeen luominen Opettaja Kompassi-digikokeiden julkaisua varten sinun tulee luoda Sanoma Pron oppimisympäristöön oma työtila kurssiryhmän nimellä. Opiskelijat liittyvät samaan
Eclipse 3.2 pikku opas versio 1.0. Esittely Uuden projektin perustaminen Sovelluksen luominen Koodin siistiminen Vinkkejä
Anne Benson/Tanja Bergius Opintojakson ict1td002 käyttöön Sivu 1 / 13 Eclipse 3.2 pikku opas versio 1.0 Ohjeen sisältö: Esittely Uuden projektin perustaminen Sovelluksen luominen Koodin siistiminen Vinkkejä
ULKOISET KÄYTTÄJÄT / YHTEISTYÖMAAPALVELUT...
Sivu 1/7 Sisällysluettelo Päästäksesi haluamaasi kohtaan napauta otsikkoa hiirellä. ULKOISET KÄYTTÄJÄT / YHTEISTYÖMAAPALVELUT... 2 SISÄÄNKIRJAUTUMINEN... 2 ILMOITTAUTUMINEN-NÄKYMÄ... 2 YHTEISTYÖMAAT-NÄKYMÄ...
Tietotyypit ja operaattorit
Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto
Muistitikun liittäminen tietokoneeseen
Muistitikun käyttäminen 1 Muistitikun liittäminen tietokoneeseen Muistitikku liitetään tietokoneen USB-porttiin. Koneessa voi olla useita USB-portteja ja tikun voi liittää mihin tahansa niistä. USB-portti
Jypelin käyttöohjeet» Ruutukentän luominen
Jypelin käyttöohjeet» Ruutukentän luominen ==================HUOM!!!================== SISÄLLÖN TUOMINEN VISUAL STUDIOON ON MUUTTUNUT Uudet ajantasalla olevat ohjeet löytyvät timistä:?https://tim.jyu.fi/view/kurssit/tie/ohj1/tyokalut/sisallon-tuominen-peliin
SoleMOVE lähtevän harjoittelijan ohje
SoleMOVE lähtevän harjoittelijan ohje 3.12.2013 Kuva: Sanna Waris SoleMOVE lähtevän ERASMUS- harjoittelijan ohje 1 SoleMOVE lähtevän harjoittelijan ohje... 1 1. Kirjautuminen... 3 2. Uuden lähtevän Erasmus-harjoittelijan