Tudd Intuíció, előadás, MFC osztálykönyvtárat

A kezelőszervek és a dialógusok

Párbeszéd. Kapcsolat az ellenőrzések

Dialog (párbeszédablak) egy speciális fajtája, az ablakok, amelyek célja, hogy befolyásolja a felhasználó. Jellemzően ezek megváltoztatásához használjuk az alkalmazás beállításait, és adja meg adatait. Például szinte az összes ablakot Microsoft Word beállításai párbeszéd. Kétféle párbeszédek: modális és nem modális. A leggyakoribb az első. Abban az esetben, modális párbeszédablakok fokozott párbeszéd az alkalmazás főablakát passzívvá válik, és nem reagál a felhasználói műveleteket, amíg ő nem zárja be az ablakot. Abban az esetben, modeless dialógusok, dialógus függetlenül létezik a többi ablak, valamint a fő ablakban lehet aktiválni.







Kölcsönhatás a párbeszéd és a felhasználó

Kölcsönhatás a párbeszéd és a felhasználó keresztül végezzük a vezérlőelemek. Ez egy különleges típusú bemeneti vagy kimeneti ablakokat. Az ellenőrzés tartoznak az ablak tartó, ebben az esetben - a párbeszéd. Minden Windows-verziók támogatják egy sor szabványos ellenőrzéseket, amelyek magukban foglalják a gombok, vezérlő kapcsolók, gombok választó, listák, beviteli mezők, kombinált dobozok, görgetősáv, és statikus elemek.

Nézzük röviden áttekintjük a rájuk:

  • Rendes gomb (nyomógomb) - ez a gomb, hogy a felhasználó „kattintások” az egérrel, vagy az Enter gombot, mozog a pre-őt hangsúly.
  • Vezérlő kapcsoló (a négyzetet, a négyzetet) lehet kijelölésekor vagy sem. Ha az ablak több vezérlő kapcsolók, amely lehet egyidejűleg néhány közülük.
  • Intercom gomb (rádió gomb) - ez majdnem ugyanaz, mint a kontroll kapcsoló. A különbség az, hogy ha több van, csak az egyik lehet kiválasztani a gombok a csoportban.
  • List (listából) tartalmaz egy sor olyan sorok, amelyek egy vagy több választható. Széles körben használják megjelenítésekor fájl nevét.
  • Beviteli mező (edit box) - az az elem, amely lehetővé teszi, hogy adjon meg egy karakterláncot.
  • Combo (combo box) van egy lista a beviteli sor.
  • Statikus elem (statikus vezérlő) megjelenítésére szöveges vagy grafikus, de nem adja meg.

Controls egyaránt üzeneteket generál válaszul a felhasználói műveletekre, és fogadni őket a kérelmet. Az utóbbi esetben, az üzenetek, sőt, a csapat, amely a vezérlő meg kell felelnie.

MFC osztály ellenőrzések

Az MFC rendelkezik osztály minden szabványos ellenőrzéseket. Ezek az osztályok írják maguk az elemek, valamint olyan funkciókat tartalmazhatnak velük dolgozni. Ezek az úgynevezett kezelési osztályok. Ezek generált osztály CWnd. Így mindannyian jellemzőit az ablakon. Itt van az alapvető kezelési osztályokat:

Az MFC lehetővé tette a közvetlen fellebbezést az ellenőrzést, de a gyakorlatban ez nagyon ritkán fordul elő. További kényelmes a használata a megfelelő osztályokat. A leggyakrabban használt kezelőszervek párbeszédpanelekkel, de lehet létrehozni és egyes elemeinek a fő ablakban.

Párbeszédek mint erőforrás

Az MFC minden párbeszédnek olyan esetek egy osztály CDialog. vagy osztályok keletkezett belőle. Csak a legegyszerűbb dialógusok közvetlenül felhasználjuk CDialog osztályban. Az általános esetben, meg kell határozni a saját osztálya. CDialog osztály egy konstruktor a következő prototípus:







ResourceName paraméter határozza meg a személyi igazolvány vagy RESOURCEID párbeszéd erőforrás vagy numerikus karakterlánc. Paraméter tulajdonos - egy mutatót az ablak-tulajdonos, ha értéke 0, akkor a tulajdonos lesz az alkalmazás főablakát. Az utóbbi forma a kivitelező, hogy hozzon létre egy nem-modális dialógusok.

Üzenetek feldolgozása a párbeszédek

Minden párbeszédek különféle ablakok, így ugyanazt a üzenetkezelési alrendszer, valamint a fő ablakban. Minden párbeszédet kialakítani a saját üzenetsorába, ugyanúgy, mint a fő ablakban. Amikor a párbeszéd szabályozás aktív, párbeszéd üzenetet küldött WM_COMMAND. Ezzel üzenetet küld az azonosító az ellenőrzés. Kezelni az üzeneteket a kártyát helyezze a párbeszéd ON_COMMAND () makró. Sok ellenőrzések is generál egy azonosító kódot, amely lehetővé teszi, hogy meghatározza, milyen lépéseket végeztük a kontroll. Sok esetben ez a kód egy vagy más kezelő.

Hívjon modális dialógus

Órák után párbeszédablak objektum jön létre, hívja a tagfüggvény DoModal (). Az eredmény a hívás lesz megjelenítő modális dialógus. A prototípus a következő funkciókat tartalmazza:

virtuális int CDialog :: DoModal ();

A függvény egy befejezése generált kód zárásakor a párbeszéd, vagy -1, ha az ablak nem jelenik meg. Ha az elrendezés a párbeszéd hiba, visszatér IDABORT. A függvény nem tér vissza, amíg a párbeszéd nem lesz lezárva.

Záró modális dialógus

Alapértelmezésben a párbeszédablak bezárul, ha kap egy üzenetet az azonosító vagy IDOK. vagy IDCANCEL. Ezek az előre definiált és általában társított és a gombbal erősítse meg a törlést. Osztály CDialog tartalmaz beágyazott processzorok számára a két esetben, Önök () és OnCancel (). Nem kell, hogy tartalmazza az üzenet sorban párbeszéd. Ezek azonban felülbírálhatja, amely lehetővé teszi a programozó, hogy ellenőrizzék a záró a párbeszéd. Programozottan párbeszédablak bezárásához meg kell hívni a tag függvény a prototípus:

érvényteleníti CDialog :: EndDialog (int RetCode);

Ez a paraméter határozza meg az értékét, hogy a függvény a DoModal (). IDOK értékét vagy IDCANCEL általában visszatér. más értékek ritkán használják.

Gyakran előfordul, hogy a gyakorlatban az a helyzet áll elő, ahol különböző változók és az ellenőrzések kapcsolatos párbeszéd előtt inicializálni kell a párbeszédablak jelenik meg. Ahhoz, hogy a párbeszéd ilyen cselekmények, a Windows automatikusan elküldi az üzenetet WM_INITDIALOG neki idején teremtés. Ha ezt az üzenetet kapja MFC automatikusan meghívja az OnInitDialog () metódust. amely egy standard processzor meghatározott CDialog osztályban. Ez a funkció háttérbe szorulna, ha szükség alaphelyzetbe áll. Függvény prototípus:

virtuális BOOL CDialog :: OnInitDialog ();

A funkció az úgynevezett előtt párbeszédablak jelenik meg. Meg kell vissza igaz. így a Windows átviheti a bemeneti fókusz (azaz. e. hogy aktív) az első elem a kontroll ablakban. Az első fellépés a túlhatározott függvényhívás CDialog :: OnInitDialog () függvényt.

Nem modális párbeszédablakok üzeneteket fogadni párhuzamosan az alkalmazás főablakát. Azaz, legalább két ablak egyidejűleg aktív. Ezért dolgozó nem-modális párbeszédablakok több erőfeszítést igényel - további műveleteket végezni. Ahhoz, hogy hozzon létre egy nem modális dialógus, akkor létre kell hozni egy „üres” párbeszéd ablakot, hogy nem jár a minta források. Kötődés a forrásokat a létrehozása funkció (...). Vizsgáljuk meg ezt a folyamatot részletesebben. Ahhoz, hogy hozzon létre egy objektumot nem-modális dialógus, CDialog :: CDialog () konstruktor kell használni paraméterek nélkül. Kijelentette védett osztályú tagja. Ez azt jelenti, hogy csak akkor hívják belül tagja függvény által generált osztály. Ez úgy történik, hogy a programozó feltétlenül határozza meg generált osztály egy nem modális dialógus, és határozzuk meg a további műveletek nem-modális dialógus. Amikor egy példány létrehozásakor ez kapcsolódik a források a funkciók:

Használata párbeszéd, mint a fő ablakban

Használata párbeszéd, mint a fő ablak gyakran nagyon kényelmes. Végre ebben az esetben igen egyszerű. Először létre kell hoznia egy párbeszédablak erőforrás. Másodszor, létrehoz egy osztályt CDialog főablak alkalmazásokat. Mielőtt a fő ablak osztály konstruktora, akkor hívja a kivitelező CDialog osztályban. és célja összekapcsolni források, mint például:

Harmadszor függvényében CAPP :: InitInstance () jelen kell lennie az alábbi kódot:




Kapcsolódó cikkek