Basics MFC
MFC osztályhierarchia
MFC könyvtár tartalmaz egy nagy hierarchiáját osztályok C ++ nyelven íródott. hierarchiastruktúra ábrán látható. 1. A felső SObject osztályt, amelybe különböző funkciók során a programot, és célja különösen, hogy információt nyújtson az ilyen típusú futásidejű diagnosztizálni, és sorosításához.
Információk a futási
diagnosztika
Minden osztály származó CObject, amennyiben kérik, hogy ellenőrizze a belső állapotát és ad diagnosztikai információkat. Ezt alkalmazzák széles körben MFC amikor hibakeresés.
sorszámozás
Szerializálás - olyan mechanizmust átalakítani a jelenlegi állapotában az objektumot a soros byte stream, ami általában akkor kerülnek a lemez és az állapotokat az objektumot a soros adatfolyam, általában akkor, ha olvasni a lemezt. Ez lehetővé teszi, hogy mentse az aktuális állapotát a kérelmet a lemezen, és helyreállítani a következő indításkor.
fő osztály
Egyes osztályok jönnek létre közvetlenül a CObject. A legszélesebb körben használt ezek közül CCmdTarget, CFile, CDC, CGDIObject és CMenu. SSmdTarget osztály célja, hogy kezelje az üzeneteket. SFájl osztály célja, hogy működjön együtt a fájlokat. CDC osztály támogatást nyújt a készülék összefüggésben. fogunk beszélni egy kicsit később a készülék összefüggésben. Ebbe az osztályba tartozik szinte az összes GDI grafikus funkciókat. CGDIObject az alap osztály bármely DGI-objektumok, például tollak, ecsetek, és más betűtípusokat. SMenu osztály célja, hogy manipulálják a menüt. Tól CCmdTarget osztály által generált fontos csoportját CWnd. Ő az alapja a teremtés minden típusú ablakok, beleértve a méretezhető ( „normál”) és a párbeszéd, és a különböző ellenőrzéseket. A legszélesebb körben alkalmazott csoportja a származékok CFrameWnd. Amint látni fogja a jövőben, a legtöbb alkalmazás főablakát jön létre a segítségével az adott osztályban.
Osztályból CCmdTarget keresztül CWinThread osztály jön létre, talán az egyetlen legfontosabb osztályok érhetők az MFC folyamatban programokat közvetlenül: CWinApp. Ez az egyik alapvető osztályok, a létrehozásához használt alkalmazás. Minden program, van egy és csak egy célja ebben az osztályban. Amint elkészült, az alkalmazás kerül végrehajtásra.
Tag funkciók MFC
A legtöbb funkciót hívják MFC-program tagjai az egyik osztályba sorolható a könyvtárban. A legtöbb API funkciók érhetők el a MFC tag funkciókat. Azonban bármikor elérheti a függvény közvetlen API. Néha szükséges, de a legtöbb esetben ez sokkal kényelmesebb használni MFC tag funkciókat.
Globális funkciók MFC
A könyvtár számos globális funkciók. Mindannyian előtaggal kezdődnek AFX. (Ha az MFC csak fejlett, a projekt hívták AFX, Application Framework. Miután egy sor jelentős változásokat AFX áttervezték az MFC, de a régi név megmarad sok azonosítók a könyvtár és a fájl nevét.) Például nagyon gyakran AfxMessageBox () függvény, amely megjeleníti előre bizonyos ablak üzenetet. De van még egy tagja a funkció MessageBox (). Így része a globális függvény átfedés tag funkciókat.
AFXWIN.H fájl
Minden program tartalmazza az MFC-AFXWIN.H header fájlt. Ebben, valamint a különböző támogatási fájlok leírását tartalmazzák osztályok, struktúrák, változók és egyéb tárgyai MFC. Automatikusan csatlakozik a legtöbb fejlécfájllal kapcsolatos MFC, beleértve az WINDOWS.H, amely azonosítja az összes Windows API funkciók, és egyéb tárgyak, amelyek használják a hagyományos programozás C és a „tiszta” API-t.
MFC-keretprogram
Most hozzunk létre egy kis alkalmazás segítségével MFC. Ez csak akkor jelenik meg a standard Windows párbeszédablakot, és semmi mást nem. Ha bezárja az alkalmazást megszűnik. Ez az alkalmazás alapjául szolgál minden más alkalmazások fogjuk vizsgálni.
A legegyszerűbb esetben írt program segítségével MFC, két osztály generált osztály könyvtár hierarchia: class, amelynek célja, hogy hozzon létre egy alkalmazást, és egy osztály létrehozására ablakok. Más szóval, hogy hozzon létre egy minimális programot előállításához szükséges egyik CWinApp osztály, és a többi - az CFrameWnd. Ez a két osztály kötelező minden program.
Amellett, hogy létre a fent említett osztályok a program és az összes üzenet feldolgozása úgy kell megszervezni, jön, mint a Windows. Ebben a példában a program semmi hasznos nem, ezért reagálnak minden egyes üzenet nem szükséges. MFC feldolgozza az összes üzeneteket, amelyek nem érdekelnek minket. Mindazonáltal ebben a példában van egy térkép a válaszok üzeneteket, vagy csak egy üzenetet térképen. Később megbeszéljük részletesen.
Az alábbiakban a forráskód a program. Mi mindig a nyilatkozatot osztályok és azok végrehajtását az egyes fájlokat. Ez összhangban van az elfogadott gyakorlattal programozás C ++.
Kezdeti mintaszöveg
Ábra. 2. Az ablak lehet létrehozni egy egyszerű alkalmazás MFC
A program eredményeként ábrán látható. 2. Tekintsük a programot részletesebben.
Ahhoz, hogy hozzon létre egy szabványos ablakot a kérelemben meg kell levezetni a osztályt CFrameWnd. Ebben a példában az úgynevezett CMainWin. Ez tartalmaz egy kivitelező és DECLARE_MESSAGE_MAP () makrót. Macro valójában bontakozik ki a nyilatkozatot üzenet kártya, amely meghatározza, hogy melyik osztályba tag függvény kell hívni, hogy válaszoljon a Windows üzenetet. Ez a makro használható minden ablakot, amelyben az üzenetek kerülnek feldolgozásra. Ő legyen az utolsó az osztályban nyilatkozatot.
Az ablak létrehozásakor, a kivitelező a Create () függvény hívásával. Ez a funkció használható szinte minden alkalmazáshoz. Végez műveleteket, hogy hozzon létre az ablakot. Ez a példa azt mutatja, a legegyszerűbb esetben a használatát. Bár meg kell tudnunk, hogy a második paraméter az ablak címét, és az első általában NULL.
osztály CAPP
alkalmazások generált CWinApp. Ez az osztály felelős a program. A példa a tag függvényt a következő prototípus: Ez egy virtuális függvény, hogy az úgynevezett minden alkalommal, amikor elindítja a programot. Meg kell minden kapcsolódó tevékenységek indítása az alkalmazás. A függvény vissza kell TRUE siker és FALSE egyébként. Ebben az esetben a függvény az első objektum jön létre CMainWin osztály, és egy mutatót, ez változóban tároljuk m_pMainWnd. Ez a változó egy osztály tagja CWinThread. Ez a típus CWnd * és használják szinte minden MFC-programok, mert tartalmaz egy mutatót a fő ablakban. A következő két sor rajta úgynevezett tagsági függvények ablakot. Amikor egy ablak jön létre, a függvény prototípusa c: Ez a paraméter határozza meg, hogy az ablak jelenik meg a képernyőn. A leggyakoribb értékek a következők:
Az ablak lehet csökkenteni normál méretű
Amikor az első hívást függvényében az első paraméter póttagja m_nCmdShow, ahol a tárolt érték a kirakati kód átvitele a program indításakor (például egy címke Windows 95 felhasználó meg tudja határozni, hogy hogyan jelenítse az ablakon, amikor az alkalmazás fut).
UpdateWindow () függvény küld ablakban üzenetet, hogy a tartalmát kell majd rajzolni. A jövőben, akkor nézd meg ezt a folyamatot részletesebben.
Végén a program végrehajtása kerül hozzászólások kártyák:
Az első makró mindig két lehetőség, az első - osztályú az ablakon, a második - osztály, amely generálja az osztály ablakot. Ebben a példában egy üres kártya üzenet, azaz az összes üzeneteit MFC.
A példában a függvény létrehozása () használunk, amely tulajdonképpen egy csomó paramétert. A prototípusa a következő:
Az első paraméter, ClassName meghatározza az ablak osztály nevét a Windows ablakozási alrendszer. Általában nem szükséges kifejezetten meghatározza, amennyire MFC teszi az összes szükséges röfögés munkáját. Ezekben módszertani útmutatók, nem fogjuk használni a window osztályok. Stílus beállítás megadja az ablak stílusát. Alapértelmezésben egy szabványos overlay ablakot. Beállíthatjuk, hogy a stílus, amely egyesíti egy művelet „vagy” néhány állandók a következő:
függőleges görgetősáv
A jövőben nem fogunk részletesen itt festeni az összes lehetséges értékei állandók, mert akkor mindig olvassa el a Visual C ++ segítséget és részletes információt kap.
A kezdeti pozíció és az ablak mérete által meghatározott paraméter XYSize. Ez a szerkezet, amely meghatározza a képernyő koordináták a bal felső és a jobb alsó sarokban a négyszög, ahol az ablak jelenik meg.
Az összes többi beállítás, hogy fel fogjuk használni fogják megvitatni az érintett szakaszok.