Image
30.6.2016 0 Comments

C++ pod Windows / Záver / 26. časť

Späť na úvod >> Späť na programovanie >> Späť na seriál

V tejto časti sa pri seriáli C++ pod Windows stretávame naposledy. Predchádzajúcich 25 častí bolo venovaných čisto programovaniu a riešeniu rôznych programátorských úloh. Teraz síce dokončíme rozprávanie o rozširujúcich knižniciach DLL, ale hlavne sa pokúsim zhrnúť všetko, čo sme sa spolu naučili (áno, aj mne priniesol tento seriál veľa nových poznatkov, aj keď asi trochu iných ako vám). Takisto sa vám  pokúsim načrtnúť, čo so získanými vedomosťami môžete ďalej podniknúť a ako ich ďalej zveľaďovať. Ale na začiatok si dáme predsa len niečo z programovania.

Príklad 3 – MFC ExtensionDLL. Ak chcete exportovať zo svojich knižníc prvky jazyka C++ a využívať pri tom knižnicu MFC (napr. ak exportujete triedu odvodenú od nejakej triedy MFC) , predstavujú rozširujúce knižnice MFC tú správnu voľbu. (Na exportovanie C++ prvkov môžete, samozrejme, použiť aj štandardnú Win32 DLL knižnicu.) Teóriu nájdete v predchádzajúcej časti, takže si uvedieme sľúbený príklad. Opäť použijeme funkciu na otáčanie textu ako pri regulárnych knižniciach, ale tentoraz bude táto funkcia (CopyBText) súčasťou triedy. Do Workspace TFive pridajte pomocou MFC App Wizardu (DLL) nový projekt s názvom ExtensionDLL. V kroku 1/1 vyberte MFC Extension DLL a kliknite na finish. Do súboru ExtensionDLL.cpp pridajte tento kód:

class AFX_EXT_CLASS Exported
{
public:
      char* CopyBText(char* strInput) { return strrev(strInput); }
};

Makro AFX_EXT_CLASS slúži na exportovanie/importovanie tried z rozširujúcich knižníc MFC. Keby ste používali klasickú WIN32 DLL knižnicu, použili by ste kľúčové slovo __declspec:

class  __declspec(dllexport) Exported...

Projekt preložte, mali by ste ako výstup dostať (okrem iného) jednu DLL-ku (ExtensionDLL.DLL) a jednu LIB-ku (ExtensionDLL.LIB). Teraz ešte vytvoriť klienta. Mohli by ste použiť aj RegularDLL klienta, ale pre zachovanie určitej integrity radšej vytvorte novú aplikáciu s názvom ExtensionDLLClient. Bude to rovnaká aplikácia ako RegularDLLClient (MFC AppWizard exe, Dialog based, shared MFC..). Zdroj dialógu zeditujte rovnako ako pri RegularDLLClient aplikácii (resp. Copy & Paste), pridajte aj rovnaké členské premenné. Kód obslužnej funkcie správy BN_CLICKED je takýto:

void CExtensionDLLClientDlg::OnBtnUprav()
{
      Exported exObject;
 
      UpdateData(TRUE);
      char strTemp[20];
      strcpy(strTemp, m_strInput);
      m_strOutput=exObject.CopyBText(strTemp);
      UpdateData(FALSE);     
}

Aby ste mohli triedu Exported využívať, musíte ju naimportovať, preto na začiatok súboru ExtensionDLLClientDlg.cpp vložte tento kód:

class AFX_EXT_CLASS Exported
{
public:
      char* CopyBText(char* strInput);
};

Všimnite si, že musíte exportovať kompletnú deklaráciu triedy (malo by to byť samozrejmé, ale pre istotu pripomínam, že v klientovi sa nikde v zdrojových textoch nenachádza kód funkcie CopyBText, ten sa doťahuje z DLL knižnice v runtime). Zaujímavé je tiež použitie makra AFX_EXT_CLASS, ktoré sme v nezmenenej podobe použili na export aj import dát (pre klasické WIN32 DLL knižnice bez podpory MFC by ste museli použiť class __declspec(dllimport) Exported...). Finta je v tom, že makro  AFX_EXT_CLASS je raz definované ako __declspec(dllexport), ak exportujeme, a __declspec(dllimport), ak importujeme. Ako aplikačný systém zistí, ktorú verziu má použiť, to sa dočítate v helpe, v topicu DLLs, exporting using AFX_EXT_CLASS. Má to hlavne tú výhodu, že môžete použiť rovnaké hlavičkové súbory tak pre knižnicu DLL, ako aj pre klienta. Vráťme sa však k nášmu klientovi. Teraz už stačí len nakopírovať súbor ExtensionDLL.DLL k „exáču“ ExtensionDLLClienta (\Debug adresár) a súbor ExtensionDLL.LIB k zdrojovým textom klienta a pridať do projektu (ALT + F7, karta Link, pole Object/Library modules). Preložte a vyskúšajte klienta, všetko by malo fungovať. (Poznámka: Pri exportovaní tried sa exportujú len verejné dátové členy a funkcie.)

Ako ste na tom? V prvej časti som napísal: Ak ste si teraz pomysleli, že programovanie s „Céčkom“ pod Windows  musí byť nehorázne ťažké, rád vám poviem, že nemáte celkom pravdu. Ak teraz – po preštudovaní 25 častí – začínate mať dojem, že na tejto vete je trochu pravdy, tak seriál vo vašom prípade splnil svoj účel. Ak nie, nič to, skúsim vám pomôcť. Vždy, keď sa pustíte do študovania novej problematiky, začínate takpovediac na zelenej lúke. Všetko je zahalené tajomstvom (čo je to Class Wizard a MFC, ako sa dajú využívať pri písaní aplikácií...). Tento „základný“ level je dobrým odrazovým mostíkom pre ďalšie štúdium. Snažíte sa nájsť odpovede na svoje otázky (a v tomto hľadaní ste relatívne úspešní) a ešte neviete, čo všetko neviete, takže dravo postupujete vpred. Táto fáza by sa dala nazvať aj optimistickou fázou. Po istom čase sa však zastavíte na jednom mieste a stojíte, neviete, ako ďalej. Zrazu ste si začali uvedomovať, čo všetko neviete a v akom vysokom nepomere sú vaše terajšie vedomosti k celej problematike. Práve teraz nastáva kríza, keď sa rozhoduje o budúcnosti. Ak sa totiž zľaknete a stratíte záujem, je vysoko pravdepodobné, že sa k tejto problematike tak skoro nevrátite. V tejto pesimistickej fáze je najdôležitejší retrospektívny pohľad. Musíte si uvedomiť, čo ste sa už všetko naučili, že vaše prvotné otázky vám pripadajú smiešne a vo všetkých tých tajomných pojmoch sa už ako-tak viete orientovať. Ak to dokážete, potom fázu pesimizmu prekonáte a nastáva fáza realizmu (už si pripadám ako na nejakej prednáške z dejín literatúry J). Teraz už danú problematiku zvládate viac-menej rutinne, už nie je veľa vecí, čo vás dokáže prekvapiť, a väčšinu štandardných problémov ste schopní vyriešiť v krátkom čase. Predpokladám, že väčšina z vás sa nachádza v kritickej druhej fáze, preto ak nebudete vedieť, ako ďalej, skúste použiť opisovaný prístup.

Čo ste sa všetko naučili? Začnime pekne po poriadku. Naučili ste sa pracovať s prostredím Microsoft Visual C++. Keďže viete využívať možnosti tohto prostredia, máte veľkú výhodu. Visual C++ patrí totiž k tým zložitejším vývojovým prostrediam (napr. oproti Borland C++ Builderu). Ale ak ho viete využívať, prechod na iný vývojový nástroj vám nespôsobí veľké problémy, čo však, naopak, nemusí platiť (poznám niekoľko „C++builderistov“, ktorí sa pokúšali prejsť na VC++ a skončili ešte vo fáze optimizmu J). Ďalej by ste mali na základnej úrovni rozumieť, ako sa správa štandardný program pod Windows (smerovanie správ, procedúra okna atď.). Tieto vedomosti (prostredie VC++ a základy Windows) tvoria spolu pevné základy, na ktorých ste mohli stavať štúdium knižnice MFC. A práve táto knižnica vám mala pomôcť pri lepšom pochopení objektového Windows programovania, keď ste neboli zbytočne zaťažení starým programovaním API.

Ako ďalej? No dobre, poviete si, ovládam VC++, knižnicu MFC a čo ďalej? Túto otázku by si mali určite položiť všetci, ktorí sa ešte programovaním neživia (tí, ktorí sú už profesionálnymi programátormi, mi dajú za pravdu, že na túto otázku im veľmi rýchlo dá odpoveď šéf, resp. zákazník J). Samozrejme, existuje nespočetne veľa ciest, akými sa vydať, ale keď chcete zostať pri VC++ a MFC, máte zhruba tieto možnosti (pozri obr. 1):

  1. Vyvíjanie aplikácií pre OS Windows  
  2. Vyvíjanie aplikácií pre mobilné zariadenia triedy PocketPC, PocketPC 2002, CE.NET
  3. Programovanie pre „web“
  4. Programovanie pre enterprise
  5. Tvorenie hier s DirectX

(Prosím, neberte tieto možnosti ako nejakú dogmu, sú to len moje návrhy, ktoré však, samozrejme, nemajú všeobecnú platnosť.) Ktorú z nich si vyberiete, je len na vás, a ak ešte neviete, skúsim vám pomôcť vymenovaním vecí, čo si budete musieť doštudovať (predpokladám, že vaše vedomosti zodpovedajú približne rozsahu tohto seriálu). Takže prvá možnosť – programovanie klasických desktopových aplikácií pre OS Windows. Musíte úplne zvládnuť knižnicu MFC a vedomosti z oblasti OLE, COM a COM+ sú v tejto oblasti veľmi užitočné (ak uvažujete aj o iných OS ako Windows pre svoju cieľovú platformu, pozrite sa napr. na technológiu CORBA). Momentálne nie sú pre vás vedomosti architektúry .NET životne dôležité, každopádne bude dobré orientovať sa v tejto oblasti, aby ste nezaspali dobu. Určite by ste však mali zvládať niektorú z technológií na prístup k databázam. Je v princípe jedno, ktorú – záleží na type aplikácií, aké píšete, ale myslím, že by ste mohli začať s ADO (ktoré vám bude väčšinou úplne stačiť), a ak sa budete orientovať len na výkon, tak potom OLE DB.

Vaša voľba pri výbere vývojového prostredia by mala padnúť na Visual Studio .NET, ale ak nemáte dosť financií, vystačíte aj s Visual Studiom 6.0. Druhá možnosť, vyvíjanie pre mobilné zariadenia, je v súčasnosti atraktívna a jej vývoj ide veľmi rýchlo dopredu. Čím skôr teda naskočíte, tým lepšie. Pripravte sa však na to, že vývojárske technológie pre mobilné zariadenia sa približne jednu generáciu omeškávajú za desktopovými. Ak si však vyberiete platformu PocketPC a vyššiu, tento rozdiel až tak veľmi nepocítite (horšie je to napr. s platformou PalmOS). PocketPC má pre vás ešte jednu výhodu. Má veľmi dobrú podporu knižnice MFC, takže drvivú väčšinu vedomostí z tohto seriálu môžete použiť aj tam. Programovanie pre zariadenia PocketPC vám uľahčí aj vývojové prostredie Microsoft eMbedded Visual Tools (obsahuje eMbedded Visual C++ a eMbedded Visual Basic), ktoré je na 90 % zhodné s Visual Studiom 6.0 a dá sa od Microsoftu stiahnuť zadarmo zo stránky http://www.microsoft.com/mobile/downloads/emvt30.asp  (napr. stretnete sa tu s rovnakým Class Wizardom, podobným App Wizardom a Resource editorom ako pri klasickom Visual C++). Ak si vyberiete túto možnosť, pravdepodobne sa nevyhnete ani databázam a databázovému programovaniu. Máte na výber relatívne dosť databáz, ja mám veľmi dobré skúsenosti s Microsoft SQL Serverom for Windows CE, ktorý si tiež môžete zadarmo stiahnuť a používať  (http://www.microsoft.com/sql/CE/default.asp). Musíte však vlastniť vývojársku licenciu na desktopový SQL Server. V tomto prípade vás neminú technológie ako ADO CE alebo OLE DB CE. Ale tu neplatí ako pri desktopových aplikáciách, že vystačíte s ADO CE (ktoré, mimochodom, ani nie je oficiálne v eVC++ podporované). Takže radšej siahnite po OLE DB CE. Ak potrebujete písať naozaj veľmi jednoduché aplikácie, potom vystačíte aj s eVB a ADO CE. Budúcnosť na tejto platforme je tiež spojená s .NET architektúrou a už je na svete aj beta 1 .NET Compact Frameworku, čo je akýsi plug-in do Visual Studia .NET umožňujúci vyvíjať mobilné aplikácie. Tretia možnosť – programovanie pre „web“. Týmto nemyslím nejaké programovanie webových stránok, skôr to programovanie v pozadí, ktoré nevidno, ale bez ktorého sú  webové stránky len nefunkčné statické obrázky. Spadá sem všetko od programovania webových serverov (ako Microsoft IIS, Apache) cez vytváranie/programovanie aplikačných serverov (tvoria medzivrstvu medzi webovou stránkou a databázou) až po budovanie e-business riešení (napr. CRM – Customer Relationship Management)). Posledne menované spadajú už skôr do štvrtej oblasti – programovanie pre enterprise (pozri dalej). Ak sa chcete presadiť v tejto oblasti, znalosti VC++ a MFC vám prídu vhod. Doštudovať si budete musieť základy práce sietí (protokoly, aplikácie klient/server), zídu sa vedomosti napríklad architektúry .NET alebo Sun ONE (ak sa zameriate na vytváranie webových služieb).  Štvrtá možnosť (úzko prepojená s treťou) – programovanie pre enterprise. Ak zamierite sem, dostanete sa do „vyššej“ spoločnosti, keď veľakrát ani nebudete veľa programovať, ale stanú sa z vás konzultanti. Neodporúčam vám orientovať sa na túto možnosť, pokým nie ste už zamestnaní niekde, kde sú ochotní investovať vysoké sumy do kúpy nejakého ERP (Enterprise Resource Planning) systému, inak nemáte šancu dostať sa k takémuto systému (legálne) a hlavne nebudete mať kde svoje vedomosti uplatniť. Pravdepodobne sa nevyhnete databázam (hlavne ORACLE a MS SQL Server). Myslím, že ďalšie odporúčania sú zbytočné, a ak sa orientujete na túto oblasť, máte už v týchto veciach jasno. No a posledná možnosť – tvorenie hier. Takisto veľmi zaujímavá oblasť. V súčasnosti sa na programovanie hier využíva predovšetkým DirectX a OpenGL sa presúva do segmentu profesionálneho nasadenia grafiky, na čo bolo aj primárne určené (o mŕtvom Glide už nemá zmysel nič bližšie písať). Ak budete chcieť tvoriť hry, musíte okrem pozitívneho vzťahu k nim disponovať aj základnými znalosťami grafiky (2D aj 3D) a zvuku (znalosti zo spracovania videa sa tiež môžu zísť). Samozrejme, ak budete napríklad programovať len čistú „fyziku“ (deformácie, nárazy, vplyv vetra...), tak napr. grafiku veľmi nevyužijete, ale zo začiatku sa nemôžete nejako špecializovať. Na MFC môžete, samozrejme, zabudnúť, ale ako vývojové prostredie je VC++ 6.0 úplne ideálne. Tak, a už sme vyčerpali všetky možnosti. Ako som však už písal, existuje ich oveľa viac, je len na vás, aké ďalšie si vymyslíte a vyberiete. Môžete aj ľubovoľne kombinovať (napr. ak vám to pomôže, ja sa momentálne zameriavam na oblasti 1, 2, 4).

Obr. 1 Ako ďalej?

Poznámky k seriálu... V niektorej z predchádzajúcich častí som ešte sľuboval uviesť rozsiahlejší príklad, ktorý by demonštroval väčšinu znalostí, ktoré ste mali získať štúdiom tohto seriálu. Tento program, ako aj všetky ďalšie ukážkové príklady, riešenia domácich úloh a vašich otázok nájdete na niektorom CD REVUE (reálne v decembrovom, ale možno až v budúcom roku), kde bude uvedená elektronická (PDF) verzia tohto seriálu. Všetky zdrojové texty budú umiestnené v projektovom tvare (čo časť, to jedno workspace), takže to nebudú len „suché“ výpisy kódu. Ešte by som rád vymenoval zdroje, z ktorých som pri písaní jednotlivých častí čerpal informácie. V prvom rade to bol veľmi dobre spracovaný help k Visual Studiu: MSDN Library, potom vynikajúca kniha Mistrovství ve Visual C++ (už som sa o nej zmieňoval v predchádzajúcich častiach) a kniha Marka Andrewsa Programujeme v jazyce Visual C++ (Computer Press, 1997). Rôzne „on-line“ zdroje som postupne zverejňoval v Tipoch na WWW. 

Záver. Tak, vážení, končíme. Musím povedať, že pre mňa bolo písanie do časopisu tiež veľmi zaujímavou skúsenosťou a veľa som sa naučil. Bol by som veľmi rád, keby ste mi do mailu napísali pár vašich postrehov o tomto seriáli, čo sa vám páčilo/nepáčilo, v čom vám seriál pomohol a čo vám priniesol. Samozrejme, som vám stále k dispozícií, čo sa týka riešenia programátorských „zákysov“.

Zobrazit Galériu

Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

ITPro

Linux súkromne i pracovne v2.0 (14. časť): Small Business Server

09.11.2016 14:57

Pojem Small Business Server (malý firemný server) začala používať spoločnosť Microsoft ešte v roku 2000 na označenie servera, ktorý ­dokázal plniť úlohy niekoľkých samostatných serverov. Aplikačná vrs ...

ITPro

Industry 4.0: Fikcia alebo už realita?

09.11.2016 14:52

Štvrtá priemyselná revolúcia je pomenovanie rozsiahlych zmien prudko vstupujúcich do súčasného priemyslu. Nositeľom týchto zmien je digitalizácia výroby a optimalizácia všetkých podnikových procesov v ...

ITPro

Vývoj aplikácií UWP pre Xbox One II.

09.11.2016 14:47

V predošlej časti sme ukázali postup, ako si ­vytvoriť vývojársky účet a aktivovať vývojársky režim na hernej konzole Xbox One, aby ste mohli testovať svoje aplikácie. Výhodou hernej konzoly Xbox je v ...

Žiadne komentáre

Vyhľadávanie

Kyocera - prve-zariadenia-formatu-a4-s-vykonom-a3

Najnovšie videá