Megosztás:


Dinamikus elrendezés

A Visual Studio 2015 MFC-jével létrehozhat olyan párbeszédpaneleket, amelyeket a felhasználó átméretezhet, és szabályozhatja, hogy az elrendezés hogyan igazodjon a méretváltozáshoz. Például a párbeszédpanel alján lévő gombokat az alsó szélhez csatolhatja, így azok mindig alul maradnak. Bizonyos vezérlőket, például a listamezőket, a szerkesztőmezőket és a szövegmezőket beállíthatja, hogy a párbeszédpanel kibővítésével ezek is bővüljenek.

MFC-párbeszédpanel dinamikus elrendezési beállításainak megadása

Amikor a felhasználó átméretez egy párbeszédpanelt, a párbeszédpanel vezérlői átméretezhetik vagy áthelyezhetik az X és az Y irányban. A vezérlők méretének vagy helyzetének módosítása, amikor a felhasználó átméretez egy párbeszédpanelt, dinamikus elrendezésnek nevezzük. Az átméretezés előtt például a következő párbeszédpanel látható:

A párbeszédpanel az átméretezés előtt.

Az átméretezés után a listamező területe megnő, hogy több elemet jelenítsen meg, és a gombok a jobb alsó sarokba kerülnek:

Párbeszédpanel az átméretezés után.

A dinamikus elrendezés vezérléséhez adja meg az IDE erőforrás-szerkesztőjében található egyes vezérlők részleteit, vagy programozott módon is megteheti, ha egy adott vezérlőelem objektumához fér hozzá CMFCDynamicLayout , és beállítja a tulajdonságokat.

Dinamikus elrendezés tulajdonságainak beállítása az erőforrás-szerkesztőben

A párbeszédpanelek dinamikus elrendezési viselkedését kód írása nélkül is beállíthatja az erőforrás-szerkesztő használatával.

Dinamikus elrendezési tulajdonságok beállítása az erőforrás-szerkesztőben

  1. Ha meg van nyitva egy MFC-projekt, nyissa meg a párbeszédpanel-szerkesztőben a használni kívánt párbeszédpanelt.

    Nyissa meg a párbeszédpanelt az erőforrás-szerkesztőben.

  2. Jelöljön ki egy vezérlőt, és a Tulajdonságok ablakban ( Osztály nézetben) állítsa be a dinamikus elrendezés tulajdonságait. A Tulajdonságok ablak Dinamikus elrendezés szakasza tartalmazza a tulajdonságok áthelyezési típusát, méretezési típusát, és a tulajdonságokhoz kiválasztott értékektől függően azokat a tulajdonságokat, amelyek meghatározzák, hogy a vezérlők mekkora mértékben mozognak vagy módosítják a méretet. Az áthelyezés típusa határozza meg, hogy a vezérlőelemek hogyan kerülnek áthelyezésre a párbeszédpanel méretének módosításakor; A méretezési típus határozza meg, hogy a vezérlőelemek átméretezése miként történik a párbeszédpanel méretének módosításakor. Az elmozdulási típus és méretezési típus lehet vízszintes, függőleges, mindkettő vagy egyik sem, a dinamikusan módosítani kívánt dimenzióktól függően. A vízszintes az X dimenzió; A függőleges az Y irány.

  3. Ha azt szeretné, hogy egy vezérlő( például egy gomb) rögzített méretű legyen, és a jobb alsó sarokban maradjon, ahogyan az OK vagy a Mégse gomb esetében is gyakori, állítsa a méretezési típustNincs értékre, és állítsa a Mozgó típustmindkettőre. Az X áthelyezése és az Y áthelyezése értékeknél a Mozgási típus alatt állítsa be a 100% értéket, hogy a vezérlő rögzített távolságban maradjon a jobb alsó saroktól.

    Dinamikus elrendezés.

  4. Tegyük fel, hogy van egy vezérlőeleme is, amelyet ki szeretne bontani, ahogy a párbeszédpanel kibővül. A felhasználók általában kibonthatnak egy párbeszédpanelt egy többsoros szerkesztési mező kibontásához a szövegterület méretének növelése érdekében, vagy kibonthatnak egy listavezérlőt, hogy több adatot láthassanak. Ebben az esetben állítsa a méretezési típust mindkettőre, és állítsa a mozgó típust egyikre sem. Ezután állítsa az X és az Y méretezési értékét 100-ra.

    Dinamikus elrendezés beállításai.

  5. Kísérletezzen más értékekkel, amelyek értelmesek lehetnek a vezérlők számára. Egy egysoros szövegdobozt tartalmazó párbeszédpanelen például a Méretezési típus csak vízszintes értékre van állítva.

Dinamikus elrendezés tulajdonságainak programozott beállítása

Az előző eljárás hasznos lehet a párbeszédpanelek dinamikus elrendezési tulajdonságainak tervezéskor történő megadásához, de ha futásidőben szeretné szabályozni a dinamikus elrendezést, programozott módon is beállíthatja a dinamikus elrendezés tulajdonságait.

Dinamikus elrendezési tulajdonságok programozott beállítása

  1. Keresse meg vagy hozzon létre egy helyet a párbeszédpanel-osztály implementációs kódjában, ahol meg szeretné adni a párbeszédpanel dinamikus elrendezését. Előfordulhat például, hogy fel szeretne venni egy metódust, mint AdjustLayout a párbeszédpanelen, és azt olyan helyeken hívja meg, ahol módosítani kell az elrendezést. Ezt először a konstruktortól vagy a párbeszédpanel módosítása után hívhatja meg.

  2. A párbeszédpanelen hívja meg a GetDynamicLayoutot, az CWnd osztály egyik metódusát. GetDynamicLayout egy objektumra mutató CMFCDynamicLayout mutatót ad vissza.

    CMFCDynamicLayout* dynamicLayout = pDialog->GetDynamicLayout();
    
  3. Az első vezérlő esetében, amelyhez dinamikus viselkedést szeretne hozzáadni, a dinamikus elrendezési osztály statikus metódusaival hozza létre a vezérlőelem beállítását kódoló MoveSettings-struktúrát . Ehhez először válassza ki a megfelelő statikus metódust: CMFCDynamicLayout::MoveHorizontal, CMFCDynamicLayout::MoveVertical, CMFCDynamicLayout::MoveNone vagy CMFCDynamicLayout::MoveHorizontalAndVertical. Az áthelyezés vízszintes és/vagy függőleges aspektusainak százalékos értékét adja meg. Ezek a statikus metódusok mindegyike egy újonnan létrehozott MoveSettings-objektumot ad vissza, amellyel megadhatja egy vezérlő áthelyezési viselkedését.

    Ne feledje, hogy a 100 azt jelenti, hogy az elmozdulás pontosan annyi, mint a párbeszédpanel méretének változása, ami miatt a vezérlő széle rögzített távolságban marad az új szegélytől.

    MoveSettings moveSettings = CMFCDynamicLayout::MoveHorizontal(100);
    
  4. Ugyanezt kell tennie a SizeSettings típust használó méretezési viselkedéshez is. Ha például meg szeretné adni, hogy a vezérlőelemek mérete ne változzon a párbeszédpanel átméretezésekor, használja a következő kódot:

    SizeSettings sizeSettings = CMFCDynamicLayout::SizeNone();
    
  5. Adja hozzá a vezérlőt a dinamikus elrendezéskezelőhöz a CMFCDynamicLayout::AddItem metódussal. A kívánt vezérlő megadásának különböző módjai két túlterhelést jelentenek. Az egyik a vezérlő ablakfogantyúját (HWND), a másik pedig a vezérlőazonosítót használja.

    dynamicLayout->AddItem(hWndControl,
    moveSettings,
    sizeSettings);
    
  6. Ismételje meg az egyes áthelyezni vagy átméretezni kívánt vezérlőket.

  7. Ha szükséges, a CMFCDynamicLayout::HasItem metódussal megállapíthatja, hogy egy vezérlő már szerepel-e a dinamikus elrendezésváltozások által érintett vezérlők listáján, vagy a CMFCDynamicLayout::IsEmpty metódussal megállapíthatja, hogy vannak-e olyan vezérlők, amelyek módosulnak.

  8. A párbeszédpanel elrendezésének engedélyezéséhez hívja meg a CWnd::EnableDynamicLayout metódust .

    pDialog->EnableDynamicLayout(TRUE);
    
  9. A következő alkalommal, amikor a felhasználó átméretezi a párbeszédpanelt, a CMFCDynamicLayout::Adjust metódus lesz meghívva, amely ténylegesen alkalmazza a beállításokat.

  10. Ha le szeretné tiltani a dinamikus elrendezést, hívja fel a CWnd::EnableDynamicLayout with FALSE parancsot a bEnabled paraméterhez hasonlóan.

    pDialog->EnableDynamicLayout(FALSE);
    

A dinamikus elrendezés beállítása programozott módon egy erőforrásfájlból

  1. A CMFCDynamicLayout::MoveHorizontalAndVertical metódussal adjon meg egy erőforrásnevet a vonatkozó erőforrásszkriptfájlban (.rc fájl), amely dinamikus elrendezési információkat ad meg, ahogyan az alábbi példában is látható:

    dynamicLayout->LoadResource("IDD_DIALOG1");
    

    Az elnevezett erőforrásnak olyan párbeszédpanelre kell hivatkoznia, amely elrendezési információkat tartalmaz egy AFX_DIALOG_LAYOUT bejegyzés formájában az erőforrásfájlban, az alábbi példához hasonlóan:

    /////////////////////////////////////////////////////////////////////////////
    //
    // AFX_DIALOG_LAYOUT
    //
    
    IDD_MFCAPPLICATION1_DIALOG AFX_DIALOG_LAYOUT
    BEGIN
    0x0000,
    0x6400,
    0x0028,
    0x643c,
    0x0028
    END
    
    IDD_DIALOG1 AFX_DIALOG_LAYOUT
    BEGIN
    0x0000,
    0x6464,
    0x0000,
    0x6464,
    0x0000,
    0x0000,
    0x6464,
    0x0000,
    0x0000
    
    END
    

Lásd még

CMFCDynamicLayout osztály
Vezérlőosztályok
Párbeszédpanel-osztályok
Párbeszédpanel-szerkesztő
MFC dinamikus párbeszédpanel-elrendezése a Visual C++ 2015-ben