Windows native programozás

A tantárgy angol neve: Windows Native Programming

Adatlap utolsó módosítása: 2016. január 19.

Budapesti Műszaki és Gazdaságtudományi Egyetem
Villamosmérnöki és Informatikai Kar

Villamosmérnöki szak
Mérnök informatikus szak
Szabadon választható tantárgy

Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIHVAV09   0/0/2/f 2  
3. A tantárgyfelelős személy és tanszék Dr. Csurgai-Horváth László,
A tantárgy tanszéki weboldala http://hvt.bme.hu/~csurgai/Mswin/mswin.htm
4. A tantárgy előadója Dr. Csurgai-Horváth László, egyetemi docens
5. A tantárgy az alábbi témakörök ismeretére épít C programozási nyelv ismerete
6. Előtanulmányi rend
Ajánlott:

Ajánlott a programozás alapjai 1. (VIEEA100/VIEEAA00/VIHIA106/VIHIAA01 valamelyike).

A tárgyat nem vehetik fel azok a hallgatók, akik teljesítették a tárgy előd tantárgyát (VIMH9143 vagy VIHVJV43)

7. A tantárgy célkitűzése

Jelenleg az egyik legelterjedtebb személyi számítógépes operációs rendszer a Microsoft Windows. Az alatta futó applikációk megírása speciális programozói ismereteket igényel, melyhez számos fejlesztői eszköz áll rendelkezésre különféle programozási nyelveken és platformokon. Ennek a tantárgynak az elsődleges célkitűzése, hogy a megismertesse a Windows native módú, Win32 API (Application Programming Interface) használatára épülő programozást és a megszerzett ismereteket konkrét példákon keresztül elmélyítse (megjelenítés, adatfeldolgozás, kommunikáció perifériákkal, stb.). A tantárgy ismerteti továbbá a Windows 8-tól bevezetésre került WinRT (Windows Runtime Library), majd UWP (Universal Windows Platform) alapjait is, amely C++ nyelven számos újítást bevezetve biztosít a Win32 API-hoz hasonló jellegű funkcionalitást.
Kitekintés jelleggel foglalkozunk az eszközmeghajtók fejlesztési kérdéseivel is, így a korábbi DDK (Windows Driver Development Kit) illetve a jelenlegi WDK (Windows Driver Kit) alkalmazásával.

8. A tantárgy részletes tematikája

Windows alapfogalmak és programozói fejlesztőrendszerek.
GUI, az egységes felhasználói felület, multitasking, memóriakezelés, üzenet alapú működés.
Egy egyszerű Windows program felépítése API használatával. Több ablakos applikációk.
Szövegek kezelése, GDI, handler fogalma, scrollbar.
Grafikai elemek: vonalak, felületek, a mapping mode fogalma, régiók és útvonalak, bitmap, metafile, betűtípusok.
A billentyűzet és az egér kezelése.
A Windows timer.
A child window fogalma, nyomógombok, scrollbar, edit-box, list-box használata.
Erőforrások: ikon, cursor, bitmap, menük és gyorsítógombok, modális és nem-modális dialógusablakok, message box-ok, közös dialógusablakok.
Dynamic Link Library (DLL).
A WinRT (Windows Runtime Library) és az UWP (Universal Windows Platform).
A driverfejlesztés software eszközei.
A fentiek mérnöki alkalmazásokon keresztül történő bemutatása.

Heti bontásban:

1.hét: Windows alapfogalmak, a Windows kialakulása, különféle verziók. Programozói fejlesztőrendszerek. A grafikus felhasználói felület alapfilozófiája, felhasználói interface és  üzenetvezérelt működés. Memóriakezelés és multitasking. Egy egyszerű Windows API program felépítése. A kód fő részei. Típusok, elnevezési konvenciók, handlerek.

2.hét: Szöveges információ kezelése, képernyő output. A GDI (Graphics Device Interface) használata. Egy szöveges outputtal rendelkező program megírása, kiegészítése scrollbar használattal. Grafikai elemek: vonalak, felületek, régiók, útvonalak, színek kezelése. Egy konkrét alkalmazás: függvény ábrázolása, illetve mérési adatsor beolvasása fileból és annak megjelenítése.

3.hét: A mapping mode fogalma, használata. Egy grafikus outputtal rendelkező program felépítése. Logikai és eszközkoordináták: példaprogram nagyméretű ábra átméretezésére és megjelenítésére. A Windows API által támogatott képformátumok. Képek létrehozása, használata; beolvasás és megjelenítés fileból. Nem konvencionális ablakformák.

4.hét: Beviteli eszközök: a billentyűzet és az egér kezelése. Karakterkészletek, betűtípusok, nemzetközi karakterek. A Windows API használata ábrák és felirataik megjelenítésében.

5.hét: Időzítés Windows programokban. Az időzítő működésének alapja, beállítása, használhatósági korlátai. Példaprogram a timer használatával: változó adatok megjelenítése szöveges és grafikus formában.

6.hét: A felhasználói felület javítása a child-window segítségével. Nyomógombok fajtái, görgetősáv, edit-box, list-box használata és ezek különféle stílusai. Egy összetett felhasználói felületű program elkészítése.

7.hét: Az erőforrások használata, a resource editor működése. Resource file és resource compiler. Alkalmazási példa: erőforrások használata a program grafikus elemeinek és adattömbjeinek tárolására.

8.hét: Menük és típusaik: system, main, popup, floating popup. A resource editor használata a menük létrehozásához. Menühasználat ábrák egyedi ablakokban történő megjelenítésére.

9.hét: Modális és nem-modális dialógusablakok. A dialógusablakok kezelése a programban. Message box-ok és a common dialog box library használata. Példaprogram a dialógusablakok használatára: paraméterbeállítás és átadás.

10.hét: A DLL-ek felépítése, használata és alkalmazási lehetőségei. Programozási gyakorlat: egy DLL megírása és hívása egy alkalmazásból. Team munka és feladatmegosztás nagyobb projektek esetén.

11.A Windows Runtime Library és a Universal Windows Platform: platformfüggetlen programfejlesztés. Áttekintés: a Win32 API továbbfejlesztése.

12.hét: Nagy ZH megírása.

13.Egy Metro-stílusú applikáció elkészítése Windows 10 platformon.

14.Hardware eszközök támogatása Windows alatt: eszközmeghajtók. Fejlesztőeszközök ismertetése; a Windows Driver Kit, egy példaprogram bemutatása.

 

 

9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)

A tantárgyat számítógépteremben oktatjuk ahol minden egyes hallgató az oktató instrukcióinak megfelelően, önállóan végzi el a kitűzött feladatokat. Az órák elméleti bevezetőből és hozzá kapcsolódó programozási gyakorlati feladatokból állnak.

10. Követelmények

a.    A szorgalmi időszakban:

A hallgatók a tárgy sikeres elvégzése esetén félévi jegyet kapnak. A félévi jegy megszerzésének a feltételei:


- Egy nagy zárthelyi legalább elégségesre történő megírása a tanóra keretében. A ZH egy konkrét programozási feladat számítógépen történő elvégzése.


- Házi feladat elkészítése, beadása és elfogadása a szorgalmi időszak végéig. A házi feladat egy az oktatóval egyeztetett C vagy C++ program elkészítése Windows API használatával. A házi feladat osztályzása ötfokozatú skálán, érdemjegyekkel történik.


- A félévi jegy a zárthelyire és a házi feladatra kapott jegyek átlaga, a hagyományos kerekítési szabályok szerint.

b.    A vizsgaidőszakban: -

c.    Elővizsga: -

11. Pótlási lehetőségek

Sikertelen zárthelyi a szorgalmi időszakban a pótzárthelyin pótolható.

A sikertelen (pót)zárthelyi a pótlási héten különeljárási díj ellenében egy további alkalommal pótolható.

A házi feladat különeljárási díj ellenében a pótlási héten pótolható.

12. Konzultációs lehetőségek

Az oktatóval történő egyéni megbeszélés szerint.

13. Jegyzet, tankönyv, felhasználható irodalom

Az MSDN online dokumentációi: https://msdn.microsoft.com/

 

Charles Petzold: Programming Windows

Microsoft Press, 1998

ISBN 1-57231-995-X

 

Sipos Mariann: A Visual C++ és az MFC

ISBN: 963640979

 

http://www.hvt.bme.hu/~csurgai/Bsc/WinProg.pdf

14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
Kontakt óra28
Félévközi készülés órákra5
Felkészülés zárthelyire5
Házi feladat elkészítése14
Kijelölt írásos tananyag elsajátítása8
Vizsgafelkészülés-
Összesen60
15. A tantárgy tematikáját kidolgozta Dr. Csurgai-Horváth László, BME-HVT