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.