44
Visual C++ Visual C++ Z Z áklady tvorby aplikácií áklady tvorby aplikácií

Visual C++ Z áklady tvorby aplikácií

  • Upload
    dalia

  • View
    45

  • Download
    0

Embed Size (px)

DESCRIPTION

Visual C++ Z áklady tvorby aplikácií. Osnova prednášky. Vývojové prostredia pre C++ Microsoft Visual C++ Základy tvorby užívateľského rozhrania Jednoduchý príklad. Vývojové prostredia pre C++. - PowerPoint PPT Presentation

Citation preview

Page 1: Visual C++ Z áklady tvorby aplikácií

Visual C++Visual C++ZZáklady tvorby aplikáciíáklady tvorby aplikácií

Page 2: Visual C++ Z áklady tvorby aplikácií

Osnova prednáškyOsnova prednášky

Vývojové prostredia pre C++Vývojové prostredia pre C++ Microsoft Visual C++Microsoft Visual C++ Základy tvorby užívateľského rozhraniaZáklady tvorby užívateľského rozhrania Jednoduchý príkladJednoduchý príklad

Page 3: Visual C++ Z áklady tvorby aplikácií

Vývojové prostredia pre C+Vývojové prostredia pre C+++ Microsoft Visual C++ - komerčný softvér pre MS Windows, veľmi - komerčný softvér pre MS Windows, veľmi

rozšírený v softvérových spoločnostiach, je stavaný na tvorbu rôznych rozšírený v softvérových spoločnostiach, je stavaný na tvorbu rôznych typov aplikácií, má veľmi široké možnosti a je vhodný aj na tvorbu typov aplikácií, má veľmi široké možnosti a je vhodný aj na tvorbu rozsiahlych projektov. Má prepracovaný systém debugovania (hľadania rozsiahlych projektov. Má prepracovaný systém debugovania (hľadania chýb), automatického dopĺňania kódu a orientácie v programe a tiež chýb), automatického dopĺňania kódu a orientácie v programe a tiež dobrú dokumentáciu. Jeho obmedzená verzia Express Edition je voľne dobrú dokumentáciu. Jeho obmedzená verzia Express Edition je voľne šíriteľná.šíriteľná.

Borland C++ Builder – komerčný softvér pre MS Windows, ktorý je – komerčný softvér pre MS Windows, ktorý je užívateľsky príjemný a tvorba aplikácií v ňom je jednoduchá a užívateľsky príjemný a tvorba aplikácií v ňom je jednoduchá a intuitívna, vďaka čomu je populárny. Má veľké množstvo komponentov. intuitívna, vďaka čomu je populárny. Má veľké množstvo komponentov. Má voľne šíriteľnú obmedzenú verziu Borland Turbo C++ Explorer.Má voľne šíriteľnú obmedzenú verziu Borland Turbo C++ Explorer.

Dev-C++ - voľne šíriteľný populárny softvér pre Windows, svojím - voľne šíriteľný populárny softvér pre Windows, svojím usporiadaním pripomína MS Visual C++.usporiadaním pripomína MS Visual C++.

KDevelop – voľne šíriteľný softvér pre Linux, takisto pripomína MS – voľne šíriteľný softvér pre Linux, takisto pripomína MS Visual C++ a má podobnú funkčnosť. Visual C++ a má podobnú funkčnosť.

QT Designer – softvér schopný pracovať na viacerých platformách, – softvér schopný pracovať na viacerých platformách, podobne ako Borland C++ sa vyznačuje jednoduchosťou a podobne ako Borland C++ sa vyznačuje jednoduchosťou a intuitívnosťou. Má dobrú dokumentáciu a systém automatického intuitívnosťou. Má dobrú dokumentáciu a systém automatického dopĺňania kódu. Má voľne šíriteľnú verziu.dopĺňania kódu. Má voľne šíriteľnú verziu.

Page 4: Visual C++ Z áklady tvorby aplikácií

Microsoft Visual C++Microsoft Visual C++ História::

MS Visual C++ 1.0 – 1992 – prvá verzia – 1992 – prvá verziaMS Visual C++ 2.0 – 1995 – rozšírená oproti 1.0, ale málo – 1995 – rozšírená oproti 1.0, ale málo používanápoužívanáMS Visual C++ 6.0 – 1998 – široko rozšírená verzia, ktorá sa – 1998 – široko rozšírená verzia, ktorá sa používa ešte aj dnespoužíva ešte aj dnesMS Visual C++ .NET 2003 – rozšírená verzia s podporou pre .NET – rozšírená verzia s podporou pre .NET frameworkframeworkMS Visual C++ 2005MS Visual C++ 2008MS Visual C++ 2010 – posledná stabilná verzia– posledná stabilná verzia

Aktuálne verzie VC++ 2010::Express Edition – voľne šíriteľná verzia – voľne šíriteľná verziaProfessional – pre profesionálne aplikácie – pre profesionálne aplikácie, pre individu, pre individuálnych álnych programátorovprogramátorovPremium – pre teamové projekty – pre teamové projektyUltimate – – pre rozsiahle teamové projekty, s podpornými pre rozsiahle teamové projekty, s podpornými prostriedkami pre správu rozsiahleho kódu prostriedkami pre správu rozsiahleho kódu

Page 5: Visual C++ Z áklady tvorby aplikácií

.NET Framework.NET Framework .NET Framework je softvérový komponent, ktorý je priamo , ktorý je priamo

súčasťou Windows (Windows Server 2003, Windows Vista), alebo súčasťou Windows (Windows Server 2003, Windows Vista), alebo môže byť k Windows doinštalovaný (väčšina starších verzií). môže byť k Windows doinštalovaný (väčšina starších verzií). Jeho úlohou je poskytovať nové prostriedky pre tvorbu windowsovských aplikácií a efektívne riadiť chod programov, ktoré boli preň , ktoré boli preň vyvinuté.vyvinuté.

.NET Framework sa skladá z dvoch častí:.NET Framework sa skladá z dvoch častí:1. Knižnica tried – obsahuje množstvo tried, ktoré uľahčujú – obsahuje množstvo tried, ktoré uľahčujú tvorbu aplikácií pre Windows, napr. triedy pre vytváranie tvorbu aplikácií pre Windows, napr. triedy pre vytváranie užívateľského rozhrania, prácu s databázami, tvorbu webovských užívateľského rozhrania, prácu s databázami, tvorbu webovských aplikácií, sieťovú komunikáciu, grafiku, šifrovanie a podobne.aplikácií, sieťovú komunikáciu, grafiku, šifrovanie a podobne.2. Common Language Runtime (CLR) – je to jednotný – je to jednotný prostriedok na spúšťanie a riadenie programov napísaných v prostriedok na spúšťanie a riadenie programov napísaných v rôznych programovacích jazykoch. Pri kompilácii sa kód z nejakého rôznych programovacích jazykoch. Pri kompilácii sa kód z nejakého jazyka preloží do pomocného jazyka (Microsoft Intermediate jazyka preloží do pomocného jazyka (Microsoft Intermediate Language) a až pri spúšťaní sa kód preloží do strojového kódu. Language) a až pri spúšťaní sa kód preloží do strojového kódu. Umožňuje to lepšiu prenosnosť kódu na rôzne počítače. CLR sa Umožňuje to lepšiu prenosnosť kódu na rôzne počítače. CLR sa takisto stará o správu pamäti, spracovanie výnimiek, paralelné takisto stará o správu pamäti, spracovanie výnimiek, paralelné spúšťanie programov a bezpečnosť.spúšťanie programov a bezpečnosť.

Page 6: Visual C++ Z áklady tvorby aplikácií

Managed C++Managed C++ Managed C++ je modifikácia C++ realizovaná firmou Microsoft. Je . Je

špeciálne navrhnutá tak, aby spolupracovala s .NET Framework. špeciálne navrhnutá tak, aby spolupracovala s .NET Framework. Dá sa využiť len vo Windows a v prostrediach, ktoré .NET Framework podporujú..

Managed C++ zavádza množstvo nových funkcií, ktoré sa nevyskytujú v štandardnom C++, a ktoré umožňujú zahrnúť do kódu prvky , a ktoré umožňujú zahrnúť do kódu prvky knižníc .NET Framework.knižníc .NET Framework.

Managed C++ tiež umožňuje, aby program podliehal riadeniu pomocou .NET Framework, teda aby .NET Framework spravoval pamäť, , teda aby .NET Framework spravoval pamäť, ktorú program využíva, spracovával jeho výnimky a podobne. Ak je kód ktorú program využíva, spracovával jeho výnimky a podobne. Ak je kód riadený pomocou .NET Framework, nemusíme napr. ručne robiť riadený pomocou .NET Framework, nemusíme napr. ručne robiť dealokácie, pamäť je dealokovaná automaticky bez nebezpečenstva dealokácie, pamäť je dealokovaná automaticky bez nebezpečenstva memory leakov. Nevýhodou je menšia rýchlosť programu.memory leakov. Nevýhodou je menšia rýchlosť programu.

Kód napísaný v MS Visual C++ (.NET a vyššie) sa teda delí na dva typy::1. Manažovaný (managed) – riadi ho .NET Framework – riadi ho .NET Framework2. Prirodzený (native) – neriadi ho .NET Framework – neriadi ho .NET Framework

Manažovaný a prirodzený kód sa dajú kombinovať, ale len do istej Manažovaný a prirodzený kód sa dajú kombinovať, ale len do istej miery. miery.

Page 7: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikácií v MS Visual C+Tvorba aplikácií v MS Visual C+++ V MS Visual C++ je nasledujúca V MS Visual C++ je nasledujúca organizácia programov::

1. 1. Súbor so zdrojovým kódom – obsahuje nejakú časť kódu alebo – obsahuje nejakú časť kódu alebo celý programcelý program2. 2. Projekt – vznikne združením viacerých súborov so zdrojovým – vznikne združením viacerých súborov so zdrojovým kódom, je to už samostatná časť softvérukódom, je to už samostatná časť softvéru3. 3. Solution – kompletný softvér, ktorý sa môže skladať z viacerých – kompletný softvér, ktorý sa môže skladať z viacerých projektovprojektov

Niektoré typy projektov, ktoré sa dajú vytvoriť vo VC++:, ktoré sa dajú vytvoriť vo VC++:1. 1. Console application – program s minimálnym užívateľským – program s minimálnym užívateľským rozhranímrozhraním2. 2. Windows forms application – program so štandardným – program so štandardným windowsovským rozhranímwindowsovským rozhraním3. 3. MFC application – aplikácia využívajúca prvky MFC (Microsoft – aplikácia využívajúca prvky MFC (Microsoft Foundation Class), pomocou ktorých sa dá vytvoriť aj Foundation Class), pomocou ktorých sa dá vytvoriť aj komplikovanejšie užívateľské rozhraniekomplikovanejšie užívateľské rozhranie4. 4. DLL – dynamická knižnica – dynamická knižnica5. 5. MFC ActiveX Control – nový ovládací prvok typu ActiveX – nový ovládací prvok typu ActiveX......

Page 8: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikácií v MS Visual C+Tvorba aplikácií v MS Visual C+++

Vytvorenie jednoduchej aplikácie si názorne ukážeme na príklade.Vytvorenie jednoduchej aplikácie si názorne ukážeme na príklade. Príklad: Objednávka limuzíny: Objednávka limuzíny

Vytvoríme program so štandardným windowsovským rozhraním, Vytvoríme program so štandardným windowsovským rozhraním, ktorý bude užívateľovi umožnovať objednať si limuzínu na určené ktorý bude užívateľovi umožnovať objednať si limuzínu na určené miesto a čas. Užívateľské rozhranie bude obsahovať načítanie miesto a čas. Užívateľské rozhranie bude obsahovať načítanie dátumu a hodiny, počtu hodín, voľbu typu limuzíny, zadanie mena a dátumu a hodiny, počtu hodín, voľbu typu limuzíny, zadanie mena a adresy zákazníka, voľbu občerstvenia počas cesty, obrázok adresy zákazníka, voľbu občerstvenia počas cesty, obrázok zvoleného auta a výpočet ceny.zvoleného auta a výpočet ceny.

Page 9: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikácií v MS Visual C+Tvorba aplikácií v MS Visual C+++

Najskôr si musíme zvoliť typ projektu. Vyberieme si Windows Najskôr si musíme zvoliť typ projektu. Vyberieme si Windows forms application:forms application:

Page 10: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++

Po vytvorení nového projektu vyzerá naša pracovná plocha Po vytvorení nového projektu vyzerá naša pracovná plocha približne takto:približne takto:

Page 11: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++ Aplikácia typu Aplikácia typu Windows forms applicationWindows forms application pozostáva z pozostáva z

komponentov, , ktoré vytvárajú interface medzi užívateľom a programom a riadia priebeh programu. Komponenty sú teda . Komponenty sú teda všetky okná, textové a ovládacie prvky, ktoré vidíme a pomocou všetky okná, textové a ovládacie prvky, ktoré vidíme a pomocou ktorých komunikujeme s programom. ktorých komunikujeme s programom.

Tvorba aplikácie pozostáva z troch častí::1. Analýza a návrh štruktúry programu – predtým, ako – predtým, ako začneme programovať, premyslíme si a navrhneme štruktúru kódu začneme programovať, premyslíme si a navrhneme štruktúru kódu – triedy a objekty, ich vzájomnú komunikáciu, dedičnosť a – triedy a objekty, ich vzájomnú komunikáciu, dedičnosť a polymorfizmus a podobne. polymorfizmus a podobne. 2. Návrh užívateľského rozhrania – najskôr si premyslíme, ako – najskôr si premyslíme, ako bude program komunikovať s užívateľom a aké ovládacie prvky bude program komunikovať s užívateľom a aké ovládacie prvky bude potrebovať. Potom navrhneme interface. Visual C++ ponúka bude potrebovať. Potom navrhneme interface. Visual C++ ponúka nástroje na dizajn rozhrania, vzhľad aplikácie môžeme navrhnúť nástroje na dizajn rozhrania, vzhľad aplikácie môžeme navrhnúť jednoducho technikou jednoducho technikou drag and dropdrag and drop, vlastnosti každého , vlastnosti každého komponentu nastavíme v špeciálnom komponentu nastavíme v špeciálnom panele vlastností..3. Vytvorenie kódu, spracovanie udalostí – napíšeme – napíšeme samotný program. Program bude vlastne reagovať na jednotlivé samotný program. Program bude vlastne reagovať na jednotlivé udalosti vyvolané komponentami – stlačenie tlačítka, kliknutie udalosti vyvolané komponentami – stlačenie tlačítka, kliknutie alebo pohyb myšou, zmena obsahu a podobne.alebo pohyb myšou, zmena obsahu a podobne.

Page 12: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++

1. Návrh štruktúry

Naša aplikácia je jednoduchá. V podstate len načíta objednávku a Naša aplikácia je jednoduchá. V podstate len načíta objednávku a uloží ju do zoznamu objednávok. Budeme potrebovať len triedu uloží ju do zoznamu objednávok. Budeme potrebovať len triedu ObjednávkaObjednávka na uchovanie príslušných údajov a potom dynamické na uchovanie príslušných údajov a potom dynamické pole na uloženie objednávok.pole na uloženie objednávok. Vytvor Vytvoríme si tiež triedu íme si tiež triedu ČasovýÚdajČasovýÚdaj na uchovanie informácie o dátume a čase.na uchovanie informácie o dátume a čase.

Triedy môžeme vytvárať manuálne, ale Visual C++ nám ponúka aj Triedy môžeme vytvárať manuálne, ale Visual C++ nám ponúka aj prostriedky, pomocou ktorých môžeme vytváranie tried čiastočne prostriedky, pomocou ktorých môžeme vytváranie tried čiastočne zautomatizovať. Pridajme do programu dve nové triedy – zautomatizovať. Pridajme do programu dve nové triedy – ČasovýÚdaj a Objednávka.ČasovýÚdaj a Objednávka.

Page 13: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++

Vo Visual C++ môžeme vytvoriť množstvo typov tried, vyberieme Vo Visual C++ môžeme vytvoriť množstvo typov tried, vyberieme si typ si typ Generic C++ ClassGeneric C++ Class::

Page 14: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++

Zadáme názov novej triedy: Zadáme názov novej triedy: CasovyUdajCasovyUdaj. Visual C++ automaticky . Visual C++ automaticky vytvorí hlavičkový súbor vytvorí hlavičkový súbor CasovyUdaj.hCasovyUdaj.h s definíciou triedy a s definíciou triedy a zdrojový súbor zdrojový súbor CasovyUdaj.cppCasovyUdaj.cpp, v ktorom budú definované , v ktorom budú definované jednotlivé metódy. Takto je zabezpečená prehľadnosť programu.jednotlivé metódy. Takto je zabezpečená prehľadnosť programu.

Page 15: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++ V hlavičkovom súbore V hlavičkovom súbore CasovyUdaj.hCasovyUdaj.h je trieda je trieda ČasovýÚdajČasovýÚdaj

preddefinovaná takto:preddefinovaná takto:class CasovyUdaj{

public: CasovyUdaj(void); ~CasovyUdaj(void);

}; Doplníme do nej súkromné dáta:Doplníme do nej súkromné dáta:

class CasovyUdaj{

private: int rok,mesiac,den,hodina,minuta;public: CasovyUdaj(void); ~CasovyUdaj(void);

};

Page 16: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++

Teraz do triedy Teraz do triedy ČasovýÚdajČasovýÚdaj doplníme aj metódy na nastavenie doplníme aj metódy na nastavenie času a dátumu. Na to opäť môžeme využiť prostriedky Visual C++.času a dátumu. Na to opäť môžeme využiť prostriedky Visual C++.

Page 17: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++

Doplníme metódu Doplníme metódu NastavČas(...)NastavČas(...) s parametrami s parametrami hh a a m m (hodina a (hodina a minúta):minúta):

Page 18: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++

Rovnakým spôsobom potom doplníme metódu Rovnakým spôsobom potom doplníme metódu NastavDátum(...)NastavDátum(...) s s parametrami parametrami rr, , mm, , dd (rok, mesiac, deň). Trieda (rok, mesiac, deň). Trieda ČasovýÚdajČasovýÚdaj bude bude nakoniec vyzerať takto:nakoniec vyzerať takto:

class CasovyUdaj{

private: int rok,mesiac,den,hodina,minuta;public: CasovyUdaj(void); ~CasovyUdaj(void); void NastavDatum(int r, int m, int d); void NastavCas(int h, int m);

};

Page 19: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++

Metódy Metódy NastavČasNastavČas a a NastavDátumNastavDátum definujeme v súbore definujeme v súbore CasovyUdaj.cppCasovyUdaj.cpp::

void CasovyUdaj::NastavDatum(int r, int m, int d){

rok=r;mesiac=m;den=d;

}

void CasovyUdaj::NastavCas(int h, int m){

hodina=h;minuta=m;

}

Page 20: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++

Podobným spôsobom definujeme triedu Podobným spôsobom definujeme triedu ObjednávkaObjednávka, ktorá bude , ktorá bude vyzerať takto:vyzerať takto:

class Objednavka{

private: string meno, adresa; int typ, pocet_hodin, cena; bool obcerstvenie; CasovyUdaj cas;public: Objednavka(void); ~Objednavka(void); void NastavHodnoty(string m, string a, int t, int ph, int cn,

bool o, CasovyUdaj cs);};

Page 21: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++

V súbore V súbore Objednavka.cppObjednavka.cpp definujeme metódu definujeme metódu NastavHodnotyNastavHodnoty::

void Objednavka::NastavHodnoty(string m, string a, int t, int ph, int cn, bool o, CasovyUdaj cs){

meno=m;adresa=a;typ=t;pocet_hodin=ph;cena=cn;obcerstvenie=o;cas=cs;

}

Page 22: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++ Ešte potrebujeme dynamické pole pre uchovávanie objednávok a údaj Ešte potrebujeme dynamické pole pre uchovávanie objednávok a údaj

o počte už prijatých objednávok. Tie definujeme ako súkromné dáta o počte už prijatých objednávok. Tie definujeme ako súkromné dáta triedy triedy Form1Form1, ktorá predstavuje hlavné okno programu, teda samotnú , ktorá predstavuje hlavné okno programu, teda samotnú aplikáciu. V hlavičkovom súbore aplikáciu. V hlavičkovom súbore Form1.hForm1.h bude potom trieda bude potom trieda Form1Form1 definovaná takto:definovaná takto:

public __gc class Form1 : public System::Windows::Forms::Form//__gc znamená, že trieda je manažovaná{

public: Form1(void) ...protected: void Dispose(Boolean disposing) ...private: System::ComponentModel::Container * components; void InitializeComponent(void) .. Objednavka *objednavky; //manažovaná trieda prijme len

smerník int pocet_objednavok; //na objekt nemanažovanej triedy

};

Page 23: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++

2. Návrh užívateľského rozhrania

Teraz navrhneme, ako bude aplikácia vyzerať a ako bude Teraz navrhneme, ako bude aplikácia vyzerať a ako bude komunikovať s užívateľom.komunikovať s užívateľom.

Súčasťou prostredia Visual C++ je tzv. Súčasťou prostredia Visual C++ je tzv. Toolbox, ktorý obsahuje , ktorý obsahuje množstvo preddefinovaných riadiacich prvkov (tlačítka, textové množstvo preddefinovaných riadiacich prvkov (tlačítka, textové polia, menu atď.) My budeme pre náš program potrebovať tieto polia, menu atď.) My budeme pre náš program potrebovať tieto prvky:prvky:

1. 1. Label – popisný text, ktorý budeme používať na opísanie funkcie – popisný text, ktorý budeme používať na opísanie funkcie niektorých prvkovniektorých prvkov

2. 2. Button – tlačítko – tlačítko

3. 3. TextBox – na zadávanie údajov – na zadávanie údajov

Page 24: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++

4.4. DateTimePicker – prvok na zadávanie času a dátumu – prvok na zadávanie času a dátumu

5.5. CheckBox – na voľbu občerstvenia – na voľbu občerstvenia

6. 6. ComboBox – na výber typu limuzíny z viacerých dostupných – na výber typu limuzíny z viacerých dostupných typovtypov

Page 25: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++

7.7. PictureBox – na zobrazenie vybranej limuzíny – na zobrazenie vybranej limuzíny

8. 8. GroupBox – na zoskupenie prvkov do skupiny – na zoskupenie prvkov do skupiny

Page 26: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++

Náš program bude mať len jedno okno, ktoré bude vyzerať takto:Náš program bude mať len jedno okno, ktoré bude vyzerať takto:

Page 27: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++ Tu je popis jednotlivých prvkov:Tu je popis jednotlivých prvkov:

TextBox

Button

GroupBox

PictureBoxPictureBox

CheckBox

ComboBox

DateTimePicker

Label

Label

Label

Page 28: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++

Ku každému prvku, aj k samotnému hlavnému oknu (Form1), patrí Ku každému prvku, aj k samotnému hlavnému oknu (Form1), patrí tzv. tzv. panel vlastností. Tu nastavíme rôzne vlastnosti daného . Tu nastavíme rôzne vlastnosti daného prvku, napr. jeho meno, text, ktorý má byť na ňom vypísaný, prvku, napr. jeho meno, text, ktorý má byť na ňom vypísaný, vzhľad a podobne. Štandardne by mal byť viditeľný, ak ho vzhľad a podobne. Štandardne by mal byť viditeľný, ak ho nevidíme, zobrazíme si ho cez nevidíme, zobrazíme si ho cez View/Properties WindowView/Properties Window. Sú na ňom . Sú na ňom zobrazené vlastnosti prvku, ktorý je práve označený.zobrazené vlastnosti prvku, ktorý je práve označený.

Page 29: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++ V prípade našej aplikácie nastavíme vlastnosti jednotlivých prvkov V prípade našej aplikácie nastavíme vlastnosti jednotlivých prvkov

takto (uvedené sú len tie ktoré sa zmenia oproti štandardnému takto (uvedené sú len tie ktoré sa zmenia oproti štandardnému nastaveniu):nastaveniu):1. 1. FormForm Form1::

Text Text : Najlepšie limuzíny s.r.o.: Najlepšie limuzíny s.r.o.2. 2. GroupBoxGroupBox GroupZakaznik::

Text Text : Zákazník: Zákazník3. 3. GroupBoxGroupBox GroupLimuzina::

Text Text : Limuzína: Limuzína4. 4. LabelLabel LabelMeno::

Text Text : Meno: Meno5. 5. TextBoxTextBox TextMeno::

Text Text : : 6. 6. LabelLabel LabelAdresa::

Text Text : Adresa: Adresa7. 7. TextBoxTextBox TextAdresa::

TextText: :

Page 30: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++

8. 8. LabelLabel LabelTyp::

TextText : Typ : Typ

9. 9. ComboBoxComboBox ComboTyp::

Text Text : :

ItemsItems: : Town Car LimoTown Car Limo

Chrysler 300Chrysler 300

NavigatorNavigator

Rolls Royce Silver CloudRolls Royce Silver Cloud

Bentley Touring SedanBentley Touring Sedan

10. 10. LabelLabel LabelDatum::

TextText : Dátum : Dátum

11. 11. DateTimePickerDateTimePicker PickerDatum::

12. 12. LabelLabel LabelCas::

TextText : Čas : Čas

Page 31: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++ 13. 13. DateTimePickerDateTimePicker PickerCas::

FormatFormat : Time : TimeShowUpDownShowUpDown : True : True

14. 14. LabelLabel LabelPocetHodin::TextText : Počet hodín : Počet hodín

15. 15. TextBoxTextBox TextPocetHodin::TextText : 0 : 0TextAlignTextAlign : Right : Right

16. 16. CheckBoxCheckBox CheckObcerstvenie::TextText : Občerstvenie : Občerstvenie

17. 17. PictureBoxPictureBox PictureLimuzina::18. 18. LabelLabel LabelCena::

TextText : Cena/Skk : Cena/Skk19. 19. TextBoxTextBox TextCena::

TextText : 0 : 0TextAlignTextAlign : Right : Right

Page 32: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++

20. 20. ButtonButton ButtonVypocitajCenu::

TextText : Vypočítaj cenu : Vypočítaj cenu

21. 21. ButtonButton ButtonPotvrdObjednavku::

TextText : Potvrď objednávku : Potvrď objednávku

22. 22. ButtonButton ButtonNovaObjednavka::

TextText : Nová objednávka : Nová objednávka

23. 23. ButtonButton ButtonKoniec::

TextText : Koniec : Koniec

Page 33: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikTvorba aplikácií v MS Visual C+ácií v MS Visual C+++

Posledná úprava vzhľadu nášho programu bude zmena ikony. Posledná úprava vzhľadu nášho programu bude zmena ikony. Urobíme to v panele vlastností okna Form1:Urobíme to v panele vlastností okna Form1:

Nová ikona sa volá Red.ico:Nová ikona sa volá Red.ico:

Page 34: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikácií v MS Visual C+Tvorba aplikácií v MS Visual C+++

V hlavičkovom súbore V hlavičkovom súbore Form1.hForm1.h sa nové prvky automaticky objavia v triede sa nové prvky automaticky objavia v triede Form1Form1private: System::Windows::Forms::GroupBox * GroupZakaznik;private: System::Windows::Forms::Label * LabelMeno;private: System::Windows::Forms::Label * LabelAdresa;private: System::Windows::Forms::GroupBox * GroupLimuzina;private: System::Windows::Forms::ComboBox * ComboTyp;private: System::Windows::Forms::DateTimePicker * PickerDatum;private: System::Windows::Forms::DateTimePicker * PickerCas;private: System::Windows::Forms::TextBox * TextPocetHodin;private: System::Windows::Forms::CheckBox * CheckObcerstvenie;private: System::Windows::Forms::Label * LabelTyp;private: System::Windows::Forms::Label * LabelDatum;private: System::Windows::Forms::Label * LabelCas;private: System::Windows::Forms::Label * LabelPocetHodin;private: System::Windows::Forms::PictureBox * PictureLimuzina;private: System::Windows::Forms::TextBox * TextCena;private: System::Windows::Forms::Label * LabelCena;private: System::Windows::Forms::Button * ButtonPotvrdObjednavku;private: System::Windows::Forms::Button * ButtonNovaObjednavka;private: System::Windows::Forms::Button * ButtonKoniec;private: System::Windows::Forms::TextBox * TextMeno;private: System::Windows::Forms::TextBox * TextAdresa;private: System::Windows::Forms::Button * ButtonVypocitajCenu;

Page 35: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikácií v MS Visual C+Tvorba aplikácií v MS Visual C+++

3. Spracovanie udalostíTeraz dopíšeme chýbajúcu časť kódu, teda to, ako bude program Teraz dopíšeme chýbajúcu časť kódu, teda to, ako bude program reagovať na udalosti, ktoré nastanú počas jeho behu. Vytvoríme reagovať na udalosti, ktoré nastanú počas jeho behu. Vytvoríme teda celú hlavnú funkčnosť programu.teda celú hlavnú funkčnosť programu.

Jediné udalosti, na ktoré musí tento program reagovať, sú Jediné udalosti, na ktoré musí tento program reagovať, sú stlačenia tlačítiek a výber typu limuzíny pomocou combo boxu(vtedy sa zjaví jej obrázok). (vtedy sa zjaví jej obrázok).

Funkcia, ktorá spracúva stlačenie tlačítka, sa automaticky vytvorí, Funkcia, ktorá spracúva stlačenie tlačítka, sa automaticky vytvorí, ak pri dizajnovaní okna dvakrát klikneme na tlačítko. Táto funkcia ak pri dizajnovaní okna dvakrát klikneme na tlačítko. Táto funkcia sa objaví ako súkromná metóda triedy sa objaví ako súkromná metóda triedy Form1Form1::

private: System::Void ButtonVypocitajCenu_Click(System::Object * sender, System::EventArgs * e){}

Page 36: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikácií v MS Visual C+Tvorba aplikácií v MS Visual C+++

Napíšme teda funkciu Napíšme teda funkciu ButtonVypocitajCenu_Click ButtonVypocitajCenu_Click ::private: System::Void ButtonVypocitajCenu_Click(System::Object * sender, System::EventArgs * e) {

int cena;int ceny[5]={2000, 3000, 5000, 4000, 3500};cena=TextPocetHodin->Text->ToInt32(0)*ceny[ComboTyp-

>SelectedIndex];if (CheckObcerstvenie->Checked==1) cena+=1000;TextCena->Text=cena.ToString("D");

} TextBox->Text – text, ktorý sa objaví v text boxe – text, ktorý sa objaví v text boxe

ToInt32(0) – funkcia, ktorá prevedie premennú na 32-bitový int. – funkcia, ktorá prevedie premennú na 32-bitový int. Parameter 0 znamená, že výsledok sa neformátuje.Parameter 0 znamená, že výsledok sa neformátuje.ComboBox->SelectedIndex – index prvku, ktorý bol zvolený v combo – index prvku, ktorý bol zvolený v combo boxeboxeCheckBox->Checked – parameter, ktorý udáva, či bolo políčko v check – parameter, ktorý udáva, či bolo políčko v check boxe zaškrtnuté (0 alebo 1)boxe zaškrtnuté (0 alebo 1)ToString("D") – funkcia, ktorá prevedie premennú na String. „D" znamená – funkcia, ktorá prevedie premennú na String. „D" znamená formát formát ““decimaldecimal””, t.j. číslo v desiatkovej sústave., t.j. číslo v desiatkovej sústave.

Page 37: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikácií v MS Visual C+Tvorba aplikácií v MS Visual C+++

Teraz napTeraz napíšeme funkciu íšeme funkciu ButtonPotvrdObjednavku_ClickButtonPotvrdObjednavku_Click. Úlohou tejto . Úlohou tejto funkcie bude uložiť údaje zadané v okne do objektu triedy funkcie bude uložiť údaje zadané v okne do objektu triedy ObjednávkaObjednávka a potom uložiť vytvorený objekt do poľa objednávok. a potom uložiť vytvorený objekt do poľa objednávok.

Aby sme mohli robiť operácie s poľom objednávok, musíme ho Aby sme mohli robiť operácie s poľom objednávok, musíme ho najprv alokovať, keďže zatiaľ máme vytvorený len smerník. Urobíme najprv alokovať, keďže zatiaľ máme vytvorený len smerník. Urobíme to v konštruktore triedy to v konštruktore triedy Form1Form1::Form1(void){

objednavky=new Objednavka[100];pocet_objednavok=0;

InitializeComponent();}

Ďalej budeme potrebovať ešte jednu novú triedu. Údaj, ktorý Ďalej budeme potrebovať ešte jednu novú triedu. Údaj, ktorý načítame z prvku načítame z prvku TextBoxTextBox, je typu , je typu StringString, čo je špeciálny typ , čo je špeciálny typ Managed C++. My máme v našej triede Managed C++. My máme v našej triede ObjednávkaObjednávka údaje typu údaje typu string string štandardného C++, preto budeme potrebovať funkciu na štandardného C++, preto budeme potrebovať funkciu na prevod prevod StringuStringu na na stringstring. Vytvoríme si novú triedu . Vytvoríme si novú triedu PomôckyPomôcky a v nej a v nej bude zatiaľ jediná metóda – bude zatiaľ jediná metóda – StringNastringStringNastring..

Page 38: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikácií v MS Visual C+Tvorba aplikácií v MS Visual C+++ Takto bude vyzerať trieda Pomôcky:Takto bude vyzerať trieda Pomôcky:

class Pomocky{

public: Pomocky(void); ~Pomocky(void); string StringNastring(String __gc *s);

};

string Pomocky::StringNastring(String __gc *s){

using namespace Runtime::InteropServices;const char* chars=(const char *)

(Marshal::StringToHGlobalAnsi(s)).ToPointer();string s1=chars;Marshal::FreeHGlobal(IntPtr((void*)chars));return s1;

}

Page 39: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikácií v MS Visual C+Tvorba aplikácií v MS Visual C+++ Teraz môžeme napísať funkciu Teraz môžeme napísať funkciu ButtonPotvrdObjednavku_ClickButtonPotvrdObjednavku_Click : :

private: System::Void ButtonPotvrdObjednavku_Click(System::Object * sender, System::EventArgs * e) {

Objednavka o; CasovyUdaj c; Pomocky pom; c.NastavCas(PickerCas->Value.Hour,PickerCas->Value.Minute); c.NastavDatum(PickerDatum->Value.Year,PickerDatum->

Value.Month, PickerDatum->Value.Day); o.NastavHodnoty(pom.StringNastring(TextMeno->Text),

pom.StringNastring(TextAdresa->Text),ComboTyp->SelectedIndex, TextPocetHodin->Text->ToInt32(0),TextCena->Text->ToInt32(0),CheckObcerstvenie->Checked,c);

objednavky[pocet_objednavok]=o; pocet_objednavok++;

}

Page 40: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikácií v MS Visual C+Tvorba aplikácií v MS Visual C+++

Teraz si vysvetlíme neznáme príkazy a názvy:Teraz si vysvetlíme neznáme príkazy a názvy:DateTimePicker->Value – táto štruktúra (objekt) obsahuje údaje o – táto štruktúra (objekt) obsahuje údaje o čase, ktorý je nastavený v prvku čase, ktorý je nastavený v prvku DateTimePickerDateTimePicker. Sú v nej údaje . Sú v nej údaje ako napr. ako napr. Year - nastavený rok - nastavený rok Month – mesiac – mesiacDay - deň v mesiaci - deň v mesiaciHour – hodina – hodinaMinute – minúta – minútaSecond – sekunda – sekunda

a ďalšie.a ďalšie.

Page 41: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikácií v MS Visual C+Tvorba aplikácií v MS Visual C+++ Ďalšou funkciou, ktorú napíšeme, bude funkcia Ďalšou funkciou, ktorú napíšeme, bude funkcia

ButtonNovaObjednavka_ClickButtonNovaObjednavka_Click. Tu ide len o to, aby sa vynulovali . Tu ide len o to, aby sa vynulovali všetky hodnoty, prípadne nastavili na nejaké počiatočné hodnoty.všetky hodnoty, prípadne nastavili na nejaké počiatočné hodnoty.private: System::Void ButtonNovaObjednavka_Click(System::Object * sender, System::EventArgs * e) {

TextMeno->Text=""; TextAdresa->Text=""; ComboTyp->SelectedIndex=-1; PickerDatum->Value=DateTime::Today; PickerCas->Value=DateTime::Now; TextPocetHodin->Text=""; CheckObcerstvenie->set_Checked(0); TextCena->Text="";

} DateTime::Today – obsahuje dnešný dátum – obsahuje dnešný dátum

DateTime::Now – obsahuje aktuálny čas – obsahuje aktuálny časCheckBox->set_Checked(0) – nastaví políčko tak, aby nebolo – nastaví políčko tak, aby nebolo zaškrtnutézaškrtnuté

Page 42: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikácií v MS Visual C+Tvorba aplikácií v MS Visual C+++ Nakoniec napíšeme funkciu Nakoniec napíšeme funkciu ButtonKoniec_ClickButtonKoniec_Click. Tá len ukončí . Tá len ukončí

program.program.private: System::Void ButtonKoniec_Click(System::Object * sender, System::EventArgs * e) {

Close(); }

Zostáva nám spracovať prípad, keď sa v combo boxe zvolí nejaký Zostáva nám spracovať prípad, keď sa v combo boxe zvolí nejaký typ limuzíny. Vtedy by sa mal v picture boxe zobraziť obrázok typ limuzíny. Vtedy by sa mal v picture boxe zobraziť obrázok vybraného auta.vybraného auta.

Tento raz nebude program reagovať na kliknutie myšou, ale na Tento raz nebude program reagovať na kliknutie myšou, ale na zmenu vybranej položky. V paneli vlastností combo boxu klikneme zmenu vybranej položky. V paneli vlastností combo boxu klikneme na udalosť na udalosť SelectedIndexChangedSelectedIndexChanged::

Page 43: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikácií v MS Visual C+Tvorba aplikácií v MS Visual C+++ Teraz napíšeme funkciu ComboTyp_SelectionIndexChanged :Teraz napíšeme funkciu ComboTyp_SelectionIndexChanged :

private: System::Void ComboTyp_SelectedIndexChanged(System::Object * sender, System::EventArgs * e)

{ Bitmap __gc *image; //bitmapový obrázok switch (ComboTyp->SelectedIndex) {

case 0: image=new Bitmap("TownCarLimo.jpg",true); break;case 1: image=new Bitmap("Chrysler300Limo.jpg",true); break;case 2: image=new Bitmap("Navigator.jpg",true); break;case 3: image=new Bitmap("RollsRoyceSilverCloud.jpg",true);

break;case 4: image=new Bitmap("BentleyTouringSedan.jpg",true); break;

} this->PictureLimuzina->set_Image(image); //zobrazenie obrázku

}

Page 44: Visual C++ Z áklady tvorby aplikácií

Tvorba aplikácií v MS Visual C+Tvorba aplikácií v MS Visual C+++

Nakoniec nám už len zostáva náš program spustiť a vyskúšať:Nakoniec nám už len zostáva náš program spustiť a vyskúšať: