Sdílet prostřednictvím


Změna stylů okna vytvořeného rozhraním MFC

Ve verzi WinMain funkce knihovny MFC registruje několik tříd standardní okno pro vás.Vzhledem k tomu, že není za normálních okolností upravit knihovny MFC WinMain, že funkce vám žádnou možnost, chcete-li změnit výchozí styly okna knihovny MFC.Tento článek vysvětluje, jak můžete změnit styly takové preregistered třídy okna v existující aplikaci.

Změna stylů do nové aplikace knihovny MFC

Pokud používáte Visual C++ 2.0 nebo novější, můžete změnit výchozí styly oken v Průvodci aplikace, při vytváření aplikace.Na stránce funkce uživatelského rozhraní Průvodce aplikací můžete změnit styly pro hlavní okno rámce a podřízených oken MDI.U obou typů okna můžete určit tloušťku rámečku (silné nebo tenké) a některou z následujících akcí:

  • Zda má okno minimalizovat nebo maximalizovat ovládacích prvků.

  • Zda se zobrazí okno zpočátku minimalizované maximalizováno, nebo žádný z nich.

Hlavní rámec systému Windows můžete také určit, zda má okno systémové nabídky.U podřízených oken MDI můžete určit, zda podporuje okna dělicí příčky.

Změny v existující aplikaci stylů

Pokud měníte okno atributů do existující aplikace, postupujte podle pokynů ve zbývající části tohoto článku.

Chcete-li změnit výchozí okno atributy používané aplikací framework vytvořenou pomocí Průvodce aplikace, potlačit okna PreCreateWindow virtuální členskou funkci.PreCreateWindowumožňuje aplikacím přístup k procesu vytváření obvykle spravováno interně službou CDocTemplate třídy.Architektura volá PreCreateWindow těsně před vytvořením okno.Změnou CREATESTRUCT struktury předán PreCreateWindow, vaše aplikace může změnit atributy použité k vytvoření okna.Například zajistit, že okna nepoužívá titulek, použijte následující logické bitové operace:

// cs has been declared as CREATESTRUCT& cs;
cs.style &= ~WS_CAPTION;

CTRLBARS ukázkové aplikace demonstruje tuto techniku pro změnu atributů okna.Na aplikaci změn v PreCreateWindow, je třeba volat základní třídy implementace funkce.

Po projednání se týká případu SDI a MDI případ.

V případě SDI

V aplikacích Implementujících rozhraní jednoho dokumentu je výchozí styl okna v rámci kombinace WS_OVERLAPPEDWINDOW a FWS_ADDTOTITLE styly.FWS_ADDTOTITLE je konkrétní knihovny MFC stylu, která instruuje rozhraní framework Chcete-li přidat nadpis dokumentu na titulek okna.Chcete-li změnit atributy okna v aplikaci SDI, přepsat PreCreateWindow funkci ve vaší třídě odvozené z CFrameWnd (který průvodce aplikace názvy CMainFrame).Příklad:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
    // Call the base-class version 
   if( !CFrameWnd::PreCreateWindow(cs) )
      return FALSE;

    // Create a window without min/max buttons or sizable border 
    cs.style = WS_OVERLAPPED | WS_SYSMENU | WS_BORDER;

    // Size the window to 1/3 screen size and center it 
    cs.cy = ::GetSystemMetrics(SM_CYSCREEN) / 3; 
    cs.cx = ::GetSystemMetrics(SM_CXSCREEN) / 3; 
    cs.y = ((cs.cy * 3) - cs.cy) / 2; 
    cs.x = ((cs.cx * 3) - cs.cx) / 2;

   return TRUE;
}

Tento kód vytvoří okno rámce, hlavní bez tlačítka Minimalizovat a maximalizovat a bez kterých lze měnit velikost ohraničení.Na obrazovce je původně uprostřed okna.

V případě MDI

Trochu více práce, je nutné změnit styl okna podřízené okno v hromadné přihlášce dokumentu rozhraní (MDI).Ve výchozím nastavení používá aplikace MDI vytvořenou pomocí Průvodce aplikace ve výchozím nastavení CMDIChildWnd třídy definované v knihovně MFC.Chcete-li změnit styl okna podřízené okno MDI, musí odvodit novou třídu z CMDIChildWnd a nahraďte všechny odkazy na CMDIChildWnd v projektu s odkazy na nové třídy.Pravděpodobně pouze odkaz na CMDIChildWnd v aplikaci je umístěn ve vaší aplikaci InitInstance členské funkce.

Výchozí styl okna v aplikaci MDI je kombinace WS_CHILD, WS_OVERLAPPEDWINDOW, a FWS_ADDTOTITLE styly.Chcete-li změnit atributy okna podřízených oken MDI aplikace, přepsat PreCreateWindow funkci ve vaší třídě odvozené z CMDIChildWnd.Příklad:

BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
   // Create a child window without the maximize button 
    cs.style &= ~WS_MAXIMIZEBOX; 

   return CMDIChildWnd::PreCreateWindow(cs);
}

Tento kód vytvoří podřízený formulář MDI okna bez tlačítko Maximalizovat.

O čem chcete vědět více?

Viz také

Koncepty

Styly oken s rámečkem (C++)