Win32 alkalmazások architektúrája és eseményvezérelt programozás Win32 környezetben Flashcards

1
Q

OS felépítése, natív alkalmazások

A

Win32 alkalmazás
Operációs rendszer:
Win32 API (Ablakkezelés. IO, Rajz…Memóriakezelés)
Implementáció (Ablakkezelés. IO, Rajz…Memóriakezelés)
Driverek (VGA, Hangkártya, HDD driver)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Mi az API?

A

API alatt a Windows alatt használt és DLL-ekben definiált függvények összeségét értjük. Ezek nyelvfüggetlen elemek.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Változótípusok Win32 esetén

A

Mijnden nyelvnek vannak saját változótípusai. Ezeken a hagyományos típusokon kivül vannak olyan típusok melyek Windows specifikusak. Ezek a típusok mindig egy adott nyelv esetében mindig az adott nyelv típusára képződnek le.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

API függvények WINAPI típusa?

A

Az API függvények WINAPI típusúak (régebben FAR PASCAL). Ezek a függvények hivási konvencióját határozzák meg. A függvény paraméterei deklarálási sorrend alapján jobbról balra kerülnek a stack-be és a stack kiürítése a hívott függvény feladata.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

API függvények WINAPI típusa?

A

Az API függvények WINAPI típusúak (régebben FAR PASCAL). Ezek a függvények hivási konvencióját határozzák meg. A függvény paraméterei deklarálási sorrend alapján jobbról balra kerülnek a stack-be és a stack kiürítése a hívott függvény feladata.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Mit nevezünk CALLBACK függvénynek?

A

Olyan kitüntetett szerepű függvényeket, amelyeket mi írunk meg, de az OS hívja őket. (WIN32 esetén Windows) A CALLBACK típusú függvények hívása is a Pascal ívási konvenció szerint történik.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Mik a leírók?

A

Amikor a Windows-ban létrehozunk valamilyen objektumot, akkor általában azt egy leíró (handle) fogja azonosítani. Pl. amikor létrehozunk egy ablakot, akkor az ablakot létrhozó függvény az új ablaknak a leírójával tér vissza. Ez a leíró azonosítja az újonnan létrehozott ablakot.

32 bites érték típusa HANDLE vagy valamilyen más H betűvel kezdődő típus.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Hogyan működnek az eseményvezérelt programok?

A

A hagyományos programozás során mindig a program hívja az operációs rendszert, A Windows programok működése a “hagyományos” programokétól alapvetően eltér. A Windows alatt futó programok esetében ennek a fordítottja történik.A program várakozik és az OS hívja a programunkat.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Hogyan működnek az eseményvezérelt programok?

A

A hagyományos programozás során mindig a program hívja az operációs rendszert, A Windows programok működése a “hagyományos” programokétól alapvetően eltér. A Windows alatt futó programok esetében ennek a fordítottja történik.A program várakozik és az OS hívja a programunkat.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Eseményvezérelt programozás üzenetei hogyan épülnek fel?

A
typdef struct tagMSG {
                 HWND hwnd;
                 UINT message;
                 WPARAM wParam;
                 LPARAM lParam;
                 DWORD time;
                 POINT pt;
}MSG;

(címzett ablak leírója, az üzenet tárgya/tartalma, az üzenet paraméterei, az üzenet keltének időpontja, az üzenet keltésekor érvényes kurzor pozíció)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Az üzenet címzettje?

A

HWND hwnd
Minden üzenetnek van egy címzett vagy cél ablaka. Egy applikáció alatt azt az applikációt értjük, amely éppen elfogadja a felhasználói eseményket. Egy applikáción belül aktív ablakról is beszélhetünk. A periféria üzenetek címzettje az az ablak, amelyik az esemény bekövetkezésekor aktív volt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Mi az üzenet típusa?

A

Egy adott üzenet típust egy egyedi szám azonosít. A könnyebb kezelhetőség érdekében az egyes üzenet típusok a windows.h-ban konstansként vannak definiálva. pl. WM_KEYDOWN.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Ablakkezelő függvény (Windows Procedure)

A

A Windows-ban szinte minden olyan vizuális elem ablak (windows), amelyik valamilyen interakcióra képes a felhasználóval. Minden ablakhoz tartozik egy ablakkezelő függvény (CALLBACK típusú), amely gondoskodik az ablakhoz érkező események kezeléséről. Az OS értesíti a programunkat: meghívja a célablak ablakkezelő függvényét és paraméterként átadja neki az üzenetet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Milyen módjai vannak az üzenet célablakhoz történő továbbításának?

A

Queued: Az üzenet bekerül az üzenetsorba és onnan továbbítódik az ablakkezelő függvénynek. -> post message
Not-queued: Az üzenetsor kikerülésével közvetlenül az ablakkezelő függvény kapja meg az üzenetet. -> send a messag

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Qeued üzenetek működése

A

Minden thread rendelkezik üzenetsorral. Ebbe a sorba kerülnek a szálhoz érkező üzenetek és onnan továbbítódnak a megflelő ablakkezelő függvényhez, Ezeknek az üzeneteknek a feldolgozása asszinkron módon történik. Küldjük, nem várunk visszajelzést. Minden szál maga dolgozza fel az üzenetei és továbbítja azokat a megfelelő ablak ablakkezelő függvényének. Az üzenet feldolgozása FIFO módon történik.
Az üzenet bekerül egy System queue-ba, majd az applikáció szálához tartozó message queu-ba.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Qeued üzenetek működése

A

Minden thread rendelkezik üzenetsorral. Ebbe a sorba kerülnek a szálhoz érkező üzenetek és onnan továbbítódnak a megflelő ablakkezelő függvényhez, Ezeknek az üzeneteknek a feldolgozása asszinkron módon történik. Küldjük, nem várunk visszajelzést. Minden szál maga dolgozza fel az üzenetei és továbbítja azokat a megfelelő ablak ablakkezelő függvényének. Az üzenet feldolgozása FIFO módon történik.
Az üzenet bekerül egy System queue-ba, majd az applikáció szálához tartozó message queu-ba.

17
Q

Not-queued üzent feldolgozás?

A

Nem minden üzenet kerül be a sorba. Lehetőség van arra, hogy szinkron módon is küldjünk üzenetet egy ablaknak. Ebben az esetben az üzenet nem kerül be a szál üzenetsorába, hanem közvetlenül az ablak ablakkezelő függvénye hívódik meg. A küldő pedig addig vár, amíg a függvény nem tér vissza.

18
Q

Mi az üzenetkezelő ciklus? (Message Loop)?

A

Az applikáció (szál) maga gondoskodik az üzenet kiszedéséről és feldolgozásáról: ezt végzi az üzenetkezelő ciklus. (message loop).

19
Q

Hogyan küldhetünk üzenetet az ablakoknak?

A

PostMessage - beteszi az üzenetet a célablakoz kezelő szál üzenet sorába és azonnal visszatér
SendMessage - közvetlenül a célablak ablakkezelő függvényét hívja meg és addig nem tér vissza, amíg a célablak az üzenetet fel nem dolgozta.

20
Q

Windows applikáció belépési pontja?

A

WinMain