CFrameWindowImplBase

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

説明

フレーム ウィンドウの実装のためのベース クラスです。

解説

このクラスから、CFrameWindowImpl クラス、CMDIFrameWindowImpl クラス、CMDIChildWindowImpl クラスがそれぞれ派生しており、これらのクラスを継承して、SDI および MDI としての機能を持ったウィンドウを作成することができます。
つまり、このクラスを独自のクラスで直接継承することはありません。このクラスに実装されているのはあくまでもベースとなる機能のみです。

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

このクラスでは、あらかじめ DECLARE_FRAME_WND_CLASS マクロによってウィンドウ クラスが定義されているため、独自のクラスにおいて再定義されない限り、作成されるウィンドウに対してはこれが適用されます。
クラス名は静的に定義された WNDCLASSEX 構造体のアドレスから決定され、共通リソース ID も設定されていません。

このクラスで定義されている静的メソッドや一部のメソッドについて、通常は直接意識する必要はありません。

参照

CFrameWindowImpl
CMDIFrameWindowImpl
CMDIChildWindowImpl

情報

タイプ : テンプレート
継承クラス : ATL::CWindowImplBaseT< TBase, TWinTraits >
ヘッダ : atlframe.h

メンバ

HWND m_hWndToolBar;
ツール バー、または ReBar のウィンドウ ハンドルです。
HWND m_hWndStatusBar;
ステータス バーのウィンドウ ハンドルです。
HWND m_hWndClient;
クライアント領域に表示されるウィンドウのウィンドウ ハンドルです。
HACCEL m_hAccel;
アクセラレータ テーブルのハンドルです。

静的メソッド

AddSimpleReBarBandCtrl
指定した ReBar にバンドを追加します。
CreateSimpleReBarCtrl
指定したウィンドウ上に ReBar を作成します。
CreateSimpleToolBarCtrl
指定したウィンドウ上にツール バーを作成します。

メソッド

AddSimpleReBarBand
ウィンドウの持つ ReBar にバンドを追加します。
CFrameWindowImplBase
コンストラクタです。
CleanupChevronMenu
シェブロン メニューをクリーンアップします。
Create
ウィンドウを作成します。
CreateSimpleReBar
ウィンドウ上に ReBar を作成します。
CreateSimpleStatusBar
ウィンドウ上に、指定した文字列を表示するステータス バーを作成します。
CreateSimpleStatusBar
ウィンドウ上に、指定したリソース ID の文字列を表示するステータス バーを作成します。
DisplayChevronMenu
シェブロン メニューを表示します。
PrepareChevronMenu
シェブロン メニューの表示を準備します。
PreTranslateMessage
ウィンドウ メッセージを独自に処理します。
SizeSimpleReBarBands
ウィンドウの持つ ReBar のバンドの幅を調整します。
UpdateBarsPosition
ウィンドウの持つツール バーまたは ReBar、およびステータス バーの位置を調整します。
UpdateLayout
ウィンドウの持つツール バーまたは ReBar、ステータス バー、およびクライアント領域のウィンドウのレイアウトを更新します。

イベント ハンドラ

OnDestroy
WM_DESTROY メッセージのハンドラです。
OnEraseBackground
WM_ERASEBKGND メッセージのハンドラです。
OnMenuSelect
WM_MENUSELECT メッセージのハンドラです。
OnSetFocus
WM_SETFOCUS メッセージのハンドラです。
OnToolTipTextA
TTN_GETDISPINFOA 通知のハンドラです。
OnToolTipTextW
TTN_GETDISPINFOW 通知のハンドラです。


AddSimpleReBarBandCtrl

指定した ReBar にバンドを追加します。

static BOOL AddSimpleReBarBandCtrl(HWND hWndReBar, HWND hWndBand, int nID = 0, LPCTSTR lpstrTitle = NULL, BOOL bNewRow = FALSE, int cxWidth = 0, BOOL bFullWidthAlways = FALSE);

引数

HWND hWndReBar
バンドを追加する ReBarを指定します。

HWND hWndBand
追加するバンドとなるウィンドウを指定します。

int nID = 0
追加するバンドの ID を指定します。

LPCTSTR lpstrTitle = NULL
バンドのタイトルを指定します。既定では NULL です。

BOOL bNewRow = FALSE
バンドを新しい列に追加するかどうかを指定します。既定では既存の列に追加します。

int cxWidth = 0
バンドの幅を指定します。既定では 0 です。詳しくは解説を参照してください。

BOOL bFullWidthAlways = FALSE
バンドの幅を常に最大にするかどうかを指定します。既定では FALSE です。詳しくは解説を参照してください。

戻り値

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

解説

通常は、このメソッドを直接呼び出さずに、AddSimpleReBarBand メソッドを呼び出します。

cxWidth に 0 を指定した場合、バンドの幅には、バンドとなるウィンドウがボタンを持つツール バーであれば右端のボタンまでの幅が、あるいはボタンを持たないツール バーであるか、またはツールバーでなければそのウィンドウの幅が自動的に設定されます。

バンドが少なくともどのくらいの幅で表示されるかは、bFullWidthAlways の値に依存します。
TRUE を指定した場合、cxWidth によって設定された幅になります。
FALSE を指定し、かつバンドとなるウィンドウがボタンを持つツール バーであれば、0 になります。
ただしタイトルがない場合、ボタンが 1 つ表示される幅になります。
FALSE を指定し、かつバンドとなるウィンドウがボタンを持たないツール バーであるか、またはツール バーでなければ、0 になります。


CreateSimpleReBarCtrl

指定したウィンドウ上に ReBar を作成します。

static HWND CreateSimpleReBarCtrl(HWND hWndParent, DWORD dwStyle = ATL_SIMPLE_REBAR_STYLE, UINT nID = ATL_IDW_TOOLBAR);

引数

HWND hWndParent
親ウィンドウを指定します。

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

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

戻り値

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

解説

通常は、このメソッドを直接呼び出さずに、CreateSimpleReBar メソッドを呼び出します。

このメソッドは、ReBar を適切に描画するために、dwStyle に CCS_NODIVIDER および WS_BORDER のいずれのフラグも含まれている場合は WS_BORDER を外し、逆にいずれのフラグも含まれていない場合は CCS_NODIVIDER をセットします。
つまり、CCS_NODIVIDER または WS_BORDER のいずれか一方のみが必ずセットされた状態になるように、フラグに変更を加えます。


CreateSimpleToolBarCtrl

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

static HWND CreateSimpleToolBarCtrl(HWND hWndParent, UINT nResourceID, BOOL bInitialSeparator = FALSE, DWORD dwStyle = ATL_SIMPLE_TOOLBAR_STYLE, UINT nID = ATL_IDW_TOOLBAR);

引数

HWND hWndParent
親ウィンドウを指定します。

UINT nResourceID
リソース ID を指定します。

BOOL bInitialSeparator = FALSE
ツール バーの左端にセパレータを表示するかどうかを指定します。既定では FALSE です。

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

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

戻り値

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

解説

通常は、このメソッドを直接呼び出さずに、派生クラスの CreateSimpleToolBar メソッドを呼び出します。


AddSimpleReBarBand

ウィンドウの持つ ReBar にバンドを追加します。

BOOL AddSimpleReBarBand(HWND hWndBand, LPCTSTR lpstrTitle = NULL, BOOL bNewRow = FALSE, int cxWidth = 0, BOOL bFullWidthAlways = FALSE);

引数

HWND hWndBand
追加するバンドとなるウィンドウを指定します。

LPCTSTR lpstrTitle = NULL
バンドのタイトルを指定します。既定では NULL です。

BOOL bNewRow = FALSE
バンドを新しい列に追加するかどうかを指定します。既定では既存の列に追加します。

int cxWidth = 0
バンドの幅を指定します。既定では 0 です。詳しくは AddSimpleReBarBandCtrl メソッドの解説を参照してください。

BOOL bFullWidthAlways = FALSE
バンドの幅を常に最大にするかどうかを指定します。既定では FALSE です。詳しくは AddSimpleReBarBandCtrl メソッドの解説を参照してください。

戻り値

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

解説

このメソッドは、AddSimpleReBarBandCtrl メソッドの簡易なラッパとして機能します。


CFrameWindowImplBase

コンストラクタです。

CFrameWindowImplBase() : m_hWndToolBar(NULL), m_hWndStatusBar(NULL), m_hWndClient(NULL), m_hAccel(NULL);

引数

引数はありません。

解説

このコンストラクタでは、このクラスの全てのメンバを NULL に設定します。


CleanupChevronMenu

シェブロン メニューをクリーンアップします。

void CleanupChevronMenu(_ChevronMenuInfo& cmi);

引数

_ChevronMenuInfo& cmi
_ChevronMenuInfo 構造体を指定します。

戻り値

戻り値はありません。

解説

このメソッドは、派生クラスの OnChevronPushed ハンドラにおいて、シェブロン メニューが表示されたのち非表示になる際に呼び出されます。
通常呼び出す必要はありません。

メニューは、それがコマンド バーのものでなければ、DestroyMenu API によって破棄されます。

メニューが非表示になった原因が、シェブロンが再びクリックされたことによるものであった場合、メニューが再び表示されてしまうのを防ぐために、その WM_LBUTTONDOWN メッセージを処理しません。


Create

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

HWND Create(HWND hWndParent, ATL::_U_RECT rect, LPCTSTR szWindowName, DWORD dwStyle, DWORD dwExStyle, ATL::_U_MENUorID MenuOrID, ATOM atom, LPVOID lpCreateParam);

引数

HWND hWndParent
親ウィンドウを指定します。

ATL::_U_RECT rect
ウィンドウの位置情報を示す RECT 構造体を指定します。

LPCTSTR szWindowName
ウィンドウの名前を指定します。

DWORD dwStyle
ウィンドウ スタイルを指定します。

DWORD dwExStyle
拡張ウィンドウ スタイルを指定します。

ATL::_U_MENUorID MenuOrID
オーバーラップ ウィンドウまたはポップアップ ウィンドウの場合はメニュー ハンドルを指定します。子ウィンドウの場合は ID を指定します。

ATOM atom
クラス アトムを指定します。

LPVOID lpCreateParam
ユーザー定義のパラメータを指定します。

戻り値

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

解説

このメソッドは派生クラスが呼び出します。通常呼び出す必要はありません。

MenuOrID が NULL かつ dwStyle に WS_CHILD フラグが含まれている場合、子ウィンドウとしての ID を持たせるために、その値として this が設定されます。
rect が NULL の場合、TBase::rcDefault になります。


CreateSimpleReBar

ウィンドウ上に ReBar を作成します。

BOOL CreateSimpleReBar(DWORD dwStyle = ATL_SIMPLE_REBAR_STYLE, UINT nID = ATL_IDW_TOOLBAR);

引数

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

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

戻り値

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

解説

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

このメソッドは、CreateSimpleReBarCtrl メソッドの簡易なラッパとして機能します。


CreateSimpleStatusBar

ウィンドウ上に、指定した文字列を表示するステータス バーを作成します。

BOOL CreateSimpleStatusBar(LPCTSTR lpstrText, DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | SBARS_SIZEGRIP, UINT nID = ATL_IDW_STATUS_BAR);

引数

LPCTSTR lpstrText
表示する文字列を指定します。

DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | SBARS_SIZEGRIP
ウィンドウ スタイルを指定します。既定ではステータス バーに適切なフラグの組み合わせです。

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

戻り値

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

解説

このオーバーロードは、文字列のアドレスを指定するものです。

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


CreateSimpleStatusBar

ウィンドウ上に、指定したリソース ID の文字列を表示するステータス バーを作成します。

BOOL CreateSimpleStatusBar(UINT nTextID = ATL_IDS_IDLEMESSAGE, DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | SBARS_SIZEGRIP, UINT nID = ATL_IDW_STATUS_BAR);

引数

UINT nTextID = ATL_IDS_IDLEMESSAGE
表示する文字列のリソース ID を指定します。既定ではATL_IDS_IDLEMESSAGE です。

DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | SBARS_SIZEGRIP
ウィンドウ スタイルを指定します。既定ではステータス バーに適切なフラグの組み合わせです。

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

戻り値

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

解説

このオーバーロードは、文字列のリソース ID を指定するものです。

リソース エディタで任意の文字列リソースを作成し、ID を ATL_IDS_IDLEMESSAGE に設定しておき、このメソッドを引数なしで呼び出すことで、簡易にステータス バーを表示することができます。

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


DisplayChevronMenu

シェブロン メニューを表示します。

void DisplayChevronMenu(_ChevronMenuInfo& cmi);

引数

_ChevronMenuInfo& cmi
_ChevronMenuInfo 構造体を指定します。

戻り値

戻り値はありません。

解説

このメソッドは、派生クラスの OnChevronPushed ハンドラにおいて、シェブロン メニューが表示されたのち非表示になる際に呼び出されます。
通常呼び出す必要はありません。


PrepareChevronMenu

シェブロン メニューの表示を準備します。

void PrepareChevronMenu(_ChevronMenuInfo& cmi);

引数

_ChevronMenuInfo& cmi
_ChevronMenuInfo 構造体を指定します。

戻り値

戻り値はありません。

解説

このメソッドは、派生クラスの OnChevronPushed ハンドラにおいて、シェブロン メニューが表示される前に呼び出されます。
通常呼び出す必要はありません。


PreTranslateMessage

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

BOOL PreTranslateMessage(MSG* pMsg);

引数

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

戻り値

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

解説

このメソッドは、m_hAccel メンバが有効である場合に TranslateAccelerator API を呼び出し、アクセラレータ キーを処理します。

このメソッドは、CMessageFilter インターフェイスを実装している派生クラスの PreTranslateMessage メソッドから呼び出されます。
(プロジェクトをウィザードを利用して作成した場合、通常そのような実装になっています)
逆に言えば、派生クラスがそのような実装になっていない限り、このメソッドによるアクセラレータ キーの処理は行われません。


SizeSimpleReBarBands

ウィンドウの持つ ReBar のバンドの幅を調整します。

void SizeSimpleReBarBands();

引数

引数はありません。

戻り値

戻り値はありません。

解説

このメソッドは、全てのバンドを既定のサイズに調整します。


UpdateBarsPosition

ウィンドウの持つツール バーまたは ReBar、およびステータス バーの位置を調整します。

void UpdateBarsPosition(RECT& rect, bResizeBars = TRUE);

引数

RECT& rect
ウィンドウのクライアント領域のサイズが格納された RECT 構造体を指定します。ここにはバーのサイズを除いた新しいクライアント領域が格納されます。

bResizeBars = TRUE
バーをリサイズするかどうかを指定します。既定では TRUE です。

戻り値

戻り値はありません。

解説

このメソッドは、UpdateLayout メソッドにおいて、シェブロン メニューが表示される前に呼び出されます。
通常呼び出す必要はありません。

バーの位置の調整は、バーが存在していて、かつ表示されている場合にのみ行われます。

bResizeBars が TRUE である場合、バーに WM_SIZE メッセージを送信します。


UpdateLayout

ウィンドウの持つツール バーまたは ReBar、ステータス バー、およびクライアント領域のウィンドウのレイアウトを更新します。

void UpdateLayout(bResizeBars = TRUE);

引数

bResizeBars = TRUE
バーをリサイズするかどうかを指定します。既定では TRUE です。

戻り値

戻り値はありません。

解説

このメソッドは、バーの位置の調整のために UpdateBarsPosition メソッドを呼び出します。
その後、m_hWndClient メンバが有効である場合、そのサイズをバーの部分を除いたクライアント領域いっぱいに設定します。


OnDestroy

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

LRESULT OnDestroy(UINT, WPARAM, LPARAM, BOOL& bHandled);

引数

UINT
WM_DESTROY メッセージです。

WPARAM
このパラメータは使用されません。

LPARAM
このパラメータは使用されません。

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

戻り値

常に 1 を返します。

解説

このハンドラは、ウィンドウ スタイルに WS_CHILD または WS_POPUP のいずれのフラグも含まれていない場合、PostQuitMessage API を呼び出します。


OnEraseBackground

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

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

引数

UINT /*uMsg*/
WM_ERASEBKGND メッセージです。

WPARAM /*wParam*/
このパラメータは使用されません。

LPARAM /*lParam*/
このパラメータは使用されません。

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

戻り値

m_hWndClient メンバが有効である場合、1 を返します。そうでない場合、0 を返します。

解説

このハンドラは、m_hWndClient メンバが有効である場合、クライアント領域の描画をそのウィンドウに任せます。


OnMenuSelect

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

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

引数

UINT /*uMsg*/
WM_MENUSELECT メッセージです。

WPARAM wParam
下位ワードは、メニュー アイテム、サブメニューのインデックス、またはメニュー アイテムの ID です。上位ワードはメニュー フラグです。

LPARAM lParam
クリックされたメニューのハンドルです。

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

戻り値

常に 1 を返します。

解説

このハンドラは、渡されたパラメータに応じて適切な文字列をリソースから読み込み、ステータス バーに表示します。


OnSetFocus

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

LRESULT OnSetFocus(UINT, WPARAM, LPARAM, BOOL& bHandled);

引数

UINT
WM_SETFOCUS メッセージです。

WPARAM
フォーカスを失ったウィンドウのハンドルです。このハンドラでは使用されません。

LPARAM
このパラメータは使用されません。

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

戻り値

常に 1 を返します。

解説

このハンドラは、m_hWndClient メンバが有効である場合、SetFocus API を呼び出してそのウィンドウにフォーカスをセットします。


OnToolTipTextA

TTN_GETDISPINFOA 通知のハンドラです。

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

引数

int idCtrl
コントロールの ID です。

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

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

戻り値

常に 0 を返します。

解説

このハンドラは、idCtrl の値に応じて適切な文字列をリソースから読み込み、ツールチップの文字列として設定します。


OnToolTipTextW

TTN_GETDISPINFOW 通知のハンドラです。

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

引数

int idCtrl
コントロールの ID です。

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

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

戻り値

常に 0 を返します。

解説

このハンドラは、idCtrl の値に応じて適切な文字列をリソースから読み込み、ツールチップの文字列として設定します。


Last Modified : 2010/05/17 (Mon.) 22:17:46

Librarian Version 0.3.1.5
By Toshi

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

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