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
を呼び出す前に、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
を呼び出すことによってアクティブなビューに通知されます。コマンド メッセージと、
CWnd
のOnSetFocus
、OnHScroll
、OnVScroll
関数によって処理されるメッセージなど、多くの一般的なフレーム通知メッセージは、CFrameWnd
フレーム ウィンドウによって現在アクティブなビューに委任されます。現在アクティブなビュー (または MDI フレームの場合は現在アクティブな MDI 子フレーム ウィンドウ) は、フレーム ウィンドウのキャプションを決定できます。 この機能は、フレーム ウィンドウの
FWS_ADDTOTITLE
スタイル ビットをオフにすることで無効にすることができます。CFrameWnd
フレーム ウィンドウは、コントロール バー、ビュー、およびフレーム ウィンドウのクライアント領域内のその他の子ウィンドウの位置を管理します。 フレーム ウィンドウでは、ツール バーやその他のコントロール バー ボタンのアイドル時間更新も行われます。CFrameWnd
フレーム ウィンドウには、ツール バーとステータス バーを切り替えるコマンドの既定の実装もあります。CFrameWnd
フレーム ウィンドウは、メイン メニュー バーを管理します。 ポップアップ メニューが表示されると、フレーム ウィンドウはUPDATE_COMMAND_UI
メカニズムを使用して、有効、無効、またはチェックする必要があるメニュー項目を決定します。 ユーザーがメニュー項目を選択すると、フレーム ウィンドウはそのコマンドのメッセージ文字列でステータス バーを更新します。CFrameWnd
フレーム ウィンドウには、キーボード アクセラレータを自動的に変換する省略可能なアクセラレータ テーブルがあります。CFrameWnd
フレーム ウィンドウには、状況依存のヘルプに使用されるLoadFrame
で設定されたオプションのヘルプ ID があります。 フレーム ウィンドウは、状況依存のヘルプ (Shift + F1) や印刷プレビュー モードなどの半モーダル状態のメイン オーケストレーターです。CFrameWnd
フレーム ウィンドウは、ファイル マネージャーからドラッグしてフレーム ウィンドウにドロップされたファイルを開きます。 ファイル拡張子が登録され、アプリケーションに関連付けられている場合、フレーム ウィンドウは、ユーザーがファイル マネージャーでデータ ファイルを開いたとき、またはShellExecute
Windows 関数が呼び出されたときに発生する動的データ交換 (DDE) オープン要求に応答します。フレーム ウィンドウがメイン アプリケーション ウィンドウ (つまり、
CWinThread::m_pMainWnd
) の場合、ユーザーがアプリケーションを閉じると、フレーム ウィンドウは変更されたドキュメント (OnClose
とOnQueryEndSession
用) を保存するようにユーザーに求めます。フレーム ウィンドウがメイン アプリケーション ウィンドウの場合、フレーム ウィンドウは WinHelp を実行するためのコンテキストです。 フレーム ウィンドウを閉じると、このアプリケーションのヘルプ
WINHELP.EXE
起動された場合はシャットダウンされます。
C++ delete
演算子を使用してフレーム ウィンドウを破棄しないでください。 代わりに CWnd::DestroyWindow
を使用してください PostNcDestroy
のCFrameWnd
実装では、ウィンドウが破棄されたときに C++ オブジェクトが削除されます。 ユーザーがフレーム ウィンドウを閉じると、既定の OnClose
ハンドラーは DestroyWindow
を呼び出します。
CFrameWnd
の詳細については、「Frame Windows」を参照してください。
継承階層
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::EnableDocking
と CFrameWnd::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
= 1borderRequest
= 2borderSet
= 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_NOPROGRESS
、 TBPF_INDETERMINATE
、 TBPF_NORMAL
、 TBPF_ERROR
、 TBPF_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
構造体