TNB Library
クラス | 公開メンバ関数 | 静的公開メンバ関数 | 限定公開メンバ関数 | 限定公開変数類 | 全メンバ一覧
CCustomWindowFrameMaster クラス

カスタムウィンドウフレームマスタークラス. [詳解]

#include <TnbMfcCustomWindowFrameMaster.h>

+ CCustomWindowFrameMaster の継承関係図

公開メンバ関数

bool Attach (HWND hWnd)
 [設定] アタッチ [詳解]
 
 CCustomWindowFrameMaster (void)
 コンストラクタ [詳解]
 
void CopyParameter (const CCustomWindowFrame &o)
 [設定] 設定の複製. [詳解]
 
void Destroy (void)
 [設定] 破棄 [詳解]
 
void Detach (void)
 [設定] デタッチ [詳解]
 
HBRUSH GetBackground (bool isActive)
 [取得] 背景ブラシ取得 [詳解]
 
DWORD GetExStyle (void) const
 [取得] 拡張スタイル取得 [詳解]
 
HWND GetSafeHwnd (void) const
 [取得] ウィンドウハンドル取得 [詳解]
 
DWORD GetStyle (void) const
 [取得] スタイル取得 [詳解]
 
void Hook (bool isDisableVista=false)
 [設定] フック. [詳解]
 
bool IsAttached (void) const
 [確認] アタッチ中? [詳解]
 
void ModifyStyle (DWORD dwRemove, DWORD dwAdd)
 [変更] スタイル変更 [詳解]
 
void ModifyStyleEx (DWORD dwRemove, DWORD dwAdd)
 [変更] 拡張スタイル変更 [詳解]
 
BOOL PostMessage (UINT message, WPARAM wParam, LPARAM lParam)
 [処理] PostMessage. [詳解]
 
CDrawingMenuBarReferMenuBar (void)
 [参照] メニューバー参照. [詳解]
 
CDrawingMenuReferPopupMenu (void)
 [参照] メニューバー参照. [詳解]
 
DWORD RegisterMenu (CMenu *pMenu)
 [登録] メニュー登録. [詳解]
 
LRESULT SendMessage (UINT message, WPARAM wParam, LPARAM lParam)
 [処理] SendMessage. [詳解]
 
void SetCloseButtonBitmap (const POINT &pos, CBitmapHandle bmp, int num=4, COLORREF color=CLR_INVALID)
 [設定] Closeボタン設定 [詳解]
 
void SetFrameBitmap (CBitmapHandle bmp)
 [設定] フレームビットマップ設定 [詳解]
 
void SetFrameBitmap (CBitmapHandle bmp1, CBitmapHandle bmp2)
 [設定] フレームビットマップ設定 [詳解]
 
void SetFrameBitmap (const IDrawable &draw, CBitmapHandle bmp)
 [設定] フレームビットマップ設定 [詳解]
 
void SetFrameTransColor (COLORREF color=CLR_AUTOSELECT)
 [設定] 透過色指定 [詳解]
 
void SetFrameWidths (const RECT &frameWidths, int titleHeight=-1)
 [設定] 大きさ設定. [詳解]
 
void SetFrameWidths (int frameWidth=-1, int titleHeight=-1)
 [設定] 大きさ設定. [詳解]
 
void SetHelpButtonBitmap (const POINT &pos, CBitmapHandle bmp, int num=4, COLORREF color=CLR_INVALID)
 [設定] Helpボタン設定 [詳解]
 
void SetMaximumButtonBitmap (const POINT &pos, CBitmapHandle bmp, int num=4, COLORREF color=CLR_INVALID)
 [設定] Maximumボタン設定 [詳解]
 
void SetMinimumButtonBitmap (const POINT &pos, CBitmapHandle bmp, int num=4, COLORREF color=CLR_INVALID)
 [設定] Minimumボタン設定 [詳解]
 
void SetRestoreButtonBitmap (const POINT &pos, CBitmapHandle bmp, int num=4, COLORREF color=CLR_INVALID)
 [設定] Restoreボタン設定 [詳解]
 
void SetTextColor (COLORREF color)
 [設定] テキスト色. [詳解]
 
void SetTitleBitmap (const IDrawable &draw)
 [設定] タイトルバー描画情報指定. [詳解]
 
 ~CCustomWindowFrameMaster (void)
 デストラクタ [詳解]
 

静的公開メンバ関数

static void Unhook (void)
 [設定] アンフック. [詳解]
 

限定公開メンバ関数

virtual void OnAttached (void)
 [通知] アタッチ通知. [詳解]
 
virtual void OnDetached (void)
 [通知] デタッチ通知 [詳解]
 
virtual void OnDetacted (void)
 [通知] デタッチ通知. [詳解]
 
virtual void PreAttach (HWND hWnd)
 [通知] アタッチ直前通知 [詳解]
 
virtual void PreDetach (void)
 [通知] デタッチ直前通知. [詳解]
 

限定公開変数類

HWND m_hWnd
 管理しているウィンドウ [詳解]
 

詳解

カスタムウィンドウフレームマスタークラス.

ダイアログの NonClient 部分を変更できます。また、透過色を指定し、矩形以外のフレームにも対応します。
覚え書き
プロセスをローカルフックしているので、プロセスで表示される全ウィンドウの NonClient 部分を変更できます。
使用例
BOOL CFooApp::InitInstance()
{
;
// フレームの設定
CWindowCaptionDrawer ttd(NULL);
ttd.SetBarColor(RGB(255, 0, 0), RGB(0, 0, 0));
frame.SetTitleBitmap(ttd);
frame.SetFrameBitmap(IDB_FRAME);
frame.SetCloseButtonBitmap(CPoint(-6, 5), IDB_CLOSE, 4);
;
// フックする。
frame.Hook();
;
CCustomWindowFrameMaster(void)
コンストラクタ
必要ファイル
TnbMfcCustomWindowFrameMaster.h
日付
08/10/06 新規作成
09/04/22 マップを CSimpleMap に変更
09/05/12 VISTA の場合、Hookしないように変更。
10/04/26 Hook のためのインスタンスは保持しておく必要をなくした。

TnbMfcCustomWindowFrameMaster.h64 行目に定義があります。

構築子と解体子

◆ CCustomWindowFrameMaster()

コンストラクタ

TnbMfcCustomWindowFrameMaster.h70 行目に定義があります。

◆ ~CCustomWindowFrameMaster()

デストラクタ

TnbMfcCustomWindowFrameMaster.h75 行目に定義があります。

関数詳解

◆ Attach()

bool Attach ( HWND  hWnd)
inherited

[設定] アタッチ

引数
hWnd対象のウィンドウ
戻り値
true成功。
false失敗。

TnbWindowProcedureHooker.h103 行目に定義があります。

◆ CopyParameter()

void CopyParameter ( const CCustomWindowFrame o)
inherited

[設定] 設定の複製.

覚え書き
ボタンや画像の設定をコピーします。
引数
oコピー元。複製するので元は破棄してもかまいません。

TnbMfcCustomWindowFrame.h461 行目に定義があります。

◆ Destroy()

void Destroy ( void  )
inherited

[設定] 破棄

覚え書き
Detach() とは異なり、 PreDetach() , OnDetached() が呼び出されません。

TnbWindowProcedureHooker.h156 行目に定義があります。

◆ Detach()

void Detach ( void  )
inherited

[設定] デタッチ

TnbWindowProcedureHooker.h135 行目に定義があります。

◆ GetBackground()

HBRUSH GetBackground ( bool  isActive)
inherited

[取得] 背景ブラシ取得

引数
isActivetrue ならアクティブ、 false なら非アクティブのブラシを返します。
戻り値
背景ブラシ

TnbMfcCustomWindowFrame.h451 行目に定義があります。

◆ GetExStyle()

DWORD GetExStyle ( void  ) const
inherited

[取得] 拡張スタイル取得

戻り値
拡張スタイル

TnbWindowProcedureHooker.h220 行目に定義があります。

◆ GetSafeHwnd()

HWND GetSafeHwnd ( void  ) const
inherited

[取得] ウィンドウハンドル取得

戻り値
NULLアタッチしていない
NULL以外ウィンドウハンドル

TnbWindowProcedureHooker.h176 行目に定義があります。

◆ GetStyle()

DWORD GetStyle ( void  ) const
inherited

[取得] スタイル取得

戻り値
スタイル

TnbWindowProcedureHooker.h211 行目に定義があります。

◆ Hook()

void Hook ( bool  isDisableVista = false)

[設定] フック.

プロセスで一つ、フック出来ます。本インスタンス破棄後も、フックは有効です。

引数
isDisableVistatrue を指定すると、 VISTA以降の場合、フックしません。 false を指定すると、 VISTA以降でも、フックします。

TnbMfcCustomWindowFrameMaster.h94 行目に定義があります。

◆ IsAttached()

bool IsAttached ( void  ) const
inherited

[確認] アタッチ中?

戻り値
trueアタッチ中
false

TnbWindowProcedureHooker.h92 行目に定義があります。

◆ ModifyStyle()

void ModifyStyle ( DWORD  dwRemove,
DWORD  dwAdd 
)
inherited

[変更] スタイル変更

引数
dwRemove除去されるウィンドウ スタイル
dwAdd追加されるウィンドウ スタイル

TnbWindowProcedureHooker.h230 行目に定義があります。

◆ ModifyStyleEx()

void ModifyStyleEx ( DWORD  dwRemove,
DWORD  dwAdd 
)
inherited

[変更] 拡張スタイル変更

引数
dwRemove除去されるウィンドウ 拡張スタイル
dwAdd追加されるウィンドウ 拡張スタイル

TnbWindowProcedureHooker.h245 行目に定義があります。

◆ OnAttached()

virtual void OnAttached ( void  )
protectedvirtualinherited

[通知] アタッチ通知.

アタッチされたときに通知されます。

CWindowProcedureHookerを再実装しています。

TnbMfcCustomWindowFrame.h548 行目に定義があります。

◆ OnDetached()

virtual void OnDetached ( void  )
protectedvirtualinherited

[通知] デタッチ通知

TnbWindowProcedureHooker.h276 行目に定義があります。

◆ OnDetacted()

virtual void OnDetacted ( void  )
protectedvirtualinherited

[通知] デタッチ通知.

デタッチされたときに通知されます。

TnbMfcCustomWindowFrame.h588 行目に定義があります。

◆ PostMessage()

BOOL PostMessage ( UINT  message,
WPARAM  wParam,
LPARAM  lParam 
)
inherited

[処理] PostMessage.

アタッチしているウィンドウにPostMessageします。

引数
messageメッセージ。
wParamWPARAM。
lParamLPARAM。
戻り値
結果。

TnbWindowProcedureHooker.h202 行目に定義があります。

◆ PreAttach()

virtual void PreAttach ( HWND  hWnd)
protectedvirtualinherited

[通知] アタッチ直前通知

引数
hWndアタッチするHWND。

CWindowProcedureHookerを再実装しています。

TnbMfcCustomWindowFrame.h510 行目に定義があります。

◆ PreDetach()

virtual void PreDetach ( void  )
protectedvirtualinherited

[通知] デタッチ直前通知.

デタッチする直前に通知されます。

CWindowProcedureHookerを再実装しています。

TnbMfcCustomWindowFrame.h579 行目に定義があります。

◆ ReferMenuBar()

CDrawingMenuBar & ReferMenuBar ( void  )
inherited

[参照] メニューバー参照.

保持しているメニューバーの参照を返します。

戻り値
参照.

TnbMfcCustomWindowFrame.h489 行目に定義があります。

◆ ReferPopupMenu()

CDrawingMenu & ReferPopupMenu ( void  )
inherited

[参照] メニューバー参照.

保持しているメニューバーの参照を返します。

戻り値
参照.

TnbMfcCustomWindowFrame.h499 行目に定義があります。

◆ RegisterMenu()

DWORD RegisterMenu ( CMenu *  pMenu)
inherited

[登録] メニュー登録.

本インスタンスがアタッチしているウィンドウに関連づいているメニューを 登録します。戻り値のベースクッキーを使い、メニューのオーナードローのアイテムのデータを設定することで、 オーナードローメッセージを処理することが出来ます。

覚え書き
通常 CDrawingMenu CDrawingMenuBar クラス内で、暗黙的に使用されます。
引数
pMenuメニュー。作成してある必要があります。
戻り値
ベースクッキー。

TnbMfcDrawingMenu.h58 行目に定義があります。

◆ SendMessage()

LRESULT SendMessage ( UINT  message,
WPARAM  wParam,
LPARAM  lParam 
)
inherited

[処理] SendMessage.

アタッチしているウィンドウにSendMessageします。

引数
messageメッセージ。
wParamWPARAM。
lParamLPARAM。
戻り値
結果。

TnbWindowProcedureHooker.h189 行目に定義があります。

◆ SetCloseButtonBitmap()

void SetCloseButtonBitmap ( const POINT &  pos,
CBitmapHandle  bmp,
int  num = 4,
COLORREF  color = CLR_INVALID 
)
inherited

[設定] Closeボタン設定

引数
posボタン位置。座標がマイナスの場合、右端(下端)からのオフセットになります。
bmpボタン画像。同じ大きさの画像を、Normal,Press,Hover,Disable の順に横に並べた画像を指定します。
numボタン画像の数。通常省略します(4になります)。
color透過する色。 CLR_INVALID を指定すると、透過色はなし。

TnbMfcCustomWindowFrame.h374 行目に定義があります。

◆ SetFrameBitmap() [1/3]

void SetFrameBitmap ( CBitmapHandle  bmp)
inherited

[設定] フレームビットマップ設定

引数
bmp画像。この画像は 9分割され、それぞれの隅、枠、中央に使われます。

TnbMfcCustomWindowFrame.h267 行目に定義があります。

◆ SetFrameBitmap() [2/3]

void SetFrameBitmap ( CBitmapHandle  bmp1,
CBitmapHandle  bmp2 
)
inherited

[設定] フレームビットマップ設定

引数
bmp1アクティブ時の画像。この画像は 9分割され、それぞれの隅、枠、中央に使われます。
bmp2非アクティブ時の画像。この画像は 9分割され、それぞれの隅、枠、中央に使われます。

TnbMfcCustomWindowFrame.h281 行目に定義があります。

◆ SetFrameBitmap() [3/3]

void SetFrameBitmap ( const IDrawable draw,
CBitmapHandle  bmp 
)
inherited

[設定] フレームビットマップ設定

引数
drawフレーム描画情報。
bmp中央のブラシ画像を指定します。

TnbMfcCustomWindowFrame.h297 行目に定義があります。

◆ SetFrameTransColor()

void SetFrameTransColor ( COLORREF  color = CLR_AUTOSELECT)
inherited

[設定] 透過色指定

覚え書き
フレームビットマップの透過色を指定できます。これにより任意の形のウィンドウが作成できます。 本メソッドを使わない場合、デフォルトは矩形のウィンドウになります。
引数
color透過色。 CLR_AUTOSELECT を使うと右下の色を透過色とします。

TnbMfcCustomWindowFrame.h311 行目に定義があります。

◆ SetFrameWidths() [1/2]

void SetFrameWidths ( const RECT &  frameWidths,
int  titleHeight = -1 
)
inherited

[設定] 大きさ設定.

NonClientの上下左右の幅、および、タイトルバーの高さを指定します。

注意
メニューがあるウィンドウの場合、本メソッドは正しく機能しません。メニュー無しの場合のみ使用してください。
引数
frameWidthsNoClientの上下左右の幅(RECT本来の使い方ではない)
titleHeightタイトルバーの高さ。省略するとシステムの高さが使われます。

TnbMfcCustomWindowFrame.h334 行目に定義があります。

◆ SetFrameWidths() [2/2]

void SetFrameWidths ( int  frameWidth = -1,
int  titleHeight = -1 
)
inherited

[設定] 大きさ設定.

NonClientの上下左右の幅、および、タイトルバーの高さを指定します。

注意
メニューがあるウィンドウの場合、本メソッドは正しく機能しません。メニュー無しの場合のみ使用してください。
引数
frameWidthNoClientの上下左右のすべての幅。省略するとシステムの幅が使われます。
titleHeightタイトルバーの高さ。省略するとシステムの高さが使われます。

TnbMfcCustomWindowFrame.h353 行目に定義があります。

◆ SetHelpButtonBitmap()

void SetHelpButtonBitmap ( const POINT &  pos,
CBitmapHandle  bmp,
int  num = 4,
COLORREF  color = CLR_INVALID 
)
inherited

[設定] Helpボタン設定

引数
posボタン位置。座標がマイナスの場合、右端(下端)からのオフセットになります。
bmpボタン画像。同じ大きさの画像を、Normal,Press,Hover,Disable の順に横に並べた画像を指定します。
numボタン画像の数。通常省略します(4になります)。
color透過する色。 CLR_INVALID を指定すると、透過色はなし。

TnbMfcCustomWindowFrame.h426 行目に定義があります。

◆ SetMaximumButtonBitmap()

void SetMaximumButtonBitmap ( const POINT &  pos,
CBitmapHandle  bmp,
int  num = 4,
COLORREF  color = CLR_INVALID 
)
inherited

[設定] Maximumボタン設定

引数
posボタン位置。座標がマイナスの場合、右端(下端)からのオフセットになります。
bmpボタン画像。同じ大きさの画像を、Normal,Press,Hover,Disable の順に横に並べた画像を指定します。
numボタン画像の数。通常省略します(4になります)。
color透過する色。 CLR_INVALID を指定すると、透過色はなし。

TnbMfcCustomWindowFrame.h400 行目に定義があります。

◆ SetMinimumButtonBitmap()

void SetMinimumButtonBitmap ( const POINT &  pos,
CBitmapHandle  bmp,
int  num = 4,
COLORREF  color = CLR_INVALID 
)
inherited

[設定] Minimumボタン設定

引数
posボタン位置。座標がマイナスの場合、右端(下端)からのオフセットになります。
bmpボタン画像。同じ大きさの画像を、Normal,Press,Hover,Disable の順に横に並べた画像を指定します。
numボタン画像の数。通常省略します(4になります)。
color透過する色。 CLR_INVALID を指定すると、透過色はなし。

TnbMfcCustomWindowFrame.h387 行目に定義があります。

◆ SetRestoreButtonBitmap()

void SetRestoreButtonBitmap ( const POINT &  pos,
CBitmapHandle  bmp,
int  num = 4,
COLORREF  color = CLR_INVALID 
)
inherited

[設定] Restoreボタン設定

引数
posボタン位置。座標がマイナスの場合、右端(下端)からのオフセットになります。通常、Maximumボタンと同じ場所を指定します。
bmpボタン画像。同じ大きさの画像を、Normal,Press,Hover,Disable の順に横に並べた画像を指定します。
numボタン画像の数。通常省略します(4になります)。
color透過する色。 CLR_INVALID を指定すると、透過色はなし。

TnbMfcCustomWindowFrame.h413 行目に定義があります。

◆ SetTextColor()

void SetTextColor ( COLORREF  color)
inherited

[設定] テキスト色.

引数
colorテキスト色

TnbMfcCustomWindowFrame.h436 行目に定義があります。

◆ SetTitleBitmap()

void SetTitleBitmap ( const IDrawable draw)
inherited

[設定] タイトルバー描画情報指定.

覚え書き
フレームビットマップでタイトルを書くことも出来ますが、別途子のメソッドで指定することも出来ます。 指定しない場合、フレーム描画上に CWindowCaptionDrawer() でアイコンとウィンドウテキストが描画されます。
引数
draw描画情報

TnbMfcCustomWindowFrame.h322 行目に定義があります。

◆ Unhook()

static void Unhook ( void  )
static

[設定] アンフック.

Hook() したものを解除します。

TnbMfcCustomWindowFrameMaster.h113 行目に定義があります。

メンバ詳解

◆ m_hWnd

HWND m_hWnd
protectedinherited

管理しているウィンドウ

TnbWindowProcedureHooker.h296 行目に定義があります。