Změna stylu okna vytvořená MFC
Jeho verze WinMain funkce MFC registruje několik tříd standardní okno pro vás.Protože není normálně upravovat MFC a WinMain, že funkce vám žádnou možnost změnit výchozí styly okna MFC.Tento článek vysvětluje, jak lze změnit styly takové preregistered okno třídy do existující aplikace.
Změna stylů v nové aplikaci MFC
Pokud používáte aplikaci 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 okna Hlavní rámec a podřízených oken MDI.Pro typ buď okna můžete určit tloušťku rámečku (silný nebo tenké) a je následující:
Zda má okno minimalizovat nebo maximalizovat ovládacích prvků.
Zda se zobrazí okno původně minimalizované maximalizované, nebo žádná.
Hlavní rámec Windows můžete také určit, zda má okno systémové nabídky.U podřízených oken MDI lze určit, zda podporuje okna dělicí příčky.
Změna stylu v existující aplikace
Pokud měníte atributy okna v existující aplikace, postupujte podle pokynů ve zbytku tohoto článku.
Chcete-li změnit výchozí atributy okno používá rámce aplikace vytvořené pomocí Průvodce aplikace přepsat v okně PreCreateWindow virtuální členské funkce.PreCreateWindowumožňuje aplikacím přístup k procesu vytváření obvykle řízeny interně CDocTemplate třídy.Volání rámci PreCreateWindow těsně před k vytváření okna.Změnou CREATESTRUCT struktury předán PreCreateWindow, změnit atributy použité k vytvoření okna aplikace.Chcete-li zajistit, že okno nepoužívá titulek, například použijte následující bitové operace:
// cs has been declared as CREATESTRUCT& cs;
cs.style &= ~WS_CAPTION;
CTRLBARS vzorové aplikace demonstruje tuto techniku pro změnu atributů okna.V závislosti na aplikaci změny v PreCreateWindow, může být nezbytné základní třídy implementace funkce volání.
Zahrnuje následující diskusi SDI případu a MDI případ.
V případě SDI
V aplikaci (SDI) rozhraní jediného dokumentu, je výchozí styl okna v rámci kombinací WS_OVERLAPPEDWINDOW a FWS_ADDTOTITLE styly.FWS_ADDTOTITLE MFC konkrétní styl, nastaví rámec přidat titulek okna název dokumentu.Chcete-li změnit atributy okna aplikace SDI přepsat PreCreateWindow funkce třídy odvozené od CFrameWnd (který názvy aplikace průvodce 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ří hlavní rámec okna, aniž by tlačítka Minimalizovat a maximalizovat a lze upravovat velikost ohraničení.Je zpočátku na střed okna na obrazovce.
V případě MDI
Trochu je nutné změnit styl okna podřízené okno v aplikaci rozhraní více dokumentů.Ve výchozím nastavení používá aplikace vytvořené pomocí Průvodce aplikace MDI výchozí CMDIChildWnd třídy definované v MFC.Chcete-li změnit styl okna podřízené okno MDI, musí být odvozena z nové třídy CMDIChildWnd a nahradit všechny odkazy na CMDIChildWnd s odkazy na nové třídy do projektu.Pravděpodobně pouze odkaz na CMDIChildWnd v aplikaci je umístěn ve vaší aplikaci InitInstance členské funkce.
Výchozí styl okna v MDI aplikace je kombinací WS_CHILD, WS_OVERLAPPEDWINDOW, a FWS_ADDTOTITLE styly.Chcete-li změnit atributy okna podřízených oken MDI aplikace přepsat PreCreateWindow funkce třídy odvozené od 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ří systém windows bez tlačítko Maximalizovat podřízený formulář MDI.