次の方法で共有


CFrameWnd クラス

ウィンドウを管理するメンバーと共に、Windows のシングル ドキュメント インターフェイス (SDI: Single Document Interface) のオーバーラップ フレーム ウィンドウまたはポップアップ フレーム ウィンドウの機能を提供します。

構文

class CFrameWnd : public CWnd

メンバー

パブリック コンストラクター

名前 説明
CFrameWnd::CFrameWnd CFrameWnd オブジェクトを構築します。

パブリック メソッド

名前 説明
CFrameWnd::ActivateFrame フレームを表示し、ユーザーが使用できるようにします。
CFrameWnd::BeginModalState フレーム ウィンドウをモーダルに設定します。
CFrameWnd::Create CFrameWnd オブジェクトに関連付けられている Windows フレーム ウィンドウを作成して初期化する呼び出し。
CFrameWnd::CreateView CViewから派生していないフレーム内にビューを作成します。
CFrameWnd::DockControlBar コントロール バーをドッキングします。
CFrameWnd::EnableDocking コントロール バーをドッキングできるようにします。
CFrameWnd::EndModalState フレーム ウィンドウのモーダル状態を終了します。 BeginModalStateによって無効になっているすべてのウィンドウを有効にします。
CFrameWnd::FloatControlBar コントロール バーを浮動させます。
CFrameWnd::GetActiveDocument アクティブな CDocument オブジェクトを返します。
CFrameWnd::GetActiveFrame アクティブな CFrameWnd オブジェクトを返します。
CFrameWnd::GetActiveView アクティブな CView オブジェクトを返します。
CFrameWnd::GetControlBar コントロール バーを取得します。
CFrameWnd::GetDockState フレーム ウィンドウのドッキング状態を取得します。
CFrameWnd::GetMenuBarState 現在の MFC アプリケーションのメニューの表示状態を取得します。
CFrameWnd::GetMenuBarVisibility 現在の MFC アプリケーションのメニューの既定の動作が非表示か表示かを示します。
CFrameWnd::GetMessageBar フレーム ウィンドウに属しているステータス バーへのポインターを返します。
CFrameWnd::GetMessageString コマンド ID に対応するメッセージを取得します。
CFrameWnd::GetTitle 関連するコントロール バーのタイトルを取得します。
CFrameWnd::InitialUpdateFrame フレーム ウィンドウ内のすべてのビューに属する OnInitialUpdate メンバー関数を呼び出します。
CFrameWnd::InModalState フレーム ウィンドウがモーダル状態かどうかを示す値を返します。
CFrameWnd::IsTracking 分割バーが現在移動されているかどうかを判断します。
CFrameWnd::LoadAccelTable アクセラレータ テーブルを読み込む呼び出し。
CFrameWnd::LoadBarState コントロール バーの設定を復元する呼び出し。
CFrameWnd::LoadFrame リソース情報からフレーム ウィンドウを動的に作成する呼び出し。
CFrameWnd::NegotiateBorderSpace フレーム ウィンドウ内の境界線スペースをネゴシエートします。
CFrameWnd::OnBarCheck 指定したコントロール バーでアクションが実行されるたびに呼び出されます。
CFrameWnd::OnContextHelp インプレースアイテムの Shift + F1 ヘルプを処理します。
CFrameWnd::OnSetPreviewMode アプリケーションのメイン フレーム ウィンドウを印刷プレビュー モードに、または印刷プレビュー モードから切り替えます。
CFrameWnd::OnUpdateControlBarMenu 関連付けられたメニューが更新されたときにフレームワークによって呼び出されます。
CFrameWnd::RecalcLayout CFrameWnd オブジェクトのコントロール バーの位置を変更します。
CFrameWnd::SaveBarState コントロール バーの設定を保存する呼び出し。
CFrameWnd::SetActivePreviewView 指定したビューをリッチ プレビューのアクティブ ビューに指定します。
CFrameWnd::SetActiveView アクティブな CView オブジェクトを設定します。
CFrameWnd::SetDockState メイン ウィンドウにフレーム ウィンドウをドッキングする呼び出し。
CFrameWnd::SetMenuBarState 現在の MFC アプリケーションのメニューの表示状態を非表示または表示に設定します。
CFrameWnd::SetMenuBarVisibility 現在の MFC アプリケーションのメニューの既定の動作を非表示または表示に設定します。
CFrameWnd::SetMessageText 標準ステータス バーのテキストを設定します。
CFrameWnd::SetProgressBarPosition タスク バーに表示される Windows 7 進行状況バーの現在位置を設定します。
CFrameWnd::SetProgressBarRange タスク バーに表示される Windows 7 進行状況バーの範囲を設定します。
CFrameWnd::SetProgressBarState タスク バー ボタンに表示される進行状況インジケーターの種類と状態を設定します。
CFrameWnd::SetTaskbarOverlayIcon 過負荷です。 タスク バー ボタンにオーバーレイを適用して、アプリケーションの状態または通知をユーザーに示します。
CFrameWnd::SetTitle 関連するコントロール バーのタイトルを設定します。
CFrameWnd::ShowControlBar コントロール バーを表示する呼び出し。
CFrameWnd::ShowOwnedWindows CFrameWnd オブジェクトの子孫であるすべてのウィンドウを表示します。

保護メソッド

名前 説明
CFrameWnd::OnCreateClient フレームのクライアント ウィンドウを作成します。
CFrameWnd::OnHideMenuBar 現在の MFC アプリケーションのメニューが非表示の前に呼び出されます。
CFrameWnd::OnShowMenuBar 現在の MFC アプリケーションのメニューが表示される前に呼び出されます。

パブリック データ メンバー

名前 説明
CFrameWnd::m_bAutoMenuEnable メニュー項目の自動有効化および無効化機能を制御します。
CFrameWnd::rectDefault windows がウィンドウの初期サイズと位置を選択できるように、CFrameWnd オブジェクトを作成するときに、この静的なCRectをパラメーターとして渡します。

解説

アプリケーションの便利なフレーム ウィンドウを作成するには、 CFrameWndからクラスを派生させます。 派生クラスにメンバー変数を追加して、アプリケーションに固有のデータを格納します。 ウィンドウにメッセージが送られたときに行われる処理を指定するには、派生クラスにメッセージ処理メンバー関数とメッセージ マップを実装します。

フレーム ウィンドウを構築するには、次の 3 つの方法があります。

  • Createを使用して直接構築します。

  • LoadFrameを使用して直接構築します。

  • ドキュメント テンプレートを使用して間接的に構築します。

CreateまたはLoadFrameを呼び出す前に、C++ new 演算子を使用して、ヒープ上にフレーム ウィンドウ オブジェクトを構築する必要があります。 Createを呼び出す前に、ウィンドウ クラスを AfxRegisterWndClass グローバル関数に登録して、フレームのアイコンとクラス スタイルを設定することもできます。

Create メンバー関数を使用して、フレームの作成パラメーターを即時引数として渡します。

LoadFrame は、 Createよりも少ない引数を必要とします。代わりに、フレームのキャプション、アイコン、アクセラレータ テーブル、メニューなど、リソースから既定値の大部分を取得します。 LoadFrameがアクセスできるようにするには、これらすべてのリソースに同じリソース ID (IDR_MAINFRAME など) が必要です。

CFrameWnd オブジェクトにビューとドキュメントが含まれている場合、プログラマが直接作成するのではなく、フレームワークによって間接的に作成されます。 CDocTemplate オブジェクトは、フレームの作成、含まれているビューの作成、および適切なドキュメントへのビューの接続を調整します。 CDocTemplate コンストラクターのパラメーターは、関係する 3 つのクラス (ドキュメント、フレーム、ビュー) のCRuntimeClassを指定します。 CRuntimeClass オブジェクトは、ユーザーが指定した場合に新しいフレームを動的に作成するためにフレームワークによって使用されます (たとえば、File New コマンドまたは複数ドキュメント インターフェイス (MDI) Window New コマンドを使用)。

上記のRUNTIME_CLASSメカニズムが正しく機能するためには、CFrameWndから派生したフレーム ウィンドウ クラスをDECLARE_DYNCREATEで宣言する必要があります。

CFrameWndには、Windows 用の一般的なアプリケーションでメイン ウィンドウの次の機能を実行するための既定の実装が含まれています。

  • CFrameWndフレーム ウィンドウでは、Windows のアクティブ ウィンドウまたは現在の入力フォーカスに関係なく、現在アクティブなビューが追跡されます。 フレームが再アクティブ化されると、 CView::OnActivateViewを呼び出すことによってアクティブなビューに通知されます。

  • コマンド メッセージと、CWndOnSetFocusOnHScrollOnVScroll関数によって処理されるメッセージなど、多くの一般的なフレーム通知メッセージは、CFrameWnd フレーム ウィンドウによって現在アクティブなビューに委任されます。

  • 現在アクティブなビュー (または MDI フレームの場合は現在アクティブな MDI 子フレーム ウィンドウ) は、フレーム ウィンドウのキャプションを決定できます。 この機能は、フレーム ウィンドウの FWS_ADDTOTITLE スタイル ビットをオフにすることで無効にすることができます。

  • CFrameWnd フレーム ウィンドウは、コントロール バー、ビュー、およびフレーム ウィンドウのクライアント領域内のその他の子ウィンドウの位置を管理します。 フレーム ウィンドウでは、ツール バーやその他のコントロール バー ボタンのアイドル時間更新も行われます。 CFrameWnd フレーム ウィンドウには、ツール バーとステータス バーを切り替えるコマンドの既定の実装もあります。

  • CFrameWndフレーム ウィンドウは、メイン メニュー バーを管理します。 ポップアップ メニューが表示されると、フレーム ウィンドウは UPDATE_COMMAND_UI メカニズムを使用して、有効、無効、またはチェックする必要があるメニュー項目を決定します。 ユーザーがメニュー項目を選択すると、フレーム ウィンドウはそのコマンドのメッセージ文字列でステータス バーを更新します。

  • CFrameWnd フレーム ウィンドウには、キーボード アクセラレータを自動的に変換する省略可能なアクセラレータ テーブルがあります。

  • CFrameWnd フレーム ウィンドウには、状況依存のヘルプに使用されるLoadFrameで設定されたオプションのヘルプ ID があります。 フレーム ウィンドウは、状況依存のヘルプ (Shift + F1) や印刷プレビュー モードなどの半モーダル状態のメイン オーケストレーターです。

  • CFrameWndフレーム ウィンドウは、ファイル マネージャーからドラッグしてフレーム ウィンドウにドロップされたファイルを開きます。 ファイル拡張子が登録され、アプリケーションに関連付けられている場合、フレーム ウィンドウは、ユーザーがファイル マネージャーでデータ ファイルを開いたとき、または ShellExecute Windows 関数が呼び出されたときに発生する動的データ交換 (DDE) オープン要求に応答します。

  • フレーム ウィンドウがメイン アプリケーション ウィンドウ (つまり、 CWinThread::m_pMainWnd) の場合、ユーザーがアプリケーションを閉じると、フレーム ウィンドウは変更されたドキュメント ( OnCloseOnQueryEndSession用) を保存するようにユーザーに求めます。

  • フレーム ウィンドウがメイン アプリケーション ウィンドウの場合、フレーム ウィンドウは WinHelp を実行するためのコンテキストです。 フレーム ウィンドウを閉じると、このアプリケーションのヘルプ WINHELP.EXE 起動された場合はシャットダウンされます。

C++ delete 演算子を使用してフレーム ウィンドウを破棄しないでください。 代わりに CWnd::DestroyWindow を使用してください PostNcDestroyCFrameWnd実装では、ウィンドウが破棄されたときに C++ オブジェクトが削除されます。 ユーザーがフレーム ウィンドウを閉じると、既定の OnClose ハンドラーは DestroyWindowを呼び出します。

CFrameWndの詳細については、「Frame Windows」を参照してください。

継承階層

CObject

CCmdTarget

CWnd

CFrameWnd

要件

ヘッダー: afxwin.h

CFrameWnd::ActivateFrame

このメンバー関数を呼び出して、フレーム ウィンドウをアクティブ化し、ユーザーが表示して使用できるように復元します。

virtual void ActivateFrame(int nCmdShow = -1);

パラメーター

nCmdShow
CWnd::ShowWindowに渡すパラメーターを指定します。 既定では、フレームが表示され、正しく復元されます。

解説

このメンバー関数は、通常、DDE、OLE、またはフレーム ウィンドウまたはその内容をユーザーに表示する可能性がある他のイベントなどのユーザー インターフェイス以外のイベントの後に呼び出されます。

既定の実装では、フレームがアクティブ化され、Z オーダーの先頭に移動され、必要に応じて、アプリケーションのメイン フレーム ウィンドウに対して同じ手順が実行されます。

フレームのアクティブ化方法を変更するには、このメンバー関数をオーバーライドします。 たとえば、MDI 子ウィンドウを強制的に最大化できます。 適切な機能を追加し、明示的な nCmdShowを使用して基底クラスのバージョンを呼び出します。

void CChildFrame::ActivateFrame(int nCmdShow)
{
   // Create the child frame window maximized
   nCmdShow = SW_MAXIMIZE;

   CMDIChildWnd::ActivateFrame(nCmdShow);
}

CFrameWnd::BeginModalState

フレーム ウィンドウをモーダルにします。

virtual void BeginModalState();

CFrameWnd::CFrameWnd

CFrameWnd オブジェクトを作成しますが、表示されるフレーム ウィンドウは作成しません。

CFrameWnd();

解説

Createを呼び出して、表示されるウィンドウを作成します。

CFrameWnd::Create

CFrameWnd オブジェクトに関連付けられている Windows フレーム ウィンドウを作成して初期化する呼び出し。

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);

パラメーター

lpszClassName
Windows クラスに名前を付ける null で終わる文字列を指します。 クラス名には、 AfxRegisterWndClass グローバル関数または RegisterClass Windows 関数に登録されている任意の名前を指定できます。 NULL場合は、定義済みの既定のCFrameWnd属性を使用します。

lpszWindowName
ウィンドウ名を表す null で終わる文字列を指します。 タイトル バーのテキストとして使用されます。

dwStyle
ウィンドウの style 属性を指定します。 タイトル バーにウィンドウで表されるドキュメントの名前を自動的に表示する場合は、 FWS_ADDTOTITLE スタイルを含めます。

rect
ウィンドウのサイズと位置を指定します。 rectDefault値を使用すると、Windows は新しいウィンドウのサイズと位置を指定できます。

pParentWnd
このフレーム ウィンドウの親ウィンドウを指定します。 このパラメーターは、最上位レベルのフレーム ウィンドウに対して NULL する必要があります。

lpszMenuName
ウィンドウで使用するメニュー リソースの名前を識別します。 メニューに文字列ではなく整数 ID がある場合は、 MAKEINTRESOURCE を使用します。 このパラメーターは、NULL に設定できます。

dwExStyle
ウィンドウ拡張 style 属性を指定します。

pContext
CCreateContext構造体へのポインターを指定します。 このパラメーターは、NULL に設定できます。

戻り値

初期化が成功した場合は 0 以外。それ以外の場合は 0。

解説

2 つの手順で CFrameWnd オブジェクトを構築します。 まず、 CFrameWnd オブジェクトを構築するコンストラクターを呼び出し、 Createを呼び出します。これにより、Windows フレーム ウィンドウが作成され、 CFrameWnd オブジェクトにアタッチされます。 Create は、ウィンドウのクラス名とウィンドウ名を初期化し、そのスタイル、親、および関連付けられているメニューの既定値を登録します。

CreateではなくLoadFrameを使用して、引数を指定するのではなく、リソースからフレーム ウィンドウを読み込みます。

CFrameWnd::CreateView

CreateViewを呼び出して、フレーム内にビューを作成します。

CWnd* CreateView(
    CCreateContext* pContext,
    UINT nID = AFX_IDW_PANE_FIRST);

パラメーター

pContext
ビューとドキュメントの種類を指定します。

nID
ビューの ID 番号。

戻り値

成功した場合は CWnd オブジェクトへのポインター。それ以外の場合は NULL

解説

このメンバー関数を使用して、フレーム内で CView派生していない "ビュー" を作成します。 CreateViewを呼び出した後、ビューを手動でアクティブに設定し、表示されるように設定する必要があります。これらのタスクは、CreateViewによって自動的に実行されません。

CFrameWnd::DockControlBar

コントロール バーをフレーム ウィンドウにドッキングします。

void DockControlBar(
    CControlBar* pBar,
    UINT nDockBarID = 0,
    LPCRECT lpRect = NULL);

パラメーター

pBar
ドッキングするコントロール バーをポイントします。

nDockBarID
ドッキングに考慮するフレーム ウィンドウの辺を決定します。 0 または次の 1 つ以上を指定できます。

  • AFX_IDW_DOCKBAR_TOP フレーム ウィンドウの上部にドッキングします。

  • AFX_IDW_DOCKBAR_BOTTOM フレーム ウィンドウの下部にドッキングします。

  • AFX_IDW_DOCKBAR_LEFT フレーム ウィンドウの左側にドッキングします。

  • AFX_IDW_DOCKBAR_RIGHT フレーム ウィンドウの右側にドッキングします。

0 の場合、コントロール バーは、移動先フレーム ウィンドウでのドッキングが有効になっている任意の側にドッキングできます。

lpRect
コントロール バーが移動先フレーム ウィンドウの非クライアント領域にドッキングされる位置を画面座標で指定します。

解説

コントロール バーは、 CControlBar::EnableDockingCFrameWnd::EnableDockingの両方の呼び出しで指定されたフレーム ウィンドウの側面のいずれかにドッキングされます。 選択された側は、 nDockBarIDによって決定されます。

CFrameWnd::EnableDocking

フレーム ウィンドウでドッキング可能なコントロール バーを有効にするには、この関数を呼び出します。

void EnableDocking(DWORD dwDockStyle);

パラメーター

dwDockStyle
コントロール バーのドッキング サイトとして機能できるフレーム ウィンドウの辺を指定します。 次の 1 つ以上を指定できます。

  • CBRS_ALIGN_TOP クライアント領域の上部にドッキングできるようにします。

  • CBRS_ALIGN_BOTTOM クライアント領域の下部にドッキングできるようにします。

  • CBRS_ALIGN_LEFT クライアント領域の左側にドッキングできるようにします。

  • CBRS_ALIGN_RIGHT クライアント領域の右側にドッキングできるようにします。

  • CBRS_ALIGN_ANY クライアント領域の任意の側にドッキングできるようにします。

解説

既定では、コントロール バーは、上、下、左、右の順序でフレーム ウィンドウの側面にドッキングされます。

CToolBar::Create の例を参照してください。

CFrameWnd::EndModalState

フレーム ウィンドウをモーダルからモードレスに変更します。

virtual void EndModalState();

解説

EndModalState では、 BeginModalStateによってすべてのウィンドウが無効になります。

CFrameWnd::FloatControlBar

コントロール バーをフレーム ウィンドウにドッキングしないようにするには、この関数を呼び出します。

void FloatControlBar(
    CControlBar* pBar,
    CPoint point,
    DWORD dwStyle = CBRS_ALIGN_TOP);

パラメーター

pBar
浮動するコントロール バーをポイントします。

point
コントロール バーの左上隅を配置する位置 (画面座標)。

dwStyle
コントロール バーを新しいフレーム ウィンドウ内で水平方向または垂直方向に配置するかどうかを指定します。 次のいずれかになります。

  • CBRS_ALIGN_TOP コントロール バーの方向を垂直方向に設定します。

  • CBRS_ALIGN_BOTTOM コントロール バーの方向を垂直方向に設定します。

  • CBRS_ALIGN_LEFT コントロール バーの向きを水平方向に設定します。

  • CBRS_ALIGN_RIGHT コントロール バーの向きを水平方向に設定します。

水平方向と垂直方向の両方を指定してスタイルを渡すと、ツール バーの方向が水平方向になります。

解説

通常、これは、プログラムが前回の実行から設定を復元するときに、アプリケーションの起動時に行われます。

この関数は、ドッキングできない場所にコントロール バーをドラッグしながらマウスの左ボタンを離してドロップ操作を実行すると、フレームワークによって呼び出されます。

CFrameWnd::GetActiveDocument

現在アクティブなビューにアタッチされている現在の CDocument へのポインターを取得するには、このメンバー関数を呼び出します。

virtual CDocument* GetActiveDocument();

戻り値

現在の CDocumentへのポインター。 現在のドキュメントがない場合は、 NULLを返します。

CFrameWnd::GetActiveFrame

このメンバー関数を呼び出して、MDI フレーム ウィンドウのアクティブな複数ドキュメント インターフェイス (MDI) 子ウィンドウへのポインターを取得します。

virtual CFrameWnd* GetActiveFrame();

戻り値

アクティブな MDI 子ウィンドウへのポインター。 アプリケーションが SDI アプリケーションの場合、または MDI フレーム ウィンドウにアクティブなドキュメントがない場合は、暗黙的な this ポインターが返されます。

解説

アクティブな MDI 子がない場合、またはアプリケーションが単一ドキュメント インターフェイス (SDI) の場合は、暗黙的な this ポインターが返されます。

CFrameWnd::GetActiveView

フレーム ウィンドウ ( CFrameWnd) にアタッチされているアクティブなビュー (存在する場合) へのポインターを取得するには、このメンバー関数を呼び出します。

CView* GetActiveView() const;

戻り値

現在の CViewへのポインター。 現在のビューがない場合は、 NULLを返します。

解説

この関数は、MDI メイン フレーム ウィンドウ (CMDIFrameWnd) に対して呼び出されたときにNULLを返します。 MDI アプリケーションでは、MDI メイン フレーム ウィンドウにビューが関連付けされていません。 代わりに、個々の子ウィンドウ ( CMDIChildWnd) には、1 つ以上の関連付けられたビューがあります。 MDI アプリケーションのアクティブなビューは、最初にアクティブな MDI 子ウィンドウを見つけてから、その子ウィンドウのアクティブなビューを見つけることで取得できます。 アクティブな MDI 子ウィンドウは、次に示すように、関数 MDIGetActive または GetActiveFrame を呼び出すことによって見つけることができます。

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

GetControlBarを呼び出して、ID に関連付けられているコントロール バーにアクセスします。

CControlBar* GetControlBar(UINT nID);

パラメーター

nID
コントロール バーの ID 番号。

戻り値

ID に関連付けられているコントロール バーへのポインター。

解説

nID パラメーターは、コントロール バーのCreate メソッドに渡される一意の識別子を参照します。 コントロール バーの詳細については、「 コントロール バー」を参照してください。

GetControlBar は、コントロール バーが浮動していて、現在はフレームの子ウィンドウではない場合でも、コントロール バーを返します。

CFrameWnd::GetDockState

フレーム ウィンドウのコントロール バーに関する状態情報を CDockState オブジェクトに格納するには、このメンバー関数を呼び出します。

void GetDockState(CDockState& state) const;

パラメーター

state
返されたフレーム ウィンドウのコントロール バーの現在の状態を格納します。

解説

その後、CDockState::SaveStateまたはSerializeを使用して、CDockStateの内容をストレージに書き込むことができます。 後でコントロール バーを前の状態に戻す場合は、 CDockState::LoadState または Serializeで状態を読み込み、 SetDockState 呼び出して、フレーム ウィンドウのコントロール バーに前の状態を適用します。

CFrameWnd::GetMenuBarState

現在の MFC アプリケーションのメニューの表示状態を取得します。

virtual DWORD GetMenuBarState();

戻り値

戻り値には、次の値を指定できます。

  • AFX_MBS_VISIBLE (0x01) - メニューが表示されます。

  • AFX_MBS_HIDDEN (0x02) - メニューは非表示です。

解説

ランタイム エラーが発生した場合、このメソッドはデバッグ モードでアサートし、 CException クラスから派生した例外を発生させます。

CFrameWnd::GetMenuBarVisibility

現在の MFC アプリケーションのメニューの既定の状態を非表示にするか表示するかを示します。

virtual DWORD CFrameWnd::GetMenuBarVisibility();

戻り値

このメソッドは、次のいずれかの値を返します。

  • AFX_MBV_KEEPVISIBLE (0x01) - メニューは常に表示され、既定ではフォーカスがありません。

  • AFX_MBV_DISPLAYONFOCUS (0x02) - メニューは既定で非表示になっています。 メニューが非表示の場合は、Alt キーを押してメニューを表示し、フォーカスを設定します。 メニューが表示されている場合は、Alt キーまたは Esc キーを押して非表示にします。

  • AFX_MBV_ DISPLAYONFOCUS | AFX_MBV_DISPLAYONF10 (0x06) - メニューは既定で非表示になっています。 メニューが非表示の場合は、F10 キーを押してメニューを表示し、フォーカスを設定します。 メニューが表示されている場合は、F10 キーを押してメニューのフォーカスのオンとオフを切り替えます。 メニューは、Alt キーまたは Esc キーを押して非表示にするまで表示されます。

解説

ランタイム エラーが発生した場合、このメソッドはデバッグ モードでアサートし、 CException クラスから派生した例外を発生させます。

CFrameWnd::GetMessageBar

このメンバー関数を呼び出して、ステータス バーへのポインターを取得します。

virtual CWnd* GetMessageBar();

戻り値

ステータス バー ウィンドウへのポインター。

CFrameWnd::GetMessageString

コマンド ID にカスタム文字列を指定するには、この関数をオーバーライドします。

virtual void GetMessageString(
    UINT nID,
    CString& rMessage) const;

パラメーター

nID
目的のメッセージのリソース ID。

rMessage
CString メッセージを配置するオブジェクト。

解説

既定の実装では、リソース ファイルから nID で指定された文字列を読み込むだけです。 この関数は、ステータス バーのメッセージ文字列を更新する必要がある場合に、フレームワークによって呼び出されます。

CFrameWnd::GetTitle

ウィンドウ オブジェクトのタイトルを取得します。

CString GetTitle() const;

戻り値

ウィンドウ オブジェクトの現在のタイトルを含む CString オブジェクト。

CFrameWnd::InitialUpdateFrame

Createを使用して新しいフレームを作成した後、IntitialUpdateFrameを呼び出します。

void InitialUpdateFrame(
    CDocument* pDoc,
    BOOL bMakeVisible);

パラメーター

pDoc
フレーム ウィンドウが関連付けられているドキュメントを指します。 NULL の可能性があります。

bMakeVisible
TRUE場合は、フレームが表示され、アクティブになることを示します。 FALSE場合、子孫は表示されません。

解説

これにより、そのフレーム ウィンドウ内のすべてのビューが OnInitialUpdate 呼び出しを受信します。

また、以前にアクティブなビューがなかった場合は、フレーム ウィンドウのプライマリ ビューがアクティブになります。 プライマリ ビューは、子 ID が AFX_IDW_PANE_FIRST のビューです。 最後に、 bMakeVisible が 0 以外の場合、フレーム ウィンドウが表示されます。 bMakeVisibleが 0 の場合、フレーム ウィンドウの現在のフォーカスと表示状態は変更されません。 フレームワークの File New および File Open の実装を使用する場合は、この関数を呼び出す必要はありません。

CFrameWnd::InModalState

フレーム ウィンドウがモーダルまたはモードレスかどうかを確認するには、このメンバー関数を呼び出します。

BOOL InModalState() const;

戻り値

yes の場合は 0 以外。それ以外の場合は 0。

CFrameWnd::IsTracking

このメンバー関数を呼び出して、ウィンドウ内の分割バーが現在移動されているかどうかを確認します。

BOOL IsTracking() const;

戻り値

分割操作が進行中の場合は 0 以外。それ以外の場合は 0。

CFrameWnd::LoadAccelTable

指定したアクセラレータ テーブルを読み込む呼び出し。

BOOL LoadAccelTable(LPCTSTR lpszResourceName);

パラメーター

lpszResourceName
アクセラレータ リソースの名前を識別します。 リソースが整数 ID で識別される場合は、 MAKEINTRESOURCE を使用します。

戻り値

アクセラレータ テーブルが正常に読み込まれた場合は 0 以外。それ以外の場合は 0。

解説

一度に読み込むことができるテーブルは 1 つだけです。

リソースから読み込まれたアクセラレータ テーブルは、アプリケーションが終了すると自動的に解放されます。

フレーム ウィンドウを作成するために LoadFrame を呼び出すと、フレームワークはメニューとアイコン リソースと共にアクセラレータ テーブルを読み込みます。その後、このメンバー関数の呼び出しは不要になります。

CFrameWnd::LoadBarState

フレーム ウィンドウが所有する各コントロール バーの設定を復元するには、この関数を呼び出します。

void LoadBarState(LPCTSTR lpszProfileName);

パラメーター

lpszProfileName
初期化 (INI) ファイル内のセクションの名前、または状態情報が格納されている Windows レジストリ内のキーの名前。

解説

復元される情報には、可視性、水平方向/垂直方向、ドッキング状態、およびコントロール バーの位置が含まれます。

LoadBarStateを呼び出す前に、復元する設定をレジストリに書き込む必要があります。 CWinApp::SetRegistryKeyを呼び出して、レジストリに情報を書き込みます。 SaveBarStateを呼び出して、INI ファイルに情報を書き込みます。

CFrameWnd::LoadFrame

リソース情報からフレーム ウィンドウを動的に作成する呼び出し。

virtual BOOL LoadFrame(
    UINT nIDResource,
    DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
    CWnd* pParentWnd = NULL,
    CCreateContext* pContext = NULL);

パラメーター

nIDResource
フレーム ウィンドウに関連付けられている共有リソースの ID。

dwDefaultStyle
フレームの スタイル。 タイトル バーにウィンドウで表されるドキュメントの名前を自動的に表示する場合は、 FWS_ADDTOTITLE スタイルを含めます。

pParentWnd
フレームの親へのポインター。

pContext
CCreateContext 構造体へのポインター。 このパラメーターは、NULL に設定できます。

解説

2 つの手順で CFrameWnd オブジェクトを構築します。 まず、 CFrameWnd オブジェクトを構築するコンストラクターを呼び出してから、 LoadFrameを呼び出します。これにより、Windows フレーム ウィンドウと関連するリソースが読み込まれ、フレーム ウィンドウが CFrameWnd オブジェクトにアタッチされます。 nIDResource パラメーターは、フレーム ウィンドウのタイトルのメニュー、アクセラレータ テーブル、アイコン、および文字列リソースを指定します。

フレーム ウィンドウのすべての作成パラメーターを指定する場合は、LoadFrameではなく、Createメンバー関数を使用します。

フレームワークは、ドキュメント テンプレート オブジェクトを使用してフレーム ウィンドウを作成するときに、 LoadFrame を呼び出します。

フレームワークでは、 pContext 引数を使用して、フレーム ウィンドウに接続するオブジェクト (含まれているビュー オブジェクトを含む) を指定します。 LoadFrameを呼び出すときに、pContext引数をNULLに設定できます。

CFrameWnd::m_bAutoMenuEnable

このデータ メンバーが有効になっている場合 (既定)、 ON_UPDATE_COMMAND_UI または ON_COMMAND ハンドラーがないメニュー項目は、ユーザーがメニューをプルダウンしたときに自動的に無効になります。

BOOL m_bAutoMenuEnable;

解説

ON_COMMAND ハンドラーがあるが、ON_UPDATE_COMMAND_UI ハンドラーがないメニュー項目は自動的に有効になります。

このデータ メンバーを設定すると、ツール バー ボタンが有効になっているのと同じ方法でメニュー項目が自動的に有効になります。

Note

m_bAutoMenuEnable は、トップレベルのメニュー項目には影響しません。

このデータ メンバーは、現在の選択に基づいて省略可能なコマンドの実装を簡略化し、メニュー項目を有効または無効にするための ON_UPDATE_COMMAND_UI ハンドラーを記述する必要性を減らします。

// 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

このメンバー関数を呼び出して、OLE インプレース アクティブ化中にフレーム ウィンドウ内の境界線スペースをネゴシエートします。

virtual BOOL NegotiateBorderSpace(
    UINT nBorderCmd,
    LPRECT lpRectBorder);

パラメーター

nBorderCmd
enum BorderCmdの次のいずれかの値が含まれています。

  • borderGet = 1

  • borderRequest = 2

  • borderSet = 3

lpRectBorder
RECT構造体または境界線の座標を指定するCRect オブジェクトへのポインター。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、OLE 罫線スペース ネゴシエーションの CFrameWnd 実装です。

CFrameWnd::OnBarCheck

指定したコントロール バーでアクションが実行されるたびに呼び出されます。

afx_msg BOOL OnBarCheck(UINT nID);

パラメーター

nID
表示されているコントロール バーの ID。

戻り値

コントロール バーが存在する場合は 0 以外。それ以外の場合は 0。

CFrameWnd::OnContextHelp

インプレースアイテムの Shift + F1 ヘルプを処理します。

afx_msg void OnContextHelp();

解説

状況依存のヘルプを有効にするには、次を追加する必要があります。

ON_COMMAND(ID_CONTEXT_HELP, &CMainFrame::OnContextHelp)

ステートメントを CFrameWnd クラス メッセージ マップに追加し、アクセラレータ テーブル エントリ (通常は Shift + F1) を追加して、このメンバー関数を有効にします。

アプリケーションが OLE コンテナーの場合、 OnContextHelp はフレーム ウィンドウ オブジェクトに含まれるすべてのインプレースアイテムをヘルプ モードにします。 カーソルが矢印と疑問符に変わり、ユーザーはマウス ポインターを移動し、マウスの左ボタンを押してダイアログ ボックス、ウィンドウ、メニュー、またはコマンド ボタンを選択できます。 このメンバー関数は、カーソルの下にあるオブジェクトのヘルプ コンテキストを使用して Windows 関数 WinHelp を呼び出します。

CFrameWnd::OnCreateClient

OnCreateの実行中にフレームワークによって呼び出されます。

virtual BOOL OnCreateClient(
    LPCREATESTRUCT lpcs,
    CCreateContext* pContext);

パラメーター

lpcs
Windows CREATESTRUCT 構造体へのポインター。

pContext
CCreateContext 構造体へのポインター。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

この関数は呼び出しません。

この関数の既定の実装では、可能であれば、pContextで提供される情報からCView オブジェクトが作成されます。

CCreateContext オブジェクトで渡された値をオーバーライドしたり、フレーム ウィンドウのメイン クライアント領域内のコントロールの作成方法を変更したりするには、この関数をオーバーライドします。 オーバーライドできる CCreateContext メンバーについては、 CCreateContext クラスで説明します。

Note

CREATESTRUCT構造体で渡された値は置き換えないでください。 これらは情報提供のみを目的としています。 たとえば、最初のウィンドウの四角形をオーバーライドする場合は、 CWnd メンバー関数 PreCreateWindowオーバーライドします。

CFrameWnd::OnHideMenuBar

この関数は、システムが現在の MFC アプリケーションのメニュー バーを非表示にしようとしているときに呼び出されます。

virtual void OnHideMenuBar();

解説

このイベント ハンドラーを使用すると、システムがメニューを非表示にしようとしているときに、アプリケーションでカスタム アクションを実行できます。 メニューが非表示にならないようにすることはできませんが、たとえば、他のメソッドを呼び出してメニューのスタイルや状態を取得できます。

CFrameWnd::OnSetPreviewMode

印刷プレビュー モードの内外にアプリケーションのメイン フレーム ウィンドウを設定するには、このメンバー関数を呼び出します。

virtual void OnSetPreviewMode(
    BOOL bPreview,
    CPrintPreviewState* pState);

パラメーター

bPreview
アプリケーションを印刷プレビュー モードにするかどうかを指定します。 印刷プレビューに配置する TRUE に設定 FALSE 、プレビュー モードを取り消します。

pState
CPrintPreviewState 構造体へのポインター。

解説

既定の実装では、すべての標準ツール バーが無効になり、メイン メニューとメイン クライアント ウィンドウが非表示になります。 これにより、MDI フレーム ウィンドウが一時的な SDI フレーム ウィンドウに変わります。

印刷プレビュー中にコントロール バーやその他のフレーム ウィンドウ パーツの非表示と表示をカスタマイズするには、このメンバー関数をオーバーライドします。 オーバーライドされたバージョン内から基底クラスの実装を呼び出します。

CFrameWnd::OnShowMenuBar

この関数は、システムが現在の MFC アプリケーションでメニュー バーを表示しようとしているときに呼び出されます。

virtual void OnShowMenuBar();

解説

このイベント ハンドラーを使用すると、メニューが表示されようとしているときに、アプリケーションでカスタム アクションを実行できます。 メニューが表示されないようにすることはできませんが、たとえば、他のメソッドを呼び出してメニューのスタイルや状態を取得できます。

CFrameWnd::OnUpdateControlBarMenu

関連付けられたメニューが更新されたときにフレームワークによって呼び出されます。

afx_msg void OnUpdateControlBarMenu(CCmdUI* pCmdUI);

パラメーター

pCmdUI
更新コマンドを生成したメニューを表す CCmdUI オブジェクトへのポインター。 更新ハンドラーは、pCmdUIを介してCCmdUI オブジェクトのEnable メンバー関数を呼び出して、ユーザー インターフェイスを更新します。

CFrameWnd::RecalcLayout

標準コントロール バーのオン/オフの切り替え時、またはフレーム ウィンドウのサイズ変更時にフレームワークによって呼び出されます。

virtual void RecalcLayout(BOOL bNotify = TRUE);

パラメーター

bNotify
フレーム ウィンドウのアクティブなインプレース項目がレイアウト変更の通知を受け取るかどうかを決定します。 TRUE場合はアイテムに通知されます。それ以外の場合はFALSE

解説

このメンバー関数の既定の実装では、 CWnd メンバー関数 RepositionBars を呼び出して、フレーム内のすべてのコントロール バーとメイン クライアント ウィンドウ (通常は CView または MDICLIENT) の位置を変更します。

フレーム ウィンドウのレイアウトが変更された後にコントロール バーの外観と動作を制御するには、このメンバー関数をオーバーライドします。 たとえば、コントロール バーをオンまたはオフにしたり、別のコントロール バーを追加したりするときに呼び出します。

CFrameWnd::rectDefault

ウィンドウを作成するときに、この静的 CRect をパラメーターとして渡して、Windows がウィンドウの初期サイズと位置を選択できるようにします。

static AFX_DATA const CRect rectDefault;

CFrameWnd::SaveBarState

フレーム ウィンドウが所有する各コントロール バーに関する情報を格納するには、この関数を呼び出します。

void SaveBarState(LPCTSTR lpszProfileName) const;

パラメーター

lpszProfileName
初期化ファイル内のセクションの名前、または状態情報が格納されている Windows レジストリのキー。

解説

この情報は、 LoadBarStateを使用して初期化ファイルから読み取ることができます。 格納される情報には、可視性、水平方向/垂直方向、ドッキング状態、コントロール バーの位置が含まれます。

CFrameWnd::SetActivePreviewView

指定したビューをリッチ プレビューのアクティブ ビューに指定します。

void SetActivePreviewView(CView* pViewNew);

パラメーター

pViewNew
アクティブ化するビューへのポインター。

解説

CFrameWnd::SetActiveView

アクティブなビューを設定するには、このメンバー関数を呼び出します。

void SetActiveView(
    CView* pViewNew,
    BOOL bNotify = TRUE);

パラメーター

pViewNew
CView オブジェクトへのポインター、またはアクティブなビューがない場合はNULLを指定します。

bNotify
アクティブ化をビューに通知するかどうかを指定します。 TRUE場合、OnActivateViewは新しいビューに対して呼び出されます。FALSE場合は呼び出されません。

解説

フレームワークは、ユーザーがフレーム ウィンドウ内のビューにフォーカスを変更すると、この関数を自動的に呼び出します。 SetActiveViewを明示的に呼び出して、指定したビューにフォーカスを変更できます。

CFrameWnd::SetDockState

このメンバー関数を呼び出して、 CDockState オブジェクトに格納されている状態情報をフレーム ウィンドウのコントロール バーに適用します。

void SetDockState(const CDockState& state);

パラメーター

state
格納された状態をフレーム ウィンドウのコントロール バーに適用します。

解説

コントロール バーの以前の状態を復元するには、 CDockState::LoadState または Serializeを使用して格納された状態を読み込み、 SetDockState を使用してフレーム ウィンドウのコントロール バーに適用できます。 以前の状態は、次の CDockState オブジェクトに格納されます。 GetDockState

CFrameWnd::SetMenuBarState

現在の MFC アプリケーションのメニューの表示状態を非表示または表示に設定します。

virtual BOOL SetMenuBarState(DWORD nState);

パラメーター

nState
[in]メニューを表示または非表示にするかどうかを指定します。 nState パラメーターには、次の値を指定できます。

  • AFX_MBS_VISIBLE (0x01) - メニューが非表示の場合は表示されますが、表示されている場合は効果がありません。
  • AFX_MBS_HIDDEN (0x02) - メニューが表示されている場合は非表示になりますが、非表示の場合は効果がありません。

戻り値

TRUE このメソッドがメニューの状態を正常に変更した場合。それ以外の場合は FALSE

解説

ランタイム エラーが発生した場合、このメソッドはデバッグ モードでアサートし、 CException クラスから派生した例外を発生させます。

CFrameWnd::SetMenuBarVisibility

現在の MFC アプリケーションのメニューの既定の動作を非表示または表示に設定します。

virtual void SetMenuBarVisibility(DWORD nStyle);

パラメーター

nStyle
[in]メニューが既定で非表示になっているか、表示されていてフォーカスがあるかを指定します。 nStyle パラメーターには、次の値を指定できます。

  • AFX_MBV_KEEPVISIBLE (0x01) - メニューは常に表示され、既定ではフォーカスがありません。

  • AFX_MBV_DISPLAYONFOCUS (0x02) - メニューは既定で非表示になっています。 メニューが非表示の場合は、Alt キーを押してメニューを表示し、フォーカスを設定します。 メニューが表示されている場合は、Alt キーまたは Esc キーを押してメニューを非表示にします。

  • AFX_MBV_DISPLAYONFOCUS | AFX_MBV_DISPLAYONF10 (0x06) - メニューは既定で非表示になっています。 メニューが非表示の場合は、F10 キーを押してメニューを表示し、フォーカスを設定します。 メニューが表示されている場合は、F10 キーを押してメニューのフォーカスのオンとオフを切り替えます。 メニューは、Alt キーまたは Esc キーを押して非表示にするまで表示されます。

解説

nStyle パラメーターの値が無効な場合、このメソッドはデバッグ モードでアサートし、リリース モードでCInvalidArgExceptionを発生させます。 他のランタイム エラーが発生した場合、このメソッドはデバッグ モードでアサートし、 CException クラスから派生した例外を発生させます。

このメソッドは、Windows Vista 以降用に記述されたアプリケーションのメニューの状態に影響します。

CFrameWnd::SetMessageText

ID が 0 のステータス バー ウィンドウに文字列を配置するには、この関数を呼び出します。

void SetMessageText(LPCTSTR lpszText);
void SetMessageText(UINT nID);

パラメーター

lpszText
ステータス バーに配置する文字列をポイントします。

nID
ステータス バーに配置する文字列の文字列リソース ID。

解説

これは通常、ステータス バーの左端と最も長いウィンドウです。

CFrameWnd::SetProgressBarPosition

タスク バーに表示される Windows 7 進行状況バーの現在位置を設定します。

void SetProgressBarPosition(int nProgressPos);

パラメーター

nProgressPos
設定する位置を指定します。 SetProgressBarRangeによって設定された範囲内である必要があります。

解説

CFrameWnd::SetProgressBarRange

タスク バーに表示される Windows 7 進行状況バーの範囲を設定します。

void SetProgressBarRange(
    int nRangeMin,
    int nRangeMax);

パラメーター

nRangeMin
最小値。

nRangeMax
最大値。

解説

CFrameWnd::SetProgressBarState

タスク バー ボタンに表示される進行状況インジケーターの種類と状態を設定します。

void SetProgressBarState(TBPFLAG tbpFlags);

パラメーター

tbpFlags
進行状況ボタンの現在の状態を制御するフラグ。 すべての状態が相互に排他的であるため、次のいずれかのフラグのみを指定します: TBPF_NOPROGRESSTBPF_INDETERMINATETBPF_NORMALTBPF_ERRORTBPF_PAUSED

解説

CFrameWnd::SetTaskbarOverlayIcon

過負荷です。 オーバーレイをタスク バー ボタンに適用して、アプリケーションの状態を示すか、ユーザーに通知します。

BOOL SetTaskbarOverlayIcon(
    UINT nIDResource,
    LPCTSTR lpcszDescr);

BOOL SetTaskbarOverlayIcon(
    HICON hIcon,
    LPCTSTR lpcszDescr);

パラメーター

nIDResource
オーバーレイとして使用するアイコンのリソース ID を指定します。 詳細については、 hIcon の説明を参照してください。

lpcszDescr
アクセシビリティを目的として、オーバーレイによって伝達される情報の代替テキスト バージョンを提供する文字列へのポインター。

hIcon
オーバーレイとして使用するアイコンのハンドル。 これは、96 ドット/インチ (dpi) で 16 x 16 ピクセルを測定する小さなアイコンである必要があります。 オーバーレイ アイコンがタスク バー ボタンに既に適用されている場合は、その既存のオーバーレイが置き換えられます。 この値は、NULL の場合もあります。 NULL値の処理方法は、タスク バー ボタンが 1 つのウィンドウまたはウィンドウのグループを表しているかどうかによって異なります。 不要になった hIcon を解放するのは、呼び出し元アプリケーションの責任です。

戻り値

TRUE 成功した場合。OS のバージョンが Windows 7 より小さい場合、またはアイコンの設定中にエラーが発生した場合に FALSE します。

解説

CFrameWnd::SetTitle

ウィンドウ オブジェクトのタイトルを設定します。

void SetTitle(LPCTSTR lpszTitle);

パラメーター

lpszTitle
ウィンドウ オブジェクトのタイトルを含む文字列へのポインター。

CFrameWnd::ShowControlBar

コントロール バーを表示または非表示にするには、このメンバー関数を呼び出します。

void ShowControlBar(
    CControlBar* pBar,
    BOOL bShow,
    BOOL bDelay);

パラメーター

pBar
表示または非表示にするコントロール バーへのポインター。

bShow
TRUE場合は、コントロール バーを表示することを指定します。 FALSE場合は、コントロール バーを非表示にすることを指定します。

bDelay
TRUE場合は、コントロール バーを表示する遅延。 FALSE場合は、コントロール バーをすぐに表示します。

CFrameWnd::ShowOwnedWindows

このメンバー関数を呼び出して、 CFrameWnd オブジェクトの子孫であるすべてのウィンドウを表示します。

void ShowOwnedWindows(BOOL bShow);

パラメーター

bShow
所有するウィンドウを表示するか非表示にするかを指定します。

関連項目

CWnd クラス
階層図
CWnd クラス
CMDIFrameWnd クラス
CMDIChildWnd クラス
CView クラス
CDocTemplate クラス
CRuntimeClass 構造体