CFrameWnd
Třída
Poskytuje funkce rozhraní SDI (Single Document Interface) systému Windows překrývající se nebo automaticky otevírané okno rámečku spolu se členy pro správu okna.
Syntaxe
class CFrameWnd : public CWnd
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CFrameWnd::CFrameWnd |
CFrameWnd Vytvoří objekt. |
Veřejné metody
Název | Popis |
---|---|
CFrameWnd::ActivateFrame |
Zviditelní a zpřístupní rámeček uživateli. |
CFrameWnd::BeginModalState |
Nastaví okno rámce na modální. |
CFrameWnd::Create |
Volání pro vytvoření a inicializaci okna rámce systému Windows přidruženého k objektu CFrameWnd . |
CFrameWnd::CreateView |
Vytvoří zobrazení v rámci rámce, který není odvozen z CView . |
CFrameWnd::DockControlBar |
Ukotví ovládací panel. |
CFrameWnd::EnableDocking |
Umožňuje ukotvit ovládací panel. |
CFrameWnd::EndModalState |
Ukončí modální stav okna rámečku. Povolí všechna okna zakázaná uživatelem BeginModalState . |
CFrameWnd::FloatControlBar |
Nastaví plovoucí ovládací panel. |
CFrameWnd::GetActiveDocument |
Vrátí aktivní CDocument objekt. |
CFrameWnd::GetActiveFrame |
Vrátí aktivní CFrameWnd objekt. |
CFrameWnd::GetActiveView |
Vrátí aktivní CView objekt. |
CFrameWnd::GetControlBar |
Načte ovládací panel. |
CFrameWnd::GetDockState |
Načte stav ukotvení okna rámečku. |
CFrameWnd::GetMenuBarState |
Načte stav zobrazení nabídky v aktuální aplikaci MFC. |
CFrameWnd::GetMenuBarVisibility |
Určuje, zda je výchozí chování nabídky v aktuální aplikaci MFC skryté nebo viditelné. |
CFrameWnd::GetMessageBar |
Vrátí ukazatel na stavový řádek patřící do okna rámce. |
CFrameWnd::GetMessageString |
Načte zprávu odpovídající ID příkazu. |
CFrameWnd::GetTitle |
Načte název souvisejícího řídicího panelu. |
CFrameWnd::InitialUpdateFrame |
OnInitialUpdate Způsobí, že se členová funkce patřící do všech zobrazení v okně rámce zavolá. |
CFrameWnd::InModalState |
Vrátí hodnotu určující, zda je okno rámce v modálním stavu. |
CFrameWnd::IsTracking |
Určuje, jestli se rozdělovač právě přesouvá. |
CFrameWnd::LoadAccelTable |
Volání pro načtení tabulky akcelerátoru |
CFrameWnd::LoadBarState |
Volání pro obnovení nastavení řídicího panelu |
CFrameWnd::LoadFrame |
Volání dynamického vytvoření okna rámce z informací o prostředcích |
CFrameWnd::NegotiateBorderSpace |
Vyjedná ohraničení v okně rámečku. |
CFrameWnd::OnBarCheck |
Volá se při každém provedení akce na zadaném řídicím panelu. |
CFrameWnd::OnContextHelp |
Zpracovává nápovědu SHIFT+F1 pro místní položky. |
CFrameWnd::OnSetPreviewMode |
Nastaví okno hlavního rámce aplikace do režimu náhledu tisku a z režimu náhledu. |
CFrameWnd::OnUpdateControlBarMenu |
Volá se rozhraním při aktualizaci přidružené nabídky. |
CFrameWnd::RecalcLayout |
Přemísťuje řídicí pruhy objektu CFrameWnd . |
CFrameWnd::SaveBarState |
Volání pro uložení nastavení řídicího panelu |
CFrameWnd::SetActivePreviewView |
Určuje zadané zobrazení jako aktivní zobrazení pro verzi Rich Preview. |
CFrameWnd::SetActiveView |
Nastaví aktivní CView objekt. |
CFrameWnd::SetDockState |
Volání pro ukotvení okna rámečku v hlavním okně |
CFrameWnd::SetMenuBarState |
Nastaví stav zobrazení nabídky v aktuální aplikaci MFC na skrytou nebo zobrazenou. |
CFrameWnd::SetMenuBarVisibility |
Nastaví výchozí chování nabídky v aktuální aplikaci MFC tak, aby byla skrytá nebo viditelná. |
CFrameWnd::SetMessageText |
Nastaví text standardního stavového řádku. |
CFrameWnd::SetProgressBarPosition |
Nastaví aktuální pozici indikátoru průběhu Windows 7 zobrazeného na hlavním panelu. |
CFrameWnd::SetProgressBarRange |
Nastaví rozsah indikátoru průběhu Windows 7 zobrazeného na hlavním panelu. |
CFrameWnd::SetProgressBarState |
Nastaví typ a stav indikátoru průběhu zobrazeného na tlačítku hlavního panelu. |
CFrameWnd::SetTaskbarOverlayIcon |
Přetíženo. Použije překryv na tlačítko hlavního panelu, které označuje stav aplikace nebo oznámení pro uživatele. |
CFrameWnd::SetTitle |
Nastaví název souvisejícího řídicího panelu. |
CFrameWnd::ShowControlBar |
Volání pro zobrazení řídicího panelu |
CFrameWnd::ShowOwnedWindows |
Zobrazí všechna okna, která jsou potomky objektu CFrameWnd . |
Chráněné metody
Název | Popis |
---|---|
CFrameWnd::OnCreateClient |
Vytvoří okno klienta pro rámec. |
CFrameWnd::OnHideMenuBar |
Volána před nabídkou v aktuální aplikaci MFC je skrytá. |
CFrameWnd::OnShowMenuBar |
Volá se před nabídkou v aktuální aplikaci MFC. |
Veřejné datové členy
Název | Popis |
---|---|
CFrameWnd::m_bAutoMenuEnable |
Řídí automatické povolení a zakázání funkcí pro položky nabídky. |
CFrameWnd::rectDefault |
Tuto statickou CRect funkci předejte jako parametr při vytváření objektu CFrameWnd , aby systém Windows mohl zvolit počáteční velikost a umístění okna. |
Poznámky
Chcete-li vytvořit užitečné okno rámce pro vaši aplikaci, odvodit třídu z CFrameWnd
. Přidejte do odvozené třídy členské proměnné pro ukládání dat specifických pro vaši aplikaci. Implementujte členské funkce obslužné rutiny zpráv a mapu zpráv v odvozené třídě a určete, co se stane, když jsou zprávy směrovány do okna.
Existují tři způsoby vytvoření okna rámečku:
Přímo ho sestavujte pomocí
Create
.Přímo ho sestavujte pomocí
LoadFrame
.Nepřímo ji sestaví pomocí šablony dokumentu.
Před voláním nebo Create
LoadFrame
je nutné vytvořit objekt okna rámce v haldě pomocí operátoru C++ new
. Před voláním Create
můžete také zaregistrovat třídu okna s AfxRegisterWndClass
globální funkcí, která nastaví ikonu a styly tříd pro rámeček.
Create
Členské funkce slouží k předání parametrů vytvoření rámce jako okamžitých argumentů.
LoadFrame
vyžaduje méně argumentů než Create
a místo toho načte většinu výchozích hodnot z prostředků, včetně titulku rámečku, ikony, tabulky akcelerátoru a nabídky. Aby byly všechny tyto prostředky přístupné LoadFrame
, musí mít stejné ID prostředku (například IDR_MAINFRAME
).
CFrameWnd
Pokud objekt obsahuje zobrazení a dokumenty, jsou vytvořeny nepřímo architekturou místo přímo programátorem. Objekt CDocTemplate
orchestruje vytvoření rámce, vytvoření obsahujících zobrazení a propojení zobrazení s příslušným dokumentem. Parametry konstruktoru CDocTemplate
určují CRuntimeClass
tři zahrnuté třídy (dokument, rámec a zobrazení). Objekt CRuntimeClass
je používán architekturou k dynamickému vytváření nových snímků při zadání uživatelem (například pomocí příkazu Nový soubor nebo více příkazů rozhraní dokumentu (MDI) Okno Nový).
Třída oken s rámečkem odvozená z CFrameWnd
musí být deklarována, DECLARE_DYNCREATE
aby výše uvedený RUNTIME_CLASS
mechanismus fungoval správně.
Obsahuje CFrameWnd
výchozí implementace pro provádění následujících funkcí hlavního okna v typické aplikaci pro Windows:
Okno
CFrameWnd
rámce sleduje aktuálně aktivní zobrazení, které je nezávislé na aktivním okně Windows nebo aktuálním fokusu vstupu. Při opětovné aktivaci rámce je aktivní zobrazení upozorněno volánímCView::OnActivateView
.Zprávy příkazů a mnoho běžných zpráv s oznámením o rámečku, včetně těch, které zpracovává ,
OnHScroll
a funkce ,CWnd
jsou delegoványCFrameWnd
OnSetFocus
oknem rámce do aktuálněOnVScroll
aktivního zobrazení.Aktuálně aktivní zobrazení (nebo aktuálně aktivní podřízené okno MDI v případě rámce MDI) může určit titulek okna rámce. Tuto funkci můžete zakázat vypnutím bitu
FWS_ADDTOTITLE
stylu okna rámečku.Okno
CFrameWnd
rámečku spravuje umístění řídicích pruhů, zobrazení a dalších podřízených oken uvnitř klientské oblasti okna rámce. V okně rámečku se také aktualizuje panel nástrojů nečinnosti a další tlačítka ovládacích panelů. OknoCFrameWnd
rámečku má také výchozí implementace příkazů pro přepínání a vypnutí panelu nástrojů a stavového řádku.Okno
CFrameWnd
rámečku spravuje hlavní řádek nabídek. Když se zobrazí místní nabídka, okno rámce používáUPDATE_COMMAND_UI
mechanismus k určení položek nabídky, které mají být povolené, zakázané nebo zaškrtnuté. Když uživatel vybere položku nabídky, okno rámce aktualizuje stavový řádek řetězcem zprávy pro tento příkaz.Okno
CFrameWnd
rámečku obsahuje volitelnou tabulku akcelerátorů, která automaticky překládá akcelerátory klávesnice.Okno
CFrameWnd
rámce obsahuje volitelnou sadu ID nápovědyLoadFrame
, které se používá pro kontextovou nápovědu. Okno rámečku je hlavním orchestrátorem polomodálních stavů, jako je kontextová nápověda (SHIFT+F1) a režimy náhledu tisku.V
CFrameWnd
okně rámečku se otevře soubor přetažený ze Správce souborů a v okně rámečku se přetáhne. Pokud je přípona souboru zaregistrovaná a přidružená k aplikaci, okno rámce odpoví na otevřený požadavek dynamické výměny dat (DDE), ke kterému dochází, když uživatel otevře datový soubor ve Správci souborů nebo kdyžShellExecute
je volána funkce Windows.Pokud je okno rámce hlavním oknem aplikace (to znamená
CWinThread::m_pMainWnd
), když uživatel aplikaci zavře, zobrazí okno rámce výzvu k uložení všech upravených dokumentů (proOnClose
aOnQueryEndSession
).Pokud je okno rámce hlavním oknem aplikace, je okno rámce kontextem pro spuštění nástroje WinHelp. Zavření okna rámečku se vypne
WINHELP.EXE
, pokud byla spuštěna kvůli nápovědě pro tuto aplikaci.
Nepoužívejte operátor C++ delete
ke zničení okna rámce. Místo toho použijte CWnd::DestroyWindow
. Implementace CFrameWnd
PostNcDestroy
odstraní objekt C++ při zničení okna. Když uživatel zavře okno rámce, bude výchozí OnClose
obslužná rutina volat DestroyWindow
.
Další informace naleznete v CFrameWnd
tématu Rámová okna.
Hierarchie dědičnosti
CFrameWnd
Požadavky
Záhlaví: afxwin.h
CFrameWnd::ActivateFrame
Voláním této členské funkce aktivujte a obnovte okno rámce, aby bylo viditelné a dostupné uživateli.
virtual void ActivateFrame(int nCmdShow = -1);
Parametry
nCmdShow
Určuje parametr, který se má CWnd::ShowWindow
předat . Ve výchozím nastavení se rámeček zobrazí a správně obnoví.
Poznámky
Tato členová funkce se obvykle volá po události jiného než uživatelského rozhraní, jako je DDE, OLE nebo jiná událost, která může uživateli zobrazit okno rámečku nebo jeho obsah.
Výchozí implementace aktivuje rámeček a přenese ho na začátek pořadí Z a v případě potřeby provede stejné kroky pro okno hlavního rámce aplikace.
Přepište tuto členovou funkci a změňte způsob aktivace rámce. Můžete například vynutit maximalizaci podřízených oken MDI. Přidejte odpovídající funkce a potom volejte verzi základní třídy explicitním nCmdShow
.
Příklad
void CChildFrame::ActivateFrame(int nCmdShow)
{
// Create the child frame window maximized
nCmdShow = SW_MAXIMIZE;
CMDIChildWnd::ActivateFrame(nCmdShow);
}
CFrameWnd::BeginModalState
Voláním této členské funkce nastavíte modální okno rámce.
virtual void BeginModalState();
CFrameWnd::CFrameWnd
CFrameWnd
Vytvoří objekt, ale nevytvoří viditelné okno rámce.
CFrameWnd();
Poznámky
Volání Create
pro vytvoření viditelného okna
CFrameWnd::Create
Volání pro vytvoření a inicializaci okna rámce systému Windows přidruženého k objektu CFrameWnd
.
virtual BOOL Create(
LPCTSTR lpszClassName,
LPCTSTR lpszWindowName,
DWORD dwStyle = WS_OVERLAPPEDWINDOW,
const RECT& rect = rectDefault,
CWnd* pParentWnd = NULL,
LPCTSTR lpszMenuName = NULL,
DWORD dwExStyle = 0,
CCreateContext* pContext = NULL);
Parametry
lpszClassName
Odkazuje na řetězec znaků ukončený hodnotou null, který pojmenuje třídu Windows. Název třídy může být libovolný název zaregistrovaný v AfxRegisterWndClass
globální funkci nebo RegisterClass
funkci Windows. Pokud NULL
použijete předdefinované výchozí CFrameWnd
atributy.
lpszWindowName
Odkazuje na řetězec znaků s ukončenou hodnotou null, který představuje název okna. Slouží jako text pro záhlaví.
dwStyle
Určuje atributy stylu okna. FWS_ADDTOTITLE
Pokud chcete, aby záhlaví automaticky zobrazoval název dokumentu reprezentovaný v okně, zadejte styl.
rect
Určuje velikost a umístění okna. Tato rectDefault
hodnota umožňuje systému Windows určit velikost a umístění nového okna.
pParentWnd
Určuje nadřazené okno tohoto okna rámce. Tento parametr by měl být NULL
určen pro okna rámců nejvyšší úrovně.
lpszMenuName
Určuje název prostředku nabídky, který se má použít s oknem. Použijte MAKEINTRESOURCE
, pokud má nabídka celé číslo ID místo řetězce. Tento parametr může být NULL
.
dwExStyle
Určuje atributy rozšířeného stylu okna.
pContext
Určuje ukazatel na CCreateContext
strukturu. Tento parametr může být NULL
.
Návratová hodnota
Nenulové, pokud je inicializace úspěšná; jinak 0.
Poznámky
Vytvořte CFrameWnd
objekt ve dvou krocích. Nejprve vyvoláte konstruktor, který vytvoří CFrameWnd
objekt, a potom volání Create
, který vytvoří okno rámečku Systému Windows a připojí jej k objektu CFrameWnd
. Create
inicializuje název třídy okna a název okna a registruje výchozí hodnoty pro jeho styl, nadřazený a přidruženou nabídku.
Create
Místo zadávání argumentů použijte LoadFrame
místo zadávání argumentů okno rámce z prostředku.
CFrameWnd::CreateView
Volání CreateView
pro vytvoření zobrazení v rámci.
CWnd* CreateView(
CCreateContext* pContext,
UINT nID = AFX_IDW_PANE_FIRST);
Parametry
pContext
Určuje typ zobrazení a dokumentu.
nID
Číslo ID zobrazení.
Návratová hodnota
Ukazatel na CWnd
objekt, pokud je úspěšný; jinak NULL
.
Poznámky
Pomocí této členské funkce můžete vytvořit zobrazení, která nejsou CView
odvozena v rámci rámce. Po volání CreateView
je nutné ručně nastavit zobrazení na aktivní a nastavit, aby bylo viditelné; tyto úlohy nejsou automaticky provedeny CreateView
.
CFrameWnd::DockControlBar
Způsobí ukotvení ovládacího panelu do okna rámečku.
void DockControlBar(
CControlBar* pBar,
UINT nDockBarID = 0,
LPCRECT lpRect = NULL);
Parametry
pBar
Odkazuje na řídicí panel, který se má ukotvit.
nDockBarID
Určuje, které strany okna rámečku je třeba zvážit pro ukotvení. Může to být 0 nebo jedna nebo více z následujících možností:
AFX_IDW_DOCKBAR_TOP
Ukotvit horní stranu okna rámečkuAFX_IDW_DOCKBAR_BOTTOM
Ukotvit na spodní stranu okna rámečkuAFX_IDW_DOCKBAR_LEFT
Ukotvit levou stranu okna rámečku.AFX_IDW_DOCKBAR_RIGHT
Ukotvit na pravou stranu okna rámečku
Pokud 0, ovládací panel lze ukotvit na libovolnou stranu, aby se dokoval v okně cílového rámečku.
lpRect
Určuje v souřadnicích obrazovky, kde se řídicí panel ukotví v oblasti mimoclient v okně cílového rámce.
Poznámky
Ovládací panel se ukotví na jednu ze stran okna rámečku zadaných ve voláních obou CControlBar::EnableDocking
a CFrameWnd::EnableDocking
. Zvolená strana je určena nDockBarID
.
CFrameWnd::EnableDocking
Voláním této funkce povolíte dokovatelné ovládací panely v okně rámečku.
void EnableDocking(DWORD dwDockStyle);
Parametry
dwDockStyle
Určuje, které strany okna rámečku mohou sloužit jako dokovací místa pro ovládací panely. Může to být jedna nebo více z následujících možností:
CBRS_ALIGN_TOP
Umožňuje ukotvení v horní části klientské oblasti.CBRS_ALIGN_BOTTOM
Umožňuje ukotvit v dolní části klientské oblasti.CBRS_ALIGN_LEFT
Umožňuje ukotvit na levé straně klientské oblasti.CBRS_ALIGN_RIGHT
Umožňuje ukotvit na pravé straně klientské oblasti.CBRS_ALIGN_ANY
Umožňuje ukotvit na libovolné straně klientské oblasti.
Poznámky
Ve výchozím nastavení se řídicí pruhy ukotví na stranu okna rámečku v následujícím pořadí: horní, dolní, levý, pravý.
Příklad
Podívejte se na příklad pro CToolBar::Create
.
CFrameWnd::EndModalState
Voláním této členské funkce změníte okno rámce z modální na bezmodální.
virtual void EndModalState();
Poznámky
EndModalState
povolí všechna okna zakázaná uživatelem BeginModalState
.
CFrameWnd::FloatControlBar
Voláním této funkce způsobíte, že ovládací panel nebude ukotvený do okna rámečku.
void FloatControlBar(
CControlBar* pBar,
CPoint point,
DWORD dwStyle = CBRS_ALIGN_TOP);
Parametry
pBar
Odkazuje na řídicí panel, který má být plovoucí.
point
Umístění v souřadnicích obrazovky, kde bude umístěn levý horní roh řídicího panelu.
dwStyle
Určuje, jestli se má řídicí panel vodorovně nebo svisle zarovnat v novém okně rámečku. Může se jednat o jednu z následujících možností:
CBRS_ALIGN_TOP
Orientuje ovládací panel svisle.CBRS_ALIGN_BOTTOM
Orientuje ovládací panel svisle.CBRS_ALIGN_LEFT
Orientuje ovládací panel vodorovně.CBRS_ALIGN_RIGHT
Orientuje ovládací panel vodorovně.
Pokud se předají styly určující vodorovnou i svislou orientaci, panel nástrojů bude orientovaný vodorovně.
Poznámky
Obvykle se to provádí při spuštění aplikace, když program obnovuje nastavení z předchozího spuštění.
Tato funkce je volána architekturou, když uživatel způsobí operaci přetažení uvolněním levého tlačítka myši a přetažením řídicího panelu přes umístění, které není k dispozici pro ukotvení.
CFrameWnd::GetActiveDocument
Voláním této členské funkce získáte ukazatel na aktuální CDocument
připojenou k aktuálnímu aktivnímu zobrazení.
virtual CDocument* GetActiveDocument();
Návratová hodnota
Ukazatel na aktuální CDocument
. Pokud neexistuje žádný aktuální dokument, vrátí hodnotu NULL
.
CFrameWnd::GetActiveFrame
Voláním této členské funkce získáte ukazatel na aktivní podřízené okno rozhraní MDI (Multiple Document Interface) okna rámce MDI.
virtual CFrameWnd* GetActiveFrame();
Návratová hodnota
Ukazatel na aktivní podřízené okno MDI. Pokud je aplikace aplikací SDI nebo okno rámce MDI nemá žádný aktivní dokument, vrátí se implicitní this
ukazatel.
Poznámky
Pokud neexistuje žádné aktivní podřízené rozhraní MDI nebo aplikace je jedno rozhraní dokumentu (SDI), vrátí se implicitní this
ukazatel.
CFrameWnd::GetActiveView
Voláním této členské funkce získáte ukazatel na aktivní zobrazení (pokud existuje) připojeného k oknem rámečku ( CFrameWnd
).
CView* GetActiveView() const;
Návratová hodnota
Ukazatel na aktuální CView
. Pokud neexistuje žádné aktuální zobrazení, vrátí hodnotu NULL
.
Poznámky
Tato funkce se vrátí NULL
při zavolání okna hlavního rámce MDI ( CMDIFrameWnd
). V aplikaci MDI nemá okno hlavního rámce MDI přidružené zobrazení. Místo toho má každé samostatné podřízené okno ( CMDIChildWnd
) jedno nebo více přidružených zobrazení. Aktivní zobrazení v aplikaci MDI lze získat tak, že nejprve vyhledá aktivní podřízené okno MDI a pak vyhledá aktivní zobrazení pro toto podřízené okno. Aktivní podřízené okno MDI lze najít voláním funkce MDIGetActive
nebo GetActiveFrame
podle následujícího příkladu:
CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->GetMainWnd();
// Get the active MDI child window.
CMDIChildWnd *pChild = (CMDIChildWnd*)pFrame->GetActiveFrame();
// or CMDIChildWnd *pChild = pFrame->MDIGetActive();
// Get the active view attached to the active MDI child window.
CMyView *pView = (CMyView*)pChild->GetActiveView();
CFrameWnd::GetControlBar
Volání GetControlBar
pro získání přístupu k řídicímu panelu přidruženému k ID
CControlBar* GetControlBar(UINT nID);
Parametry
nID
Číslo ID ovládacího panelu.
Návratová hodnota
Ukazatel na ovládací panel, který je přidružený k ID.
Poznámky
Parametr nID
odkazuje na jedinečný identifikátor předaný Create
metodě řídicího panelu. Další informace o řídicích pruhech najdete v tématu s názvem Řídicí pruhy.
GetControlBar
vrátí ovládací panel, i když je plovoucí, a proto není aktuálně podřízeným oknem rámce.
CFrameWnd::GetDockState
Voláním této členské funkce uložíte informace o stavu řídicích pruhů okna rámečku v objektu CDockState
.
void GetDockState(CDockState& state) const;
Parametry
state
Obsahuje aktuální stav řídicích pruhů okna rámečku po návratu.
Poznámky
Obsah pak můžete do úložiště zapisovat CDockState
pomocí CDockState::SaveState
nebo Serialize
. Pokud později chcete ovládací panely obnovit do předchozího stavu, načtěte stav s CDockState::LoadState
Serialize
nebo a potom volání SetDockState
, které použije předchozí stav u řídicích pruhů okna rámečku.
CFrameWnd::GetMenuBarState
Načte stav zobrazení nabídky v aktuální aplikaci MFC.
virtual DWORD GetMenuBarState();
Návratová hodnota
Vrácená hodnota může mít následující hodnoty:
AFX_MBS_VISIBLE
(0x01) – nabídka je viditelná.AFX_MBS_HIDDEN
(0x02) – nabídka je skrytá.
Poznámky
Pokud dojde k chybě za běhu, tato metoda provádí v režimu ladění a vyvolá výjimku odvozenou z CException
třídy.
CFrameWnd::GetMenuBarVisibility
Určuje, zda je výchozí stav nabídky v aktuální aplikaci MFC skrytý nebo viditelný.
virtual DWORD CFrameWnd::GetMenuBarVisibility();
Návratová hodnota
Tato metoda vrátí jednu z následujících hodnot:
AFX_MBV_KEEPVISIBLE
(0x01) – Nabídka se zobrazuje vždy a ve výchozím nastavení fokus neobsahuje.AFX_MBV_DISPLAYONFOCUS
(0x02) – nabídka je ve výchozím nastavení skrytá. Pokud je nabídka skrytá, stisknutím klávesy ALT zobrazte nabídku a dejte jí fokus. Pokud se nabídka zobrazí, stiskněte klávesu ALT nebo ESC a skryjte ji.AFX_MBV_ DISPLAYONFOCUS | AFX_MBV_DISPLAYONF10
(0x06) – nabídka je ve výchozím nastavení skrytá. Pokud je nabídka skrytá, stisknutím klávesy F10 zobrazte nabídku a dejte jí fokus. Pokud se nabídka zobrazí, stisknutím klávesy F10 přepněte fokus na nabídku nebo ji vypněte. Nabídka se zobrazí, dokud nestisknete klávesu ALT nebo ESC a skryjete ji.
Poznámky
Pokud dojde k chybě za běhu, tato metoda provádí v režimu ladění a vyvolá výjimku odvozenou z CException
třídy.
CFrameWnd::GetMessageBar
Voláním této členské funkce získáte ukazatel na stavový řádek.
virtual CWnd* GetMessageBar();
Návratová hodnota
Ukazatel na okno stavového řádku
CFrameWnd::GetMessageString
Tuto funkci přepište tak, aby poskytovala vlastní řetězce pro ID příkazů.
virtual void GetMessageString(
UINT nID,
CString& rMessage) const;
Parametry
nID
ID prostředku požadované zprávy.
rMessage
CString
objekt, do kterého chcete zprávu umístit.
Poznámky
Výchozí implementace jednoduše načte řetězec zadaný nID
ze souboru prostředků. Tato funkce je volána architekturou, když řetězec zprávy na stavovém řádku potřebuje aktualizovat.
CFrameWnd::GetTitle
Načte název objektu okna.
CString GetTitle() const;
Návratová hodnota
Objekt CString
obsahující aktuální název objektu okna.
CFrameWnd::InitialUpdateFrame
Volání IntitialUpdateFrame
po vytvoření nového rámce s Create
.
void InitialUpdateFrame(
CDocument* pDoc,
BOOL bMakeVisible);
Parametry
pDoc
Odkazuje na dokument, ke kterému je přidružené okno rámečku. Může to být NULL
.
bMakeVisible
Pokud TRUE
označuje, že by měl být snímek viditelný a aktivní. Pokud FALSE
se nezobrazí žádné potomky.
Poznámky
To způsobí, že všechna zobrazení v okně rámce budou přijímat volání OnInitialUpdate
.
Také pokud nebylo dříve aktivní zobrazení, primární zobrazení okna rámečku je aktivní. Primární zobrazení je zobrazení s podřízeným ID AFX_IDW_PANE_FIRST
. Nakonec je okno rámečku viditelné, pokud bMakeVisible
je nenulové. Pokud bMakeVisible
je 0, zůstane aktuální fokus a viditelný stav okna rámečku beze změny. Při použití implementace File New a File Open není nutné tuto funkci volat.
CFrameWnd::InModalState
Voláním této členské funkce zkontrolujte, jestli je okno rámce modální nebo bez režimu.
BOOL InModalState() const;
Návratová hodnota
Nenulové, pokud ano; jinak 0.
CFrameWnd::IsTracking
Voláním této členské funkce určíte, jestli se rozdělovač v okně právě přesouvá.
BOOL IsTracking() const;
Návratová hodnota
Nenulové, pokud probíhá operace rozdělení; jinak 0.
CFrameWnd::LoadAccelTable
Volání pro načtení zadané tabulky akcelerátoru
BOOL LoadAccelTable(LPCTSTR lpszResourceName);
Parametry
lpszResourceName
Identifikuje název prostředku akcelerátoru. Použijte MAKEINTRESOURCE
, pokud je prostředek identifikován s celočíselnou ID.
Návratová hodnota
Nenulové, pokud byla tabulka akcelerátorů úspěšně načtena; jinak 0.
Poznámky
Najednou lze načíst pouze jednu tabulku.
Tabulky akcelerátoru načtené z prostředků se automaticky uvolní při ukončení aplikace.
Pokud voláte LoadFrame
vytvoření okna rámce, architektura načte tabulku akcelerátoru spolu s prostředky nabídky a ikony a následné volání této členské funkce je pak zbytečné.
CFrameWnd::LoadBarState
Voláním této funkce obnovíte nastavení každého řídicího panelu vlastněného oknem rámečku.
void LoadBarState(LPCTSTR lpszProfileName);
Parametry
lpszProfileName
Název oddílu v souboru inicializace (INI) nebo klíč v registru Systému Windows, kde jsou uloženy informace o stavu.
Poznámky
Obnovené informace zahrnují viditelnost, vodorovnou/svislou orientaci, stav ukotvení a pozici řídicího panelu.
Nastavení, která chcete obnovit, musí být před voláním LoadBarState
zapsána do registru . Zapište informace do registru voláním CWinApp::SetRegistryKey
. Zapište informace do souboru INI voláním SaveBarState
.
CFrameWnd::LoadFrame
Volání dynamického vytvoření okna rámce z informací o prostředcích
virtual BOOL LoadFrame(
UINT nIDResource,
DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
CWnd* pParentWnd = NULL,
CCreateContext* pContext = NULL);
Parametry
nIDResource
ID sdílených prostředků přidružených k oknem rámce.
dwDefaultStyle
Styl rámečku. FWS_ADDTOTITLE
Pokud chcete, aby záhlaví automaticky zobrazoval název dokumentu reprezentovaný v okně, zadejte styl.
pParentWnd
Ukazatel na nadřazený rámec.
pContext
Ukazatel na CCreateContext
strukturu. Tento parametr může být NULL
.
Poznámky
Vytvořte CFrameWnd
objekt ve dvou krocích. Nejprve vyvoláte konstruktor, který vytvoří CFrameWnd
objekt, a potom volání LoadFrame
, který načte okno rámce Systému Windows a přidružené prostředky a připojí okno rámce k objektu CFrameWnd
. Parametr nIDResource
určuje nabídku, tabulku akcelerátoru, ikonu a prostředek řetězce názvu okna rámečku.
Create
Místo toho, když chcete zadat všechny parametry vytvoření okna rámce, použijte členskou funkciLoadFrame
.
Architektura volá LoadFrame
, když vytvoří okno rámce pomocí objektu šablony dokumentu.
Architektura používá pContext
argument k určení objektů, které mají být připojeny k oknem rámce, včetně všech obsažených objektů zobrazení. Argument můžete nastavit pContext
při NULL
volání LoadFrame
.
CFrameWnd::m_bAutoMenuEnable
Pokud je tento datový člen povolený (což je výchozí nastavení), položky nabídky, které nemají ON_UPDATE_COMMAND_UI
nebo ON_COMMAND
obslužné rutiny, se automaticky deaktivují, když uživatel stáhne nabídku.
BOOL m_bAutoMenuEnable;
Poznámky
Položky nabídky, které mají obslužnou rutinu ON_COMMAND
, ale žádná ON_UPDATE_COMMAND_UI
obslužná rutina nebude automaticky povolena.
Když je tento datový člen nastavený, položky nabídky se automaticky povolí stejným způsobem jako tlačítka panelu nástrojů.
Poznámka:
m_bAutoMenuEnable
nemá žádný vliv na položky nabídky nejvyšší úrovně.
Tento datový člen zjednodušuje implementaci volitelných příkazů na základě aktuálního výběru a snižuje potřebu zapisovat ON_UPDATE_COMMAND_UI
obslužné rutiny pro povolení a zakázání položek nabídky.
Příklad
// CMainFrame is application-defined object of type CFrameWnd
CMainFrame::CMainFrame()
: m_hDrawMenu(NULL), m_hDrawAccel(NULL), m_bCheck(false), m_nWindowTimer(0), m_nCallbackTimer(0)
{
// Set to FALSE so no ON_UPDATE_COMMAND_UI
// or ON_COMMAND handlers are needed, and
// CMenu::EnableMenuItem() will work as expected.
m_bAutoMenuEnable = FALSE;
}
CFrameWnd::NegotiateBorderSpace
Voláním této členské funkce vyjednáte ohraničení v okně rámečku během aktivace rozhraní OLE inplace.
virtual BOOL NegotiateBorderSpace(
UINT nBorderCmd,
LPRECT lpRectBorder);
Parametry
nBorderCmd
Obsahuje jednu z následujících hodnot:enum BorderCmd
borderGet
= 1borderRequest
= 2borderSet
= 3
lpRectBorder
Ukazatel na RECT
strukturu nebo CRect
objekt, který určuje souřadnice ohraničení.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Tato členová funkce je CFrameWnd
implementace vyjednávání o hraničním prostoru OLE.
CFrameWnd::OnBarCheck
Volá se při každém provedení akce na zadaném řídicím panelu.
afx_msg BOOL OnBarCheck(UINT nID);
Parametry
nID
ID zobrazeného řídicího panelu.
Návratová hodnota
Nenulové, pokud existoval řídicí panel; jinak 0.
CFrameWnd::OnContextHelp
Zpracovává nápovědu SHIFT+F1 pro místní položky.
afx_msg void OnContextHelp();
Poznámky
Pokud chcete povolit nápovědu citlivou na kontext, musíte přidat
ON_COMMAND(ID_CONTEXT_HELP, &CMainFrame::OnContextHelp)
příkazem k CFrameWnd
mapě zpráv třídy a také přidejte položku akcelerátor-tabulka, obvykle SHIFT+F1, aby bylo možné tuto členovou funkci povolit.
Pokud je vaše aplikace kontejner OLE, OnContextHelp
umístí všechny místní položky obsažené v rámci objektu okna rámečku do režimu nápovědy. Kurzor se změní na šipku a otazník a uživatel pak může ukazatel myši přesunout a stisknutím levého tlačítka myši vybrat dialogové okno, okno, nabídku nebo příkazové tlačítko. Tato členová funkce volá funkci WinHelp
Windows s kontextem nápovědy objektu pod kurzorem.
CFrameWnd::OnCreateClient
Volal rámec během provádění .OnCreate
virtual BOOL OnCreateClient(
LPCREATESTRUCT lpcs,
CCreateContext* pContext);
Parametry
lpcs
Ukazatel na strukturu Windows CREATESTRUCT
.
pContext
Ukazatel na CCreateContext
strukturu.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Tuto funkci nikdy nevolejte.
Výchozí implementace této funkce vytvoří CView
objekt z informací uvedených v pContext
, pokud je to možné.
Tuto funkci přepište tak, aby přepsaly hodnoty předané v objektu CCreateContext
nebo aby se změnil způsob vytvoření ovládacích prvků v hlavní klientské oblasti okna rámečku. Členy CCreateContext
, které můžete přepsat, jsou popsány ve CCreateContext
třídě.
Poznámka:
Nenahrazovat hodnoty předané ve struktuře CREATESTRUCT
. Jsou určené pouze pro informační použití. Pokud chcete přepsat počáteční obdélník okna, například přepsat člen funkce CWnd
PreCreateWindow
.
CFrameWnd::OnHideMenuBar
Tato funkce se volá, když se systém chystá skrýt řádek nabídek v aktuální aplikaci MFC.
virtual void OnHideMenuBar();
Poznámky
Tato obslužná rutina události umožňuje aplikaci provádět vlastní akce, když se systém chystá skrýt nabídku. Nemůžete zabránit skrytí nabídky, ale můžete například volat jiné metody pro načtení stylu nebo stavu nabídky.
CFrameWnd::OnSetPreviewMode
Voláním této členské funkce nastavíte okno hlavního rámce aplikace do režimu náhledu tisku a z režimu náhledu.
virtual void OnSetPreviewMode(
BOOL bPreview,
CPrintPreviewState* pState);
Parametry
bPreview
Určuje, jestli se má aplikace umístit do režimu náhledu tisku. Pokud chcete režim náhledu zrušit, FALSE
nastavte ho na TRUE
místo v náhledu.
pState
Ukazatel na CPrintPreviewState
strukturu.
Poznámky
Výchozí implementace zakáže všechny standardní panely nástrojů a skryje hlavní nabídku a hlavní okno klienta. Tím se okna s rámečkem MDI změní na dočasná okna s rámečkem SDI.
Přepsat tuto členovou funkci tak, aby při tisku přizpůsobil skrytí a zobrazení řídicích pruhů a dalších částí oken rámečku. Volání implementace základní třídy z přepsáné verze.
CFrameWnd::OnShowMenuBar
Tato funkce se volá, když se systém chystá zobrazit řádek nabídek v aktuální aplikaci MFC.
virtual void OnShowMenuBar();
Poznámky
Tato obslužná rutina události umožňuje aplikaci provádět vlastní akce při zobrazení nabídky. Zobrazení nabídky nelze zabránit, ale můžete například volat jiné metody pro načtení stylu nebo stavu nabídky.
CFrameWnd::OnUpdateControlBarMenu
Volá se rozhraním při aktualizaci přidružené nabídky.
afx_msg void OnUpdateControlBarMenu(CCmdUI* pCmdUI);
Parametry
pCmdUI
Ukazatel na CCmdUI
objekt představující nabídku, která vygenerovala příkaz update. Obslužná rutina aktualizace volá Enable
členské funkce objektu CCmdUI
prostřednictvím pCmdUI
aktualizace uživatelského rozhraní.
CFrameWnd::RecalcLayout
Volá se podle architektury, když jsou standardní řídicí pruhy zapnuté nebo vypnuté nebo když je okno rámečku změněno.
virtual void RecalcLayout(BOOL bNotify = TRUE);
Parametry
bNotify
Určuje, zda aktivní místní položka pro okno rámečku obdrží oznámení o změně rozložení. Je-li TRUE
položka oznámena; jinak FALSE
.
Poznámky
Výchozí implementace této členské funkce volá CWnd
členskou funkci RepositionBars
, která přemísťuje všechny řídicí pruhy v rámci i v hlavním okně klienta (obvykle a CView
nebo MDICLIENT
).
Tuto členovou funkci přepište, aby se po změně rozložení okna rámečku řídil vzhled a chování řídicích pruhů. Můžete ho například volat, když zapnete nebo vypnete ovládací panely nebo přidáte další ovládací panel.
CFrameWnd::rectDefault
Tuto statickou CRect
funkci předejte jako parametr při vytváření okna, aby systém Windows mohl zvolit počáteční velikost a umístění okna.
static AFX_DATA const CRect rectDefault;
CFrameWnd::SaveBarState
Voláním této funkce uložíte informace o jednotlivých ovládacích panelech vlastněných oknem rámečku.
void SaveBarState(LPCTSTR lpszProfileName) const;
Parametry
lpszProfileName
Název oddílu v inicializačním souboru nebo klíči v registru Windows, kde jsou uloženy informace o stavu.
Poznámky
Tyto informace lze číst ze souboru inicializace pomocí LoadBarState
. Uložené informace zahrnují viditelnost, vodorovnou/svislou orientaci, stav ukotvení a umístění ovládacího panelu.
CFrameWnd::SetActivePreviewView
Určuje zadané zobrazení jako aktivní zobrazení pro verzi Rich Preview.
void SetActivePreviewView(CView* pViewNew);
Parametry
pViewNew
Ukazatel na zobrazení, které se má aktivovat.
Poznámky
CFrameWnd::SetActiveView
Voláním této členské funkce nastavíte aktivní zobrazení.
void SetActiveView(
CView* pViewNew,
BOOL bNotify = TRUE);
Parametry
pViewNew
Určuje ukazatel na CView
objekt nebo NULL
pro žádné aktivní zobrazení.
bNotify
Určuje, jestli má být zobrazení upozorněno na aktivaci. OnActivateView
Je-li TRUE
volána pro nové zobrazení; pokud FALSE
, není.
Poznámky
Architektura bude tuto funkci volat automaticky, protože uživatel změní fokus na zobrazení v okně rámce. Můžete explicitně volat SetActiveView
, abyste změnili fokus na zadané zobrazení.
CFrameWnd::SetDockState
Voláním této členské funkce použijete informace o stavu uložené v objektu CDockState
na ovládací panely okna rámečku.
void SetDockState(const CDockState& state);
Parametry
state
Použijte uložený stav na ovládací panely okna rámečku.
Poznámky
Pokud chcete obnovit předchozí stav řídicích pruhů, můžete uložený stav načíst pomocí CDockState::LoadState
Serialize
ovládacího panelu okna rámečku nebo ho použít SetDockState
. Předchozí stav je uložen v objektu CDockState
s GetDockState
CFrameWnd::SetMenuBarState
Nastaví stav zobrazení nabídky v aktuální aplikaci MFC na skrytou nebo zobrazenou.
virtual BOOL SetMenuBarState(DWORD nState);
Parametry
nState
[v] Určuje, zda se má nabídka zobrazit nebo skrýt. Parametr nState
může mít následující hodnoty:
AFX_MBS_VISIBLE
(0x01) – Zobrazí nabídku, pokud je skrytá, ale nemá žádný vliv, pokud je viditelná.AFX_MBS_HIDDEN
(0x02) – Skryje nabídku, pokud je viditelná, ale nemá žádný vliv, pokud je skrytá.
Návratová hodnota
TRUE
pokud tato metoda úspěšně změní stav nabídky; v opačném případě . FALSE
Poznámky
Pokud dojde k chybě za běhu, tato metoda provádí v režimu ladění a vyvolá výjimku odvozenou z CException
třídy.
CFrameWnd::SetMenuBarVisibility
Nastaví výchozí chování nabídky v aktuální aplikaci MFC tak, aby byla skrytá nebo viditelná.
virtual void SetMenuBarVisibility(DWORD nStyle);
Parametry
nStyle
[v] Určuje, jestli je nabídka ve výchozím nastavení skrytá, nebo je viditelná a má fokus. Parametr nStyle
může mít následující hodnoty:
AFX_MBV_KEEPVISIBLE
(0x01) – Nabídka se zobrazuje vždy a ve výchozím nastavení fokus neobsahuje.AFX_MBV_DISPLAYONFOCUS
(0x02) – nabídka je ve výchozím nastavení skrytá. Pokud je nabídka skrytá, stisknutím klávesy ALT zobrazte nabídku a dejte jí fokus. Pokud se nabídka zobrazí, stisknutím klávesy ALT nebo ESC nabídku skryjete.AFX_MBV_DISPLAYONFOCUS | AFX_MBV_DISPLAYONF10
(0x06) – nabídka je ve výchozím nastavení skrytá. Pokud je nabídka skrytá, stisknutím klávesy F10 zobrazte nabídku a dejte jí fokus. Pokud se nabídka zobrazí, stisknutím klávesy F10 přepněte fokus na nabídku nebo ji vypněte. Nabídka se zobrazí, dokud nestisknete klávesu ALT nebo ESC a skryjete ji.
Poznámky
Pokud hodnota parametru nStyle
není platná, tato metoda se uplatní v režimu ladění a vyvolá CInvalidArgException
v režimu release. V případě jiných chyb modulu runtime tato metoda uplatňuje v režimu ladění a vyvolá výjimku odvozenou z CException
třídy.
Tato metoda ovlivňuje stav nabídek v aplikacích napsaných pro Systém Windows Vista a novější.
CFrameWnd::SetMessageText
Voláním této funkce umístíte řetězec do stavového řádku s ID 0.
void SetMessageText(LPCTSTR lpszText);
void SetMessageText(UINT nID);
Parametry
lpszText
Odkazuje na řetězec, který se má umístit na stavový řádek.
nID
ID prostředku řetězce, který se má umístit na stavový řádek.
Poznámky
Obvykle se jedná o levé a nejdelší podokno stavového řádku.
CFrameWnd::SetProgressBarPosition
Nastaví aktuální pozici indikátoru průběhu Windows 7 zobrazeného na hlavním panelu.
void SetProgressBarPosition(int nProgressPos);
Parametry
nProgressPos
Určuje pozici, která se má nastavit. Musí být v rozsahu nastaveném parametrem SetProgressBarRange
.
Poznámky
CFrameWnd::SetProgressBarRange
Nastaví rozsah indikátoru průběhu Windows 7 zobrazeného na hlavním panelu.
void SetProgressBarRange(
int nRangeMin,
int nRangeMax);
Parametry
nRangeMin
Minimální hodnota.
nRangeMax
Maximální hodnota.
Poznámky
CFrameWnd::SetProgressBarState
Nastaví typ a stav indikátoru průběhu zobrazeného na tlačítku hlavního panelu.
void SetProgressBarState(TBPFLAG tbpFlags);
Parametry
tbpFlags
Označí příznak, který řídí aktuální stav tlačítka průběhu. Zadejte pouze jeden z následujících příznaků, protože všechny stavy se vzájemně vylučují: TBPF_NOPROGRESS
, TBPF_INDETERMINATE
, TBPF_NORMAL
, , TBPF_ERROR
. TBPF_PAUSED
Poznámky
CFrameWnd::SetTaskbarOverlayIcon
Přetíženo. Použije překryv na tlačítko hlavního panelu, které označuje stav aplikace nebo upozorní uživatele.
BOOL SetTaskbarOverlayIcon(
UINT nIDResource,
LPCTSTR lpcszDescr);
BOOL SetTaskbarOverlayIcon(
HICON hIcon,
LPCTSTR lpcszDescr);
Parametry
nIDResource
Určuje ID prostředku ikony, které se má použít jako překryv. Podrobnosti najdete v popisu hIcon
.
lpcszDescr
Ukazatel na řetězec, který poskytuje alternativní textovou verzi informací předávaných překrytím pro účely přístupnosti.
hIcon
Úchyt ikony, který se má použít jako překryv. Mělo by to být malá ikona, která měří 16 × 16 pixelů na 96 bodů na palec (dpi). Pokud se na tlačítko hlavního panelu už použije ikona překrytí, nahradí se stávající překrytí. Tato hodnota může být NULL
. NULL
Způsob zpracování hodnoty závisí na tom, jestli tlačítko hlavního panelu představuje jedno okno nebo skupinu oken. Je zodpovědností volající aplikace, aby se uvolnila hIcon
, když už ji nepotřebujete.
Návratová hodnota
TRUE
v případě úspěchu; FALSE
pokud je verze operačního systému menší než Windows 7 nebo pokud dojde k chybě při nastavování ikony.
Poznámky
CFrameWnd::SetTitle
Nastaví název objektu okna.
void SetTitle(LPCTSTR lpszTitle);
Parametry
lpszTitle
Ukazatel na řetězec znaků obsahující název objektu okna.
CFrameWnd::ShowControlBar
Voláním této členské funkce zobrazíte nebo skryjete ovládací panel.
void ShowControlBar(
CControlBar* pBar,
BOOL bShow,
BOOL bDelay);
Parametry
pBar
Ukazatel na ovládací panel, který se má zobrazit nebo skrýt.
bShow
Pokud TRUE
určuje, že se má zobrazit ovládací panel. Pokud FALSE
určuje, že ovládací panel má být skrytý.
bDelay
Pokud TRUE
, zpoždění zobrazení řídicího panelu. Pokud FALSE
, zobrazte ovládací panel okamžitě.
CFrameWnd::ShowOwnedWindows
Voláním této členské funkce zobrazíte všechna okna, která jsou potomky objektu CFrameWnd
.
void ShowOwnedWindows(BOOL bShow);
Parametry
bShow
Určuje, jestli se mají zobrazovat nebo skrývat vlastněná okna.
Viz také
CWnd
Třída
Graf hierarchie
CWnd
Třída
CMDIFrameWnd
Třída
CMDIChildWnd
Třída
CView
Třída
CDocTemplate
Třída
CRuntimeClass
Struktura