Sdílet prostřednictvím


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

Jméno popis
CFrameWnd::CFrameWnd CFrameWnd Vytvoří objekt.

Veřejné metody

Jméno 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

Jméno 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

Jméno 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 CreateLoadFrameje nutné vytvořit objekt okna rámce v haldě pomocí operátoru C++ new . Před voláním Createmůž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ů.

LoadFramevyžaduje méně argumentů než Createa místo toho načte většinu výchozích hodnot z prostředků, včetně popis rámce, 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ím CView::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á , OnHScrolla funkce , CWndjsou delegovány CFrameWndOnSetFocusoknem 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 popis 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ů. Okno CFrameWnd 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ědy LoadFrame , 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ů (pro OnClose a OnQueryEndSession).

  • 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 CFrameWndPostNcDestroy 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 CFrameWndtématu Rámová okna.

Hierarchie dědičnosti

CObject

CCmdTarget

CWnd

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::ShowWindowpř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 NULLpouž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.

Vrácená 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í.

Vrácená 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 CViewodvozena v rámci rámce. Po volání CreateViewje 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čku

  • AFX_IDW_DOCKBAR_BOTTOM Ukotvit na spodní stranu okna rámečku

  • AFX_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();

Vrácená 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();

Vrácená 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;

Vrácená 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.

Vrácená 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::LoadStateSerializenebo 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();

Vrácená 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();

Vrácená 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();

Vrácená 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;

Vrácená 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 TRUEoznačuje, že by měl být snímek viditelný a aktivní. Pokud FALSEse 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;

Vrácená 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;

Vrácená 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.

Vrácená 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 LoadBarStatezapsá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 = 1

  • borderRequest = 2

  • borderSet = 3

lpRectBorder
Ukazatel na RECT strukturu nebo CRect objekt, který určuje souřadnice ohraničení.

Vrácená 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.

Vrácená 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.

Vrácená 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 CWndPreCreateWindow.

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 TRUEpolož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 TRUEvolá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::LoadStateSerializeovlá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á.

Vrácená hodnota

TRUEpokud 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.

Vrácená 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 TRUEurčuje, že se má zobrazit ovládací panel. Pokud FALSEurč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 Struktury