CMDIFrameWindowImpl

http://toshi.my.land.to/wtl/reference/?CMDIFrameWindowImpl
* トップ ページ - WTL - リファレンス - CMDIFrameWindowImpl :: 説明 / 解説 / 参照 / 情報 / 静的メソッド / メソッド / イベント ハンドラ

説明

MDI フレーム ウィンドウの振る舞いを実装しているクラスです。

解説

通常、このクラスを継承して、独自のウィンドウの振る舞いを実装するクラスを作成します。
その際、テンプレート引数 T にはそのクラス自身を渡します。
このように、基本クラスのテンプレート引数に派生クラス自身を渡して継承することは、CRTP (Curiously Recurring Template Pattern : 奇妙に再帰したテンプレート パターン) と呼ばれます。

テンプレート引数 TBase は、既定では CMDIWindow です。TWinTraits は、ATL::CFrameWinTraits です。
これらは、ウィンドウの基本的な振る舞い、およびウィンドウの特徴(スタイル)を定義するものです。
通常これらを変更する必要はありません。
つまり、特別な場合でない限り、テンプレート引数には T を指定するのみです。

参照

CMDIWindow
CMDIChildWindowImpl

情報

タイプ : テンプレート
継承クラス : CFrameWindowImplBase
ヘッダ : atlframe.h

静的メソッド

MDIFrameWindowProc
MDI フレーム ウィンドウのウィンドウ プロシージャです。

メソッド

Create
ウィンドウを作成します。
CreateEx
共通リソース ID によって、ウィンドウを作成します。
CreateMDIClient
MDI クライアント ウィンドウを作成します。
CreateSimpleToolBar
ウィンドウ上にツール バーを作成します。
DefWindowProc
現在処理中のメッセージを基に、デフォルト ウィンドウ プロシージャを呼び出します。
DefWindowProc
デフォルト ウィンドウ プロシージャを呼び出します。
GetWindowProc
既定のウィンドウ プロシージャのアドレスを取得します。
PreTranslateMessage
ウィンドウ メッセージを独自に処理します。

イベント ハンドラ

OnChevronPushed
RBN_CHEVRONPUSHED 通知のハンドラです。
OnMDISetMenu
WM_MDISETMENU メッセージのハンドラです。
OnReBarAutoSize
RBN_AUTOSIZE 通知のハンドラです。
OnSetFocus
WM_SETFOCUS メッセージのハンドラです。
OnSize
WM_SIZE メッセージのハンドラです。


MDIFrameWindowProc

MDI フレーム ウィンドウのウィンドウ プロシージャです。

static LRESULT CALLBACK MDIFrameWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

引数

HWND hWnd
ウィンドウ ハンドルを指定します。

UINT uMsg
処理するメッセージを指定します。

WPARAM wParam
メッセージに付加されたパラメータを指定します。

LPARAM lParam
メッセージに付加されたパラメータを指定します。

戻り値

メッセージを処理した結果を返します。


Create

ウィンドウを作成します。

HWND Create(HWND hWndParent = NULL, ATL::_U_RECT rect = NULL, LPCTSTR szWindowName = NULL, DWORD dwStyle = 0, DWORD dwExStyle = 0, HMENU hMenu = NULL, LPVOID lpCreateParam = NULL);

引数

HWND hWndParent = NULL
親ウィンドウを指定します。既定では NULL で、トップレベル ウィンドウになります。

ATL::_U_RECT rect = NULL
ウィンドウの位置情報を示す RECT 構造体を指定します。既定では NULL で、TBase::rcDefault になります。

LPCTSTR szWindowName = NULL
ウィンドウの名前を指定します。既定では NULL です。

DWORD dwStyle = 0
ウィンドウ スタイルを指定します。既定では 0 で、TWinTraits の持つスタイルになります。

DWORD dwExStyle = 0
拡張ウィンドウ スタイルを指定します。既定では 0 で、TWinTraits の持つスタイルになります。

HMENU hMenu = NULL
オーバーラップ ウィンドウまたはポップアップ ウィンドウの場合はメニュー ハンドルを指定します。子ウィンドウの場合は ID を指定します。既定では NULL です。

LPVOID lpCreateParam = NULL
ユーザー定義のパラメータを指定します。既定では NULL です。

戻り値

作成に成功した場合、ウィンドウ ハンドルを返します。


CreateEx

共通リソース ID によって、ウィンドウを作成します。

HWND CreateEx(HWND hWndParent = NULL, ATL::_U_RECT rect = NULL, DWORD dwStyle = 0, DWORD dwExStyle = 0, LPVOID lpCreateParam = NULL);

引数

HWND hWndParent = NULL
親ウィンドウを指定します。既定では NULL で、トップレベル ウィンドウになります。

ATL::_U_RECT rect = NULL
ウィンドウの位置情報を示す RECT 構造体を指定します。既定では NULL で、TBase::rcDefault になります。

DWORD dwStyle = 0
ウィンドウ スタイルを指定します。既定では 0 で、TWinTraits の持つスタイルになります。

DWORD dwExStyle = 0
拡張ウィンドウ スタイルを指定します。既定では 0 で、TWinTraits の持つスタイルになります。

LPVOID lpCreateParam = NULL
ユーザー定義のパラメータを指定します。既定では 0 です。

戻り値

作成に成功した場合、ウィンドウ ハンドルを返します。

解説

共通リソース ID は、DECLARE_FRAME_WND_CLASS マクロ、または DECLARE_FRAME_WND_CLASS_EX マクロで定義します。
これによって、ウィンドウの名前、メニュー、アクセラレータ キーがこのメソッドで自動的に設定されます。


CreateMDIClient

MDI クライアント ウィンドウを作成します。

HWND CreateMDIClient(HMENU hWindowMenu = NULL, nID = ATL_IDW_CLIENT, UINT nFirstChildID = ATL_IDM_FIRST_MDICHILD);

引数

HMENU hWindowMenu = NULL
ウィンドウ メニューのハンドルを指定します。既定では NULL です。

nID = ATL_IDW_CLIENT
作成する MDI クライアント ウィンドウの ID を指定します。既定では ATL_IDW_CLIENT です。

UINT nFirstChildID = ATL_IDM_FIRST_MDICHILD
最初の MDI チャイルド ウィンドウに割り当てられる ID を指定します。既定では ATL_IDM_FIRST_MDICHILD です。詳しくは解説を参照してください。

戻り値

作成に成功した場合、ウィンドウ ハンドルを返します。

解説

作成に成功した場合、m_hWndMDIClient にウィンドウ ハンドルが格納されます。

nFirstChildID は、MDI チャイルド ウィンドウに割り当てられる ID の基準値となり、ウィンドウ メニューの項目の ID として使用されます。


CreateSimpleToolBar

ウィンドウ上にツール バーを作成します。

BOOL CreateSimpleToolBar(UINT nResourceID = 0, DWORD dwStyle = ATL_SIMPLE_TOOLBAR_STYLE, UINT nID = ATL_IDW_TOOLBAR);

引数

UINT nResourceID = 0
リソース ID を指定します。既定では 0 で、共通リソース ID になります。

DWORD dwStyle = ATL_SIMPLE_TOOLBAR_STYLE
ウィンドウ スタイルを指定します。既定では ATL_SIMPLE_TOOLBAR_STYLE です。

UINT nID = ATL_IDW_TOOLBAR
ID を指定します。既定では ATL_IDW_TOOLBAR です。

戻り値

作成に成功したかどうかを返します。

解説

作成に成功した場合、m_hWndToolBar にウィンドウ ハンドルが格納されます。


DefWindowProc

現在処理中のメッセージを基に、デフォルト ウィンドウ プロシージャを呼び出します。

LRESULT DefWindowProc();

引数

引数はありません。

戻り値

ウィンドウ プロシージャの戻り値を返します。

解説

このメソッドは、現在処理中のメッセージを基に DefWindowProc メソッドを呼び出し、その戻り値を返します。


DefWindowProc

デフォルト ウィンドウ プロシージャを呼び出します。

LRESULT DefWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam);

引数

UINT uMsg
処理するメッセージを指定します。

WPARAM wParam
メッセージに付加されたパラメータを指定します。

LPARAM lParam
メッセージに付加されたパラメータを指定します。

戻り値

ウィンドウ プロシージャの戻り値を返します。

解説

このメソッドは、DefFrameProc API を呼び出し、その戻り値を返します。


GetWindowProc

既定のウィンドウ プロシージャのアドレスを取得します。

virtual WNDPROC GetWindowProc();

引数

引数はありません。

戻り値

ウィンドウ プロシージャのアドレスを返します。

解説

このメソッドは、MDIFrameWindowProc メソッドのアドレスを返します。


PreTranslateMessage

ウィンドウ メッセージを独自に処理します。

BOOL PreTranslateMessage(MSG* pMsg);

引数

MSG* pMsg
MSG 構造体を指定します。

戻り値

メッセージを処理したかどうかを返します。

解説

このメソッドは、CFrameWindowImplBase クラスの PreTranslateMessage メソッドを呼び出します。
その戻り値が FALSE でない場合、即座に TRUE を返します。
その戻り値が FALSE である場合、MDI 特有のアクセラレータ キーを処理するために TranslateMDISysAccel API を呼び出し、その戻り値を返します。


OnChevronPushed

RBN_CHEVRONPUSHED 通知のハンドラです。

LRESULT OnChevronPushed(int /*idCtrl*/, LPNMHDR pnmh, BOOL& bHandled);

引数

int /*idCtrl*/
コントロールの ID です。このハンドラでは使用されません。

LPNMHDR pnmh
NMHDR 構造体へのポインタです。

BOOL& bHandled
メッセージを処理したかどうかを示します。

戻り値

メニューを表示した場合、0 を返します。表示の準備に失敗した場合、1 を返します。


OnMDISetMenu

WM_MDISETMENU メッセージのハンドラです。

LRESULT OnMDISetMenu(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);

引数

UINT /*uMsg*/
WM_MDISETMENU メッセージです。このハンドラでは使用されません。

WPARAM /*wParam*/
メッセージに付加されたパラメータです。このハンドラでは使用されません。

LPARAM /*lParam*/
メッセージに付加されたパラメータです。このハンドラでは使用されません。

BOOL& /*bHandled*/
メッセージを処理したかどうかを示します。このハンドラでは使用されません。

戻り値

常に 0 を返します。

解説

このハンドラは、CMDIWindow クラスの SetMDIFrameMenu メソッドを呼び出します。

通常、WM_MDISETMENU メッセージは MDI クライアント ウィンドウに送信するために利用されます。
しかし、CMDIChildWindowImpl クラスの OnMDIActivate ハンドラは、アクティブな MDI チャイルド ウィンドウが存在しなくなった場合に MDI フレーム ウィンドウに対してそれ自身が持っているメニュー(CMDIWindow クラスの m_hMenu メンバ)を新しいメニューに設定するよう通知する目的で、MDI フレーム ウィンドウにこのメッセージを送信します。
このハンドラはそれに対応するためのものです。


OnReBarAutoSize

RBN_AUTOSIZE 通知のハンドラです。

LRESULT OnReBarAutoSize(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/);

引数

int /*idCtrl*/
コントロールの ID です。このハンドラでは使用されません。

LPNMHDR /*pnmh*/
NMHDR 構造体へのポインタです。このハンドラでは使用されません。

BOOL& /*bHandled*/
メッセージを処理したかどうかを示します。このハンドラでは使用されません。

戻り値

常に 0 を返します。

解説

このハンドラは、派生クラスがオーバーライドしていない限り、CFrameWindowImplBase クラスの UpdateLayout メソッドを呼び出します。


OnSetFocus

WM_SETFOCUS メッセージのハンドラです。

LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/);

引数

UINT uMsg
WM_SETFOCUS メッセージです。

WPARAM wParam
メッセージに付加されたパラメータです。

LPARAM lParam
メッセージに付加されたパラメータです。

BOOL& /*bHandled*/
メッセージを処理したかどうかを示します。このハンドラでは使用されません。

戻り値

DefWindowProc API の戻り値を返します。

解説

このハンドラは、DefWindowProc API を呼び出します。

このクラスにおいては、WM_SETFOCUS メッセージを CFrameWindowImplBase クラスの OnSetFocus ハンドラで処理させるのは不適切であるため、このクラス自身がこのハンドラで処理しています。


OnSize

WM_SIZE メッセージのハンドラです。

LRESULT OnSize(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/);

引数

UINT /*uMsg*/
WM_SIZE メッセージです。このハンドラでは使用されません。

WPARAM wParam
メッセージに付加されたパラメータです。

LPARAM /*lParam*/
メッセージに付加されたパラメータです。このハンドラでは使用されません。

BOOL& /*bHandled*/
メッセージを処理したかどうかを示します。このハンドラでは使用されません。

戻り値

常に 0 を返します。

解説

このハンドラは、ウィンドウが最小化されていない場合において、派生クラスがオーバーライドしていない限り、CFrameWindowImplBase クラスの UpdateLayout メソッドを呼び出します。


Last Modified : 2010/05/19 (Wed.) 20:11:26

Librarian Version 0.3.1.5
By Toshi

ページの先頭へ戻る
リファレンスへ戻る
WTL へ戻る
トップ ページへ戻る

* トップ ページ - WTL - リファレンス - CMDIFrameWindowImpl :: 説明 / 解説 / 参照 / 情報 / 静的メソッド / メソッド / イベント ハンドラ
http://toshi.my.land.to/wtl/reference/?CMDIFrameWindowImpl
(C) 2005 - 2010 Toshi, All Rights Reserved.