Kehitysympäristö LUKU. Developer Studio kehitysympäristön alkeet. Liikkuminen projektin työtilassa ja sen eri näkymissä



Samankaltaiset tiedostot
Visual C++ -ohjelman tekeminen ja suunnittelu

Siirtyminen Outlook versioon

Hiirisanomiin vastaaminen

Kansion asetusten muuttaminen Windows 2000 käyttöjärjestelmässä Resurssienhallinnan kautta

ActiveX-kontrollien käyttö

Pikanäppäin Yhdistelmiä. Luku 6 Pikanäppäimet

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

Muuttujien määrittely

OHJE EXCEL-MAKRON LUOMISEKSI JA MAKRON KÄYTÖSTÄ

Kompassin käyttöönotto ja kokeen luominen Opettaja

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto

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

Tiedostojen lataaminen netistä ja asentaminen

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

FrontPage Näkymät

,QWHUQHWVHODLPHQNl\WWlPLQHQ±,QWHUQHW([SORUHU

Facebook-sivun luominen

E-kirjan lainaaminen ja lukeminen

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

Versio 1.1 P/N Copyright 2002, ATI Technologies Inc. Kaikki oikeudet pidätetään.

ALVin käyttöohjeet. Kuvaus, rajaus ja tallennus puhelimella ALVin -mobiilisovelluksen avulla dokumentit kuvataan, rajataan ja tallennetaan palveluun.

NetMeetingiä voi käyttää esimerkiksi Internet puheluissa, kokouksissa, etätyössä, etäopiskelussa ja teknisessä tuessa.

OpenOffice.org Impress 3.1.0

Autentikoivan lähtevän postin palvelimen asetukset

ETAPPI ry JOOMLA 2.5 Mediapaja. Artikkeleiden hallinta ja julkaisu

Pikaohjeita OneNote OPS:in käyttäjille

TIETOKONEEN ASETUKSILLA PARANNAT KÄYTETTÄVYYTTÄ

Collector for ArcGIS. Ohje /

1 eportfolio Kyvyt.fi - palvelun käytön aloittaminen

Google-dokumentit. Opetusteknologiakeskus Mediamylly

Nuorten hyvinvointi tilastotietokannan käyttöohjeet Tieke

Webforum. Version 14.2 uudet ominaisuudet. Viimeisin päivitys:

1 Yleistä Web-editorista Web-editori -dokumentin luominen Pikatoimintopainikkeet Tallenna... 3

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

Eclipse 3.2 pikku opas versio 1.0. Esittely Uuden projektin perustaminen Sovelluksen luominen Koodin siistiminen Vinkkejä

Outlook Web App ver 1.2

Symbol for Windows Blisskoostaja ( Versio 2.3 )

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0

Artikkelin lisääminen

Ohjeisto Trimble Pro 6H yhdistämisestä Juno 5:een

Sähköposti ja uutisryhmät

Käyttäjän käsikirja. LIB 500 ja LIB 510 v Releasettelutyökalu Yleistä. ,NNXQDMRNDLOPRLWWDDHWWlNRKGHRQSlLYLWHWWlYl

Käyttöliittymän luominen

Monikielinen verkkokauppa

F-Secure virustorjuntaohjelmiston käyttö

Jypelin käyttöohjeet» Ruutukentän luominen

Muistitikun liittäminen tietokoneeseen

Suvi Junes/Pauliina Munter Tietohallinto / Opetusteknologiapalvelut 2014

Pikaopas. Ohjeiden etsiminen Hae ohjesisältöä napsauttamalla kysymysmerkkiä.

Windows 10 -käyttöohje

Usean näkymän luominen

WINDOWS MICROSOFT OUTLOOK 2010:N UUDET OMINAISUUDET...

elearning Salpaus Elsa-tutuksi

Ohje 1 (12) Maarit Hynninen-Ojala MOODLE PIKAOHJE. Kirjautuminen Moodleen ja työtilan valitseminen

JAKELUPISTE KÄYTTÖOHJE 2/6

KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA

1 Word- asiakirjan avaaminen Power Pointissa

Taulukot Päivi Vartiainen 1

Microsoft Projectin mukauttaminen

FOTONETTI BOOK CREATOR

Adobe Premiere Elements ohjeet

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

SharePoint Foundation 2010 perusteet ylläpitäjille

RockID-varastonhallintajärjestelmän käyttöohje. v. 1.0

C# Windows ohjelmointi perusopas

Olet tehnyt hyvän valinnan hankkiessasi kotimaisen StorageIT varmuuskopiointipalvelun.

Joomla pikaopas. Yksinkertainen opas, jossa neuvotaan esimerkkisivuston teko Joomla julkaisujärjestelmällä vaihe vaiheelta.

Skype for Business ohjelman asennus- ja käyttöohje Sisällys

Tulosta yrityksesi tuloslaskelma ja tase myöhempää tarkastusta varten. Ota varmuuskopio tilanteesta ennen tilimuunnosta.

HAKUKONEMARKKINOINTI KOTISIVUJEN PÄIVITYSOHJE

Tietosuoja-portaali. päivittäjän ohje

Pika-aloitusopas. Sisältö: Projektin luominen Projektin muokkaaminen ja hallinnointi Projektin/arvioinnin tulosten tarkastelu

Kompassi-digikokeen julkaisu opettaja

Verkkokaupan ohje. Alkutieto. Scanlase verkkokauppa. Sisäänkirjautuminen

Skype for Business ohjelman asennus- ja käyttöohje Sisällys

1. HARJOITUS harjoitus3_korjaus.doc

CADS Planner Electric perusteet

Tekstinkäsittely ja opinnäytetyö I sisällysluettelo ja sivunumerointi. Word 2007

MOODLE TUTUKSI. Pirkko Vänttilä Oulun aikuiskoulutuskeskus

MDI-sovellusten kehittäminen

HRTM58. Windows 10 Resurssienhallinta

Ensin klikkaa käynnistä-valikkoa ja sieltä Kaikki ohjelmat valikosta kaikki ohjelmat

Opas administraattori-tason käyttäjille. MANAGERIX -ohjelman esittely... 2 Kirjautuminen... 2

OPISKELIJAN OPINNOT -NÄYTTÖ. Opiskelijan opintosuoritustietoja katsellaan Opiskelijan opinnot -näytöltä. Näyttö löytyy päävalikosta Opinnot.

Siirtyminen Access versioon

AUTOCAD-TULOSTUSOHJE. Tällä ohjeella selitetään Autocadin mittakaavatulostuksen perusasiat (mallin mittayksikkönä millimetrit)

Windows 8 -kurssi. Kurssista

Nexetic Shield Unlimited

RATKAISUT SIVU 1 / 15. Väriteemaan pääset käsiksi hieman eri tavoilla PowerPointin eri versioissa.

Asiakastukiryhmä Kesä- ja talviaika

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Ohje internetkarttapalveluun

Liferay CE KÄYTTÖOHJE PÄIVITTÄJÄLLE. Content Manager. Ambientia Oy TM Ambientia

Ajokorttimoduuli Moduuli 2. - Laitteenkäyttö ja tiedonhallinta. Harjoitus 1

Hallintaliittymän käyttöohje

Uuden palvelun lisääminen liityntäpalvelimelle esuomi.fi

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Kopiodaksesi, leikataksesi ja liittääksesi helpointa on käyttää näppäimistön pikavalintoja:

UpdateIT 2010: Editorin käyttöohje

Transkriptio:

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 Voit muokata usealla tavalla Developer Studio -ympäristöä työskentelyysi sopivammaksi. Useimmat asetukset ja työkalurivit voidaan valita Toolsvalikon Customize-komennolla. Voit muuttaa myös editoriikkunan fonttia, värejä ja muita asetuksia Tools-valikon Optionskomennolla. Edellisen projektin avaaminen käynnistyksen yhteydessä Viimeksi työstetty projekti saadaan aukeamaan automaattisesti Developer Studioon valitsemalla Tools-valikon Options-komennolla saadusta ikkunasta Workspace-välilehti ja valitsemalla siltä asetus Reload Last Workspace on Startup. Visual C++ -sovellusten luominen Työskentely Developer Studiossa Visual C++:n käyttämä Developer Studio ympäristö saattaa aluksi näyttää monimutkaiselta. Nopeasti laskemalla siitä löytyy yli 1000 valikon komentoa ja miltei saman verran työkalurivin painikkeita valittavaksi. Useimmat näistä ovat vaikean näköisiä valintaikkunoita lukuisine välilehtineen ja valintoineen. Kaikki tämä monimuotoisuus on välttämätöntä, koska Developer Studiota käytetään ympäri maailman luomaan ammattimaisia ja monimutkaisiakin sovelluksia. Älä kuitenkaan säikähdä: tulet tarvitsemaan näistä vain murto-osaa tehdäksesi ohjelmia tehokkaasti. Vanhan projektin avaaminen Ellet ole vielä käynnistänyt Visual C++:aa, tee se työpöytäsi Käynnistä-valikon kautta. Luvussa 1 loit Minute-projektin. Tulet seuraavaksi avaamaan tuon projektin ja tutustumaan sen avulla Developer Studion ominaisuuksiin. Nopein tapa avata olemassa oleva projekti on käyttää Recent Workspaces luetteloa. Luettelo löytyy File-valikosta. Huomaa, että luetteloon sopii vain rajallinen määrä tuoreimpia projekteja. Jos haluat avata projektin, jota ei ole tuoreimpien projektien luettelossa, käytä File-valikon Open Workspace komentoa. Saat tällöin esiin kuvan 2.1 esittämän Open Workspace ikkunan. Selaa hakemistoja, kunnes löydät Minute-projektin (oletushakemisto tälle on C:\Program Files\Microsoft Visual Studio\MyProjects\Minute). Valitse luettelosta Minute.dsw tiedosto ja napauta Open-painiketta. Käytitpä kumpaa menetelmää tahansa, pitäisi projektisi olla nyt esillä Developer Studio ikkunassa ja projektin nimen näkyä ikkunan otsikkopalkissa. Developer Studio muistaa, mihin viimeksi jäit tässä projektissa ja avaa viimeksi muokatun lähdekooditiedoston (kuva 2.2). Jos haluat piilottaa ikkunan alaosan tulosteikkunan, napauta tuon ikkunan vasemmassa yläkulmassa olevaa sulkemiskuvaketta (kuvan 2.2 hiiriosoitin osoittaa paikan).

OSA I LUKU 2 25 KUVA 2.1 Vanha projekti avataan valitsemalla.dsw-tiedosto. KUVA 2.2 Developer Studio avaa projektin siitä tilasta, josta se suljettiin.

26 Aliprojektien käyttö Voit luoda projektillesi myös aliprojekteja ja luoda riippuvuudet näiden välille. Tällöin yhteen projektiin tehdyt muutokset saavat aikaan myös muiden kääntämisen uudelleen. Visual C++ -sovellusten luominen Mitä eroa sitten mahtaa olla työtilalla (workspace) ja projektilla? Työtilaan voi kuulua useita projekteja. Kaikissa tämän kirjan esimerkeissä työtilassa on vain yksi projekti, mutta laajoja projekteja työstettäessä saattaa olla mukavampaa hallita useita projekteja samasta työtilasta. Työtilaikkuna Työtilaikkuna (Project Workspace) on tyypiltään telakoitava ikkuna. Tällaisia ikkunoita on muitakin, kuten tulosteikkuna (Output) sekä debuggauksen aikana esiin ilmestyvät ikkunat. Voit muuttaa ikkunan Kiinnittyvästä tavalliseksi kelluvaksi ikkunaksi (ja päinvastoin) kaksoisnapautuksella otsikkopalkkiin. Ikkunoiden käyttö lienee kuitenkin mukavampaa kiinnittyvässä tilassa. Voit sulkea työtilaikkunan oikean yläkulman kuvakkeesta ja avata sen uudelleen Viewvalikon Workspace-komennolla. Myös muut kiinnittyvät ikkunat toimivat näin. Työtilaikkunassa voit tutkia projektiasi eri näkymistä käsin. Projektin ollessa avoinna ikkunan alaosassa on yleensä näkyvissä kolme välilehteä: ClassView, ResourceView ja FileView. Tietokantasovelluksia kehitettäessä mukana saattaa olla myös DataView-välilehti. Ikkunan alareunassa näkyvät välilehdet jakavat projektin loogisesti erilaisiin osiin. Välilehteä napauttamalla saat esiin vastaavan näkymän. Kussakin näkymässä projektin rakenne on esitetty puumaisesti ja puun osat vastaavat projektin eri osia. Voit avata tai sulkea haaran napauttamalla sen vasemmalla puolen olevaa plus- tai miinusmerkkiä. ClassViewin käyttö Napauta nyt ClassView-välilehteä. Saat esiin kuvan 2.3 esittämän ClassView-ruudun. Tässä näkymässä esitetään projektin kaikki luokat. AppWizard teki nämä luokat, kun loit projektin. Puun toisella tasolla olevat osat edustavat kaikki luokkia (paitsi Globals-kansio) ja niiden nimet ovat esillä. Kun avaat jonkun luokan nimen, sen alla olevat osat vastaavat luokan jäsenfunktioita tai muuttujia. Näet esimerkiksi CMinuteDlg - luokan alla luvussa 1 lisäämäsi OnPressMe() jäsenfunktion. Kunkin osan vasemmalla puolen esiintyvä kuvake antaa vielä lisätietoa luokan jäsenestä (taulukko 2.1).

OSA I LUKU 2 27 KUVA 2.3 Valitsemalla ClassViewnäkymän voit muokata projektin luokkia.. Taulukko 2.1 ClassView-näkymässä esitetyt kuvakkeet antavat luokan jäsenistä lisätietoa. Kuvake Tarkoittaa Luokka public-tyyppinen funktio protected-tyyppinen funktio private-tyyppinen funktio public-tyyppinen muuttuja protected-tyyppinen muuttuja private-tyyppinen muuttuja Visual C++ -projekteissa suuri osa ohjelmoinnista liittyy luokkiin. Usein ClassView onkin näkymistä kaikkein käytetyin. Siitä pääset käsiksi kaikkiin luokkiin, jäsenfunktioihin ja projektissa käytettyihin muuttujiin. Kun kaksoisnapautat jotain jäsentä, pääset käsiksi suoraan vastaavaan osaan lähdekoodia. Jos kaksoisnapautat luokan nimeä, pääset käsiksi luokan määrittelyyn. Developer Studion otsikkopalkki Aktiivisessa editori-ikkunassa avoinna olevan tiedoston nimi näkyy Developer Studion otsikkopalkissa.

28 Visual C++ -sovellusten luominen Jäsenmuuttujan kaksoisnapautus tuo esiin tuon muuttujan määrittelyn. Jäsenfunktion tapauksessa kohdistin siirtyy kyseisen jäsenfunktion määrittelyn ensimmäiselle riville sen toteuttavassa koodissa. Projektin luokkien käsittelemisen lisäksi ClassView-näkymässä voit tehdä paljon tilannekohtaisten pikavalikoiden kautta. Pikavalikko tulee esiin napautettaessa hiiren oikeanpuoleista painiketta jossain kohden ruutua. Jos haluat nähdä ClassView-hierarkiassa jonkun osan valikon, valitse kyseinen osa hiiren oikealla painikkeella. Osa tulee valituksi ja sen viereen tulee siihen liittyvä pikavalikko. Näytetty pikavalikko riippuu siitä, millainen ikkunan osa hiirellä valittiin. Napauta CMinuteDlg-luokan nimeä ja saat esiin luokkaa vastaavan pikavalikon (kuva 2.4). KUVA 2.4 ClassView-näkymän osasta saatu pikavalikko. Pikavalikosta voit suorittaa kyseiseen luokkaan liittyviä komentoja. Go to Definition -komennon valitseminen vastaa luokan nimen kaksoisnapautusta, mikä siirtää kohdistimen luokan määrittävään kooditiedostoon. Neljällä pikavalikon komennolla voit lisätä luokkaan muuttujia tai funktioita. Paria näistä käytämmekin hetken päästä, mutta selitän vielä muut pikavalikon komennot. Napauta valikon References-komentoa ja saat esiin kuvan 2.5 esittämän sanoman.

OSA I LUKU 2 29 KUVA 2.5 Osa pikavalikon komennoista vaatii selaustiedoston olemassaolon. Valitse Yes ja selaustiedosto tehdään koostamalla projekti uudelleen. Kun projekti on koostettu, piilota tulosteikkuna napauttamalla sen sulkemiskuvaketta. Selaustietojen avulla ClassView-näkymän pikavalikkoon tulee lisää muutama projektin tutkimiskomento. References-komento luettelee projektin kaikki kohteet, joissa kyseiseen osaan viitataan. Kustakin viittauksesta ilmenee lähdekooditiedoston nimi ja viittauksen sisältävän rivin numero, joten voit siirtyä niihin helposti. Derived Classes komennolla saat puolestaan yksityiskohtia kyseisestä luokasta ja siitä periytetyistä luokista. Vastaavasti Base Classes komento antaa tietoa luokasta ja sen kantaluokista, mukaanlukien MFC-kirjaston luokat (kuva 2.6). Kun napautat pikavalikon esiin jäsenfunktiossa tai muuttujassa, saat Calls-komennolla luettelon kaikista kyseisen funktion kutsumista funktioista ja Called By komennolla luettelon paikoista, joissa muut funktiot kutsuvat tätä jäsenfunktiota. Pikavalikon Group by Access komennolla voit järjestää luokan jäseniä. Oletuksena, kun Group by Access ei ole valittuna, luokat esitetään aakkosjärjestyksessä, muutoin käyttöoikeuksien mukaan järjestettynä ensin yksityiset, sitten suojatut ja julkiset jäsenmuuttujat ja -funktiot.

30 Visual C++ -sovellusten luominen KUVA 2.6 Base Classes valinnalla näet luokan kantaluokat. Luokan jäsenten lisääminen lähdekoodia muokkaamatta ClassView-sivun pikavalikosta löytyvillä Add Member Variable ja Add Member Function - komennoilla saadaan koodirivit lisättyä automaattisesti sekä luokan määrittely- (.h) että toteutustiedostoon (.cpp). Seuraavaksi muokkaamme CMinuteDlg luokkaa. Varmista ensin, että CMinuteDlg on valittuna ja oikealla näppäimellä avautuva pikavalikko on esillä. Valitse tästä Add Member Variable. Saat esiin samannimisen valintaikkunan (kuva 2.7). Tässä ikkunassa voit lisätä luokkaan uuden jäsenmuuttujan määrittämällä sille tyypin, nimen ja käyttöoikeudet. Kirjoita muuttujan tyypiksi (Variable Type) int. Muuttujan nimeksi (Variable Declaration) annamme m_nclickcount ja käyttöoikeudet jätämme oletusarvoon Public. Lisäät siis luokkaan CMinuteDlg kokonaislukumuuttujan m_nclickcount. Tätä tullaan käyttämään Press Me painikkeen napautuskertojen tallettamiseen. Kun olet valmis, napauta OK. KUVA 2.7 ClassView-näkymän kautta lisätään luokkaan uusi muuttuja. Jäsenmuuttujien nimeämiskäytäntö Yleensä (muttei aina) luokan jäsenmuuttujat erotellaan muista käyttämällä muuttujan nimessä m_-etuliitettä (member). Näin lähdekoodin lukeminen helpottuu. On myös yleinen käytäntö merkitä muuttujan nimeen sen tyyppi. Tässä esimerkissä etuliite n viittaa kokonaislukuun (number). Nyt uuden muuttujan pitäisi olla esillä ClassView-ruudussa CMinuteDlg luokan alla. Kaksoisnapauta m_nclickcount jäsenmuuttujaa. Editorin ikkuna avautuu näyttäen lähdekoodista rivin, johon lisättiin tämän uuden muuttujan määrittely. Koska tässä muuttujassa lasketaan, kuinka monta kertaa Press Mepainiketta on painettu, tulee muuttujan alkuarvon olla nolla. Oikea paikka alustaa muuttuja on CMinuteDlg luokan muodostinfunktiossa. Voit lisätä alustuskoodin kaksoisnapauttamalla CMinuteDlg luokan

muodostinfunktiota (tämä on luokan alla olevista funktioista ensimmäinen ja saman niminen kuin itse luokka). Editorin ikkunaan tulee jälleen sopiva kohta lähdekoodista. Voit alustaa laskurimuuttujan lisäämällä listauksesta 2.1 rivin 10 omaan koodiisi. Listaus 2.1 LST02_1.CPP Luokan muodostinfunktiossa alustetaan jäsenmuuttuja OSA I LUKU 2 31 1 CMinuteDlg::CMinuteDlg(CWnd* pparent /*=NULL*/) 2 : CDialog(CMinuteDlg::IDD, pparent) 3 { 4 //{{AFX_DATA_INIT(CMinuteDlg) 5 // NOTE: the ClassWizard will add member initialization here 6 //}}AFX_DATA_INIT 7 // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 8 m_hicon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 9 10 m_nclickcount = 0; 1 11 } 1 Muuttuja m_nclickcount alustetaan nollaksi valintaikkunaluokan muodostimessa. Nyt laskeminen alkaa nollasta ja muuttujaa on muistettava kasvattaa yhdellä joka kerta, kun Press Me -painiketta napautetaan. Kaksoisnapauta nyt CMinuteDlg luokan OnPressMe() funktiota. Saat esiin editorin ikkunaan aiemmin luvussa 1 lisäämäsi funktion. Muistathan, että tämä funktio suoritetaan aina, kun IDC_PRESS_ME painike lähettää valintaikkunalle BN_CLICKED sanoman. Saat kasvatettua muuttujaa lisäämällä funktioon listauksen 2.2 rivin 5. Listaus 2.2 LST02_2.CPP Koodi, joka laskee, kuinka monta kertaa Press Me painiketta painetaan 1 void CMinuteDlg::OnPressMe() 1 2 { 3 MessageBox("Thanks, I needed that!"); 4 5 m_nclickcount++; 2 6 } 1 OnPressMe()-funktio on sanomankäsittelijä, jota kutsutaan aina IDC_PRESS_ME-painiketta napautettaessa. 2 Funktio näyttää ilmoituksen käyttäjälle sekä kasvattaa muuttujaa, joka kertoo painikkeen napautuskertojen määrän. Laskurimuuttuja pitää nyt yllä tietoa napautuksista. Seuraava vaihe on jäsenfunktion lisääminen. Napauta CMinuteDlg luokan yllä hiiren oikeaa painiketta, jotta saisit esille pikavalikon. Valitse siitä Add Member Function, ja saman niminen ikkuna avautuu (kuva 2.8).

32 Visual C++ -sovellusten luominen Tässä ikkunassa voit lisätä luokkaan jäsenfunktion. KUVA 2.8 Luokkaan lisätään uusi jäsenfunktio ClassViewnäkymän pikavalikon kautta. Varoitus: jäseniä lisättäessä ei tietotyyppejä tarkisteta Lisätessäsi luokkaan jäsen Add Member -valintaikkunalla ei sen tietotyyppejä tarkisteta. On esimerkiksi mahdollista luoda funktio, joka palauttaa BOOtyyppistä tietoa, mikä aiheuttaa käännösvirheen. Varmista, että määriteltävä jäsen on oikein muotoiltu ennen OK:n napauttamista. 1 MessageBox()-funktiolle voidaan määritellä useita eri tyylejä. Tässä sille välitetään MB_ICONSTOP-lippu, jolloin sanomaruudussa näytetään tekstin vierellä STOP-merkki. 2 Paluuarvo on FALSE, kun laskurimuuttujan arvo on nolla. 3 Merkkijono muotoillaan MessageBox()-funktiolle välittämistä varten CStringluokan Format()-funktiolla. Anna funktion tyyppi (siis funktion palauttaman arvon tyyppi). Kirjoita siis Function Type ruutuun arvoksi BOOL. Tämä tarkoittaa, että funktio voi palauttaa vain kaksi erilaista arvoa, jotka ovat TRUE tai FALSE. Funktio joudutaan myös nimeämään. Kirjoita tätä varten Function Declaration ruutuu nimeksi ClickCountMessage. Funktion vaatimat mahdolliset parametrit voidaan myös syöttää tähän samaan ruutuun. Ennen ikkunan sulkemista varmista, että Public-saantityyppi on valittuna eikä Static- tai Virtual-määreitä ole valittu. Napauta lopuksi OK. Nyt uuden funktion tulisi näkyä ClassView-ruudussa CMinuteDlg luokan alla ja funktion rungon tulisi olla esillä editorin ikkunassa. Lisää tähän listauksen 2.3 rivit 3-18. Listaus 2.3 LST02_3.CPP Napautuksien määrästä riippuen näytetään eri viesti 1 BOOL CMinuteDlg::ClickCountMessage() 2 { 3 if (m_nclickcount == 0) 4 { 5 MessageBox("You haven't clicked Press Me", "Don t Leave", MB_ICONSTOP); 1 6 return FALSE; 2 7 } 8 if (m_nclickcount > 1) 9 { 10 CString str; 11 str.format("press Me was clicked %d times", m_nclickcount); 3 12 MessageBox(str); 13 }

OSA I LUKU 2 33 14 else 15 { 16 MessageBox("Press Me was clicked once"); 17 } 18 return TRUE; 4 19 } 4 Paluuarvona annetaan TRUE, jos laskurimuuttujan arvo on vähintään yksi. Tässä tutkitaan muuttujan m_nclickcount arvoa ja tulostetaan sen perusteella sopiva teksti käyttäjälle. Ensimmäisessä MessageBox()-funktion kutsussa rivillä 5 sille annetaan kaksi ylimääräistä parametriä. Näistä ensimmäinen, Don t Leave, on ilmoitusikkunan otsikko. MB_ICONSTOP lippu puolestaan näyttää ikkunassa stoppikuvakkeen. Rivillä 10 määritellään luokan CString ilmentymä, muuttuja str. CString luokka on eräs MFC-kirjaston tarjoamista eduista ja se sopiikin käytettäväksi monissa tavallisen tekstimuotoisen tiedon käsittelyyn tarvittavissa tehtävissä. Mikäli C-ohjelmointi on sinulle tuttua, voisi CString luokan Format() funktiota verrata C-kielessä usein käytettyyn printf() funktioon. Huomaa vielä lopuksi, että ClickCountMessage-funktio palauttaa FALSE (rivi 6), mikäli laskurin arvo on nolla ja muutoin TRUE (rivi 18). Uusi funktiomme on nyt valmis, mutta sitä ei vielä käytetä ohjelmassa. Tämä asia korjataan seuraavassa kappaleessa. ResourceView Napauta nyt projektin työtilaikkunassa (ruutu ikkunan vasemmassa osassa) ResourceView-välilehteä. Saat esiin luettelon projektin resursseista (kuva 2.9).

34 Visual C++ -sovellusten luominen KUVA 2.9 ResourceView-sivulta pääset käsiksi projektin resursseihin. Resurssien erottaminen koodista Resurssit, kuten valikot, valintaikkunat ja merkkijonotaulukot, on erotettu lähdekoodista, jotta niitä voitaisiin itsenäisesti muokata. Näin sovelluksen erikielisten versioiden tekeminen helpottuu. Esimerkiksi merkkijonotaulukon tekstit voidaan lähdekoodiin koskematta kääntää toiselle kielelle. Käytit jo aiemmin ResourceView-näkymää lisätessäsi projektiin uuden painikkeen. Seuraavaksi esittelemme erilaiset käytettävissä olevat resurssit. Tässä näkymässä ovat esillä kaikki projektin käyttämät resurssit. Käsite resurssi tarkoittaa Windows-ohjelmoinnin yhteydessä projektin näkyviä osia. Näitä ovat esimerkiksi valintaikkunat, valikot ja kuvakkeet. ClassView-näkymän tavoin myös ResourceView-ikkunassa saadaan tilannekohtainen pikavalikko esiin hiiren oikealla painikkeella. Valitse Minute Resources tekstin päällä hiiren oikeaa painiketta napauttamalla saamastasi valikosta Insert ja saat esiin vastaavan valintaikkunan (kuva 2.10). Tästä näet, mitä erilaisia resursseja voit käyttää Visual C++ -projekteissasi. Pikanäppäimet (Accelerator) ovat nopea tapa antaa tietyllä näppäinyhdistelmällä ohjelmalle komentoja. Tällöin määrittelet pikanäppäintaulukkoon haluamaasi (valikon) komentoa vastaavan näppäinyhdistelmän. Näiden pikanäppäimien merkitys on nopeuttaa ohjelman käyttöä, sillä onhan minunkin usein käyttämäni Ctrl+X selvästi nopeampi tapa siirtää tekstiä kuin Muokkaa-valikon Leikkaakomento.

OSA I LUKU 2 35 KUVA 2.10 ResourceView-sivun pikavalikon Insert-komennolla nähdään käytettävissä olevat resurssityypit. Bittikartta (Bitmap) on pisteistä koostuva vapaamittainen kuva. Kukin kuvan pisteistä voi olla eri värinen. Bittikarttoja käytetään esimerkiksi työkalurivillä ja näet sellaisen myös joka kerta, kun Visual C++ käynnistyy. Kohdistin (Cursor) on kuvamuotoinen resurssi. Sitä käytetään yleensä hiiriosoittimena (se tuttu Windowsissa näkyvä nuoli). Kuvan lisäksi kohdistimeen liittyy aktiivinen piste eli sen sijainti näyttöruudulla. Myös kuvake (Icon) on kuvaresurssi. Minute-projektiin liittyy kuvake nimeltään IDR_MAINFRAME. Kun kaksoisnapautat sitä, MFC:n vakiokuvake avautuu muokattavaksi kuvaketyökaluun. Valintaikkuna (Dialog) on ikkuna, johon voidaan liittää muita resursseja. Valintaikkunoiden muokkaamista käsitellään luvussa. Valikkoresurssi (Menu) käsittää yleensä pääikkunan yläreunassa esitetyn valikon, mutta projektilla voi olla muitakin valikoita. Voit esimerkiksi määritellä projektille valikon, jota sovellus voi hyödyntää tilannekohtaisena pikavalikkoa. Merkkijonoresurssiin (String Table) tulisi kerätä kaikki sovelluksen käyttämät merkkijonot. Kukin näistä saa oman tunnisteen, johon merkkijonoa ohjelmassa käytettäessä viitataan (kuva 2.11). Merkkijonoresurssien käytöllä pyritään helpottamaan ohjelman kieliversioiden tekemistä. Ohjelman kääntäminen toiselle kielelle käy yksinkertaisesti tekemällä uusi merkkijonoresurssi, mikäli kaikki sovelluksen merkkijonot on sellaiseen kerätty. Sovelluksen käynnistyessä se voi sitten ladata valitsemansa merkkijonoresurssin.

36 Visual C++ -sovellusten luominen KUVA 2.11 Esimerkki merkkijonoresurssista. Työkalurivi (Toolbar) koostuu useista painikkeista. Miltei poikkeuksetta kukin painike vastaa jotain valikon komentoa. Painikkeet voidaan varustaa kuvilla bittikarttoja käyttäen ja kuhunkin painikkeeseen saadaan lisäksi liitettyä kohdeohje (ToolTip), joka näkyy, kun hiiriosoitin tulee painikkeen päälle. Versioresurssissa on tietoja sovelluksesta, esimerkiksi valmistaja, tuotenimi, sen versionumero jne. Tämä tieto on vakiomuotoista, joten sitä voivat käyttää muutkin sovellukset. Uusia resursseja voidaan vapaasti lisätä. Näin tehtäessä ne saavat automaattisesti yksilöllisen nimen. Esimerkiksi uusi valintaikkuna saattaisi olla nimeltään IDD_DIALOG1. Yleensä nämä valmiit nimet kuitenkin korvataan kuvaavammilla nimillä, kuten aiemmin muuttamamme IDC_BUTTON1 sai nimen IDC_PRESS_ME. Näet kaikki projektissa käytetyt resurssien nimet valitsemalla View-valikosta Resource Symbols. Tällöin saat esiin saman nimisen ikkunan (kuva 2.12). Resource Symbols ikkunasta voit etsiä resurssia nimen mukaan valitsemalla sen luettelosta ja napauttamalla View Use painiketta.

OSA I LUKU 2 37 KUVA 2.12 Resource Symbols valinnalla näet kaikki projektin resurssit. Pääset muokkaamaan jokaista resurssia kaksoisnapauttamalla sen nimeä ResourceView-ruudussa. Editorissa käytössä olevat työkalut ja komennot vaihtelevat muokattavan resurssin mukaan. Tulevissa luvuissa käsitellään erilaisten resurssien muokkaamista. Seuraavaksi viimeistelemme aiemmin käsitellyn esimerkkimme. Suorita seuraavat vaiheet ResourceView-ruutua käyttäen. Valintaikkunan painikkeiden toiminnan muuttaminen 1. Kaksoisnapauta IDD_MINUTE_DIALOG alkiota avataksesi valintaikkunan. 2. Kaksoisnapauta OK-painiketta. 3. Saat esiin Add Member Function ikkunan. Hyväksy jäsenfunktion oletusnimeksi OnOK (ruutuun Member Function Name). Uusi funktiorunko tehdään ja esitetään editori-ikkunassa. 4. Muokkaa OnOK()-funktiota listauksen 2.4 mukaiseksi. 5. Kaksoisnapauta IDD_MINUTE_DIALOG alkiota, jotta saat valintaikkunan uudelleen esiin. 6. Kaksoisnapauta Cancel-painiketta. 7. Hyväksy funktion oletusnimeksi OnCancel napauttamalla OKpainiketta. 8. Muokkaa OnCancel()-funktio listauksen 2.5 mukaiseksi.

38 Visual C++ -sovellusten luominen 1 Tämä funktio korvaa CDialog::OnOK()-funktion oletustoteutuksen, joka on OKpainikkeen käsittelijäfunktio. 2 Kantaluokan OnOK()- käsittelijää kutsumalla valintaikkuna suljetaan. Listaus 2.4 LST02_4.CPP OnOK-oletusfunktion uudelleenmäärittely void CMinuteDlg::OnOK() 1 { if ( ClickCountMessage() == TRUE ) { CDialog::OnOK(); 2 } } 1 Tämä funktio korvaa CDialog::OnCancel()-funktion oletustoteutuksen, joka on Cancel-painikkeen käsittelijäfunktio. 2 Kantaluokan OnCancel()- käsittelijää kutsumalla valintaikkuna suljetaan. Listaus 2.5 LST02_5.CPP OnCancel-oletusfunktion uudelleenmäärittely void CMinuteDlg::OnCancel() 1 { if ( ClickCountMessage() == TRUE ) { CDialog::OnCancel(); 2 } } Olet nyt lisännyt kaksi funktiota. Ensimmäinen niistä määrittelee uudelleen CDialog::OnOK funktion ja toinen CDialog::OnCancel funktion. Molemmilla painikkeilla saadaan suljettua valintaikkuna, mutta tässä tapauksessa korvattuja funktioita kutsutaan vain, kun ClickCountMessage() palauttaa arvon TRUE. Ellei koodiin tekemiesi muutosten toiminta vielä selvinnyt, koosta ja suorita projektisi nyt joka tapauksessa. Kokeile ohjelmaa ajaessasi napauttaa Cancel- tai OK-painiketta koskematta ensin Press Me painikkeeseen. Ohjelman pitäisi palauttaa sinulle kuvan 2.13 mukainen ilmoitus ja ohjelman tulisi jäädä käyntiin eikä sulkeutua. KUVA 2.13 Ilmoitus näytetään käyttäjälle, kun OK tai Cancel painiketta painetaan. Paina seuraavaksi Press me painiketta muutama kerta ja sen jälkeen OK- tai Cancel-painiketta. Nyt ilmoituksessa tulisi näkyä Press me painikkeen napautuskertojen määrä (kuva 2.14). Valitsemalla OK ohjelma suljetaan.

OSA I LUKU 2 39 KUVA 2.14 Napautuskertojen esittäminen. FileView Napauta projektin työtilaikkunassa FileView-välilehteä. Saat esiin luettelon projektiin kuuluvista tiedostoista (kuva 2.15). KUVA 2.15 FileView-valinnalla voit liikkua projektin tiedostoissa. Tiedostot on järjestetty tyypin mukaan kansioihin (kansioilla ei ole mitään tekemistä tiedoston hakemiston kanssa). Voit avata tiedoston editori-ikkunaan kaksoisnapauttamalla tiedoston nimeä. Jos yrität avata Minute.rc tiedostoa, ResourceView-ruutu tulee esiin, koska.rctiedostoissa on tietoja resursseista Yleiset Visual C++:n käyttämät tiedostotyypit on lueteltu taulukossa 2.2. TAULUKKO 2.2 tiedostotyypit Developer Studion käyttämät yleiset Tarkenne Tyyppi Kuvaus.dsw työtila Yhdistää projektin yksityiskohdat yhteen tiedostoon..dsp projekti Projektin yksityiskohdat, korvaa.mak-tiedoston..clw Class Wizard ClassWizardin käyttämät luokkatiedot..ncb Selaustietoja ClassViewin ja ClassWizardin komentojen hyödyntämiä tietoja luokista. Ei liity kääntämiseen.

40 Visual C++ -sovellusten luominen Tarkenne Tyyppi Kuvaus.opt Asetukset Käyttäjän asetukset työtilan ulkoasusta..cpp C++ lähdekoodi Sovelluskoodi..h C++ otsikkotiedosto Luokkamäärittelyt ja muut määrittelyt..rc Resurssikomennot Sisältää kaikki tiedot resursseista..rc2 Resurssikomennot Käytetään liitettäessä resursseja toisiin projekteihin..bmp Bittikarttakuva Tallettaa bittikarttakuvia..ico Kuvake Käytetään tallettamaan käytettäviä kuvakkeita. Luettelo ei ole täydellinen. Jos avaat projektihakemiston Resurssienhallinnalla, näet myös muun tyyppisiä tiedostoja. Osa näistä on Developer Studion käyttämiä tilapäistiedostoja, osa riippuu valitun projektin tyypistä ja sen sisällöstä. FileViewin pikavalikosta voit muun muassa kääntää projektiin kuuluvia yksittäisiä ohjelmia. Tästä on hyötyä esimerkiksi silloin, kun projekti on laaja etkä halua koostaa koko projektia. Voit lisätä valikosta myös tiedostoja projektiin muista projekteista. Projektien hallinta Aikoinaan eräs pikkutarkimmista tehtävistä C- tai C++-sovelluksia kirjoitettaessa oli Makefile-käännöstiedoston ylläpitäminen. Makefiletiedostossa on ohjeet kääntäjälle siitä, kuinka ohjelma käännetään ja missä järjestyksessä se linkitetään. Nyt Developer Studio pitää huolen tästä mutkikkaasta tehtävästä melkein huomaamattomasti. Itse asiassa Visual C++ 6.0 projekteissa ei ole koko Makefile-tiedostoa, mutta voit sellaisen toki luoda Project-valikon Export Makefile komennolla. Projektin asetukset Kääntäjän asetukset ja muut projektin käyttöön liittyvät valinnat voit suorittaa valitsemalla Project-valikosta Settings. Saat tällöin esiin kuvan 2.16 valintaikkunan välilehtineen.

OSA I LUKU 2 41 KUVA 2.16 Kääntämis- ja linkitysasetukset sekä muut projektin hallinnan valinnat löytyvät Project Settings ikkunasta. Hyödyllisiä asetuksia ovat muun muassa: Debug-välilehdellä asetettavat komentoriviparametrit ajettavalle ohjelmalle. C++-välilehdellä asetettavat kääntäjän esiprosessorin asetukset sekä kääntäjän optimointiasetukset. Link- välilehdellä valittava suoritettavan ohjelmatiedoston hakemisto. Muita käännöskonfiguraatioita Minute-projektillamme oli valmiiksi asetettu kehitysaikainen Debugkonfiguraatio ja valmiille ohjelmalle tarkoitettu Releasekonfiguraatio. Voit tehdä näiden lisäksi omiakin konfiguraatioita asetuksista esimerkiksi ohjelman suorituskykymittausta varten. Oma konfiguraatio tehdään Build-valikon Configurations-komennolla. Useimmissa tapauksissa kuitenkin Debug- ja Release asetusvaihtoehdot ovat aivan riittävät.

42 Visual C++ -sovellusten luominen