Způsob použití třídy CFormView v rozhraní jednoho dokumentu (SDI) a více aplikací rozhraní (MDI) dokumentu

Poznámka: Microsoft Visual C++ .NET (2002) podporuje model spravovaný kód, který poskytuje společnost Microsoft rozhraní.NET Framework a nespravovaná nativní kód modelu Microsoft Windows. Informace v tomto článku platí pouze pro nespravovaný kód jazyka C++.

Poznámka: Microsoft Visual C++ 2005 podporuje model spravovaný kód, který poskytuje společnost Microsoft rozhraní.NET Framework a nespravovaná nativní kód modelu Microsoft Windows.

Souhrn

Třída CFormView poskytuje pohodlný způsob, jak umístit ovládací prvky do zobrazení, který je založen na šabloně pole dialogové okno. Obecný postup pro použití CFormView je popsán v dokumentaci ke třídě a je znázorněn v ukázkové VIEWEX a CHKBOOK aplikace poskytnuté s Microsoft Foundation Classes (MFC) verze 2.x a vyšší. Však tyto aplikace není ukazují provádění počáteční velikost okna rámeček být stejné jako počáteční velikost formuláře.

V následující části je uveden postup nutný k podpoře vytváření rozhraní jednoho dokumentu (SDI) nebo více dokumentů rozhraní (MDI) založené na CFormView pro změnu velikosti okna počáteční rámec kolem formuláře, změna stylu rámce a zavření dokumentu MDI pomocí tlačítka ve formuláři.

Další informace

Následující kroky popisují, jak vytvořit aplikaci MFC AppWizard pomocí CFormView jako výchozí zobrazení:
  1. Použijte AppWizard ke generování aplikace SDI nebo MDI. Toto dialogové okno šablony pole vloží správné styly nastavené pro soubor prostředků projektu.

    Visual Studio 6.0:

    V kroku 6 AppWizard vyberte zobrazení třídy. V poli se seznamem základní třídy vyberte CFormView určit CFormView jako základní třídu.

    Visual Studio .NET nebo Visual Studio 2005:

    V kroku 1 AppWizard vyberte Vygenerované třídy. V poli se seznamem základní třídy vyberte CFormView určit CFormView jako základní třídu.
  2. Přepsat členské funkce OnUpdate() a volání UpdateData(), jak je uvedeno v dokumentaci CFormView aktualizace členské proměnné s aktuálními daty dokumentu a provádějí výměnu dat dialogu (DDX).

    POZNÁMKA: UpdateData není virtuální a volání základní třídy zajišťuje, že odvozené třídy se nazývá DoDataExchange prostřednictvím standardní polymorfismus. Se státy CFormView dokumentaci k volání, není přepsat UpdateData.
  3. Pokud chcete nastavit počáteční velikost zobrazení formuláře přepište funkci OnInitialUpdate(). Následující text poskytuje další informace o tomto kroku se mírně liší v aplikaci SDI nebo MDI.

Změna velikosti rámečku hlavního SDI okolo CFormView

Změna velikosti hlavního rámce aplikace SDI (který používá svou třídu zobrazení CFormView) na odpovídající velikost pro formulář vytvořený v aplikaci App Studio, přepište funkci OnInitialUpdate() ve vaší třídě odvozené z CFormView, takto:
      void CMyFormView::OnInitialUpdate()      {
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit(); // default argument is TRUE
}

Funkci ResizeParentToFit() nelze zabránit formulář Změna velikosti, když uživatel změní velikost hlavního rámce aplikace (scroll panely jsou přidány automaticky, v případě potřeby). Chcete-li změnit styl okno rámce, který je rodičem ve formulářovém zobrazení, můžete přepsat funkci PreCreateWindow() ve třídě CMainFrame generovaných AppWizard. Chcete-li odebrat styl WS_THICKFRAME a uživateli zabránit ve změně velikosti okna, deklarujte PreCreateWindow() v MAINFRM. H a přidejte následující kód do MAINFRM. CPP:
      BOOL CMainFrame::PreCreateWindow(CREATESTRUCT &cs)      {
cs.style &= ~WS_THICKFRAME;
return CFrameWnd::PreCreateWindow(cs);
}

Změna velikosti MDI podřízené rámeček CFormView

Proces změny velikosti rámečku podřízené MDI podobná změna velikosti hlavního rámce aplikace SDI, jak je vysvětleno výše. Volání RecalcLayout() však není povinné.

Chcete-li změnit velikost MDI podřízené rámeček ve formulářovém zobrazení, přepište funkci OnInitialUpdate() ve vaší třídě odvozené z CFormView takto:
      void CMDIFormView::OnInitialUpdate()      {
CFormView::OnInitialUpdate();
ResizeParentToFit(); // Default argument is TRUE.
}

Pokud aplikace přepíše výchozí argument funkce ResizeParentToFit(), dojít v podstatě stejné důsledky jako pro aplikace SDI, jak je vysvětleno výše. Navíc podřízené okno může být příliš velký pro ohraničujícím hlavní rámec MDI nebo na celé obrazovce.

Chcete-li změnit styl rámce podřízené MDI (například odebrat styl WS_THICKFRAME, takže uživatel nemůže změnit velikost okna), odvodit třídu okna podřízené MDI a přepsání PreCreateWindow funkce, jak je uvedeno ve výše uvedeném příkladu SDI.

Zavřením formuláře aplikace MDI s tlačítkem

Chcete-li vytvořit tlačítko na formuláři, který Zavře dokument přidat popisovač zpráv BN_CLICKED zprávy třídy CFormView. Ujistěte se, že tlačítka v CFormView nemají výchozí IDOK nebo IDCANCEL identifikátorů. Pokud tak učiní, bude vytvořena nesprávné položky v mapě zpráv a nesprávná funkce tlačítek.

Po zpracování zpráv můžete simulovat příkaz Zavřít v nabídce Soubor s následujícím kódem:
      void CMyForm::OnClickedButton1()      {
PostMessage(WM_COMMAND, ID_FILE_CLOSE);
}

Tato metoda zavřete formulář vyzve uživatele k uložení souboru, pokud přidružený k dokumentu IsModified() členské funkce vrátí hodnotu TRUE.
Vlastnosti

ID článku: 98598 - Poslední kontrola: 12. 1. 2017 - Revize: 1

Váš názor