TNB Library
クラス | 公開型 | 公開メンバ関数 | 限定公開メンバ関数 | 全メンバ一覧
CAbstractDrawingMenu クラスabstract

描画情報Menuコントロール [詳解]

#include <TnbMfcDrawingMenu.h>

+ CAbstractDrawingMenu の継承関係図

公開型

enum  ESelectMarkType { BACKGROUND , OVERLAP }
 セレクトマークタイプ [詳解]
 

公開メンバ関数

void AdditionRelatedHwnd (HWND hWnd)
 [追加] 関連Windowハンドル追加 [詳解]
 
BOOL AppendDrawingMenu (UINT nFlags, const IDrawable &draw, LPCSTR lpszText=NULL, UINT_PTR nIDNewItem=0)
 [追加] メニュー追加. [詳解]
 
 CAbstractDrawingMenu (void)
 コンストラクタ [詳解]
 
void CopyParameter (const CAbstractDrawingMenu &o)
 [設定] 設定の複製. [詳解]
 
virtual void DrawItem (LPDRAWITEMSTRUCT lpDrawItemStruct)
 [通知] オーナードロー処理. [詳解]
 
HWND GetParentHwnd (void) const
 [取得] 親ウィンドウハンドル取得. [詳解]
 
BOOL InsertDrawingMenu (UINT nPosition, UINT nFlags, const IDrawable &draw, LPCSTR lpszText=NULL, UINT_PTR nIDNewItem=0)
 [追加] メニュー追加. [詳解]
 
bool IsValid (void) const
 [確認] 有効確認. [詳解]
 
virtual void MeasureItem (LPMEASUREITEMSTRUCT lpMeasureItemStruct)
 [通知] オーナードロー時. [詳解]
 
void PostMessageToRelatedHwnd (UINT message, WPARAM wParam=0, LPARAM lParam=0)
 [処理] 関連Windowハンドルへポスト [詳解]
 
void SetBackColor (COLORREF color)
 [設定] 背景色設定. [詳解]
 
bool SetBackgroundDrawer (const IDrawable &draw)
 [設定] 背景描画指定. [詳解]
 
void SetDefaultMarkDrawer (COLORREF base=::GetSysColor(COLOR_MENU))
 [設定] デフォルトのマーク描画指定. [詳解]
 
bool SetDisabledStyleDrawer (const IDrawable &draw)
 [設定] 無効状態描画指定. [詳解]
 
bool SetFocusMarkDrawer (const IDrawable &draw)
 [設定] フォーカスマーク描画指定. [詳解]
 
void SetLeftMargin (int m)
 [設定] 文字表示位置指定 [詳解]
 
bool SetSelectMarkDrawer (const IDrawable &draw, ESelectMarkType type=OVERLAP)
 [設定] 選択マーク描画指定. [詳解]
 
bool SetSelectMarkDrawer (const IDrawable &draw1, const IDrawable &draw2, ESelectMarkType type=OVERLAP)
 [設定] 選択マーク描画指定. [詳解]
 
void SetTextColor (COLORREF color1, COLORREF color2=CLR_INVALID)
 [設定] 文字色指定 [詳解]
 
void SetTextDrawer (const CTextDrawer &text)
 [設定] テキスト描画情報指定 [詳解]
 
void SetTextFont (HFONT font)
 [設定] 文字フォント指定 [詳解]
 
 ~CAbstractDrawingMenu (void)
 デストラクタ [詳解]
 

限定公開メンバ関数

void AllReset (void)
 [設定] 全設定リセット. [詳解]
 
void BeginItemPaint (void)
 [処理] 描画開始. [詳解]
 
void DrawBackColor (HDC dc, const RECT &rect)
 [描画] 背景色描画 [詳解]
 
void DrawBackground (HDC dc, const RECT &rect, LPARAM lParam=0)
 [描画] 背景表示 [詳解]
 
void DrawDisabledStyle (HDC dc, const RECT &rect, LPARAM lParam=0)
 [描画] 無効状態描画. [詳解]
 
void DrawFocusMark (HDC dc, const RECT &rect, LPARAM lParam=0)
 [描画] フォーカスマーク表示 [詳解]
 
void DrawSelectMark (HDC dc, const RECT &rect, bool isActive, LPARAM lParam=0)
 [描画] 選択マーク表示 [詳解]
 
void DrawText (HDC dc, const RECT &rect, LPCTSTR lpsz, DWORD drawStyle, LPARAM lParam=0)
 [描画] 文字列描画 [詳解]
 
void DrawText (HDC dc, const RECT &rect, LPCTSTR lpsz, LPARAM lParam=0)
 [描画] 文字列描画 [詳解]
 
bool EndItemPaint (void)
 [処理] 描画終了. [詳解]
 
COLORREF GetBackColor (void) const
 [取得] 背景色取得. [詳解]
 
ESelectMarkType GetSelectMarkType (void) const
 [取得] セレクトマークタイプ [詳解]
 
DWORD GetTextDrawStyle (void) const
 [取得] 文字列描画スタイル取得. [詳解]
 
virtual void OnFoundSubMenu (HMENU hMenu, COwnerdrawMenuSupportProcedureHooker *pProc)=0
 [通知] サブメニュ発見. [詳解]
 
void Regist (COwnerdrawMenuSupportProcedureHooker *pProc, bool isAllOwnerDraw=true, bool withSubMenu=true)
 [設定] 登録. [詳解]
 
void SetDefaultTextDrawer (CWnd *pWnd)
 [設定] テキスト描画情報設定. [詳解]
 

詳解

描画情報Menuコントロール

覚え書き
SetSelectMarkDrawer() のアクティブ選択マークは Hover時、 非アクティブ選択マークは選択時に使用されます。
todo:

現在、文字と背景の色のみ変更可能です。

WM_MEASUREITEM にメニューハンドル情報がないため、UserData などで一元管理する必要あり。

必要ファイル
TnbMfcDrawingMenu.h
日付
08/10/09 新規作成
10/04/19 サブメニュー対応
10/05/13 フォント改修
12/11/06 ステータス取得方法を改善。

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

列挙型メンバ詳解

◆ ESelectMarkType

enum ESelectMarkType
inherited

セレクトマークタイプ

列挙値
BACKGROUND 

背景に描画

OVERLAP 

アイテム描画上に描画

TnbMfcAbstractDrawingCtrl.h43 行目に定義があります。

構築子と解体子

◆ CAbstractDrawingMenu()

コンストラクタ

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

◆ ~CAbstractDrawingMenu()

~CAbstractDrawingMenu ( void  )

デストラクタ

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

関数詳解

◆ AdditionRelatedHwnd()

void AdditionRelatedHwnd ( HWND  hWnd)
inherited

[追加] 関連Windowハンドル追加

覚え書き
コントロールと関連するWindowハンドルを登録しておくことで、表示非表示をサポートできます。
引数
hWndウィンドウハンドル

TnbMfcAbstractDrawingCtrl.h182 行目に定義があります。

◆ AllReset()

void AllReset ( void  )
protectedinherited

[設定] 全設定リセット.

Set系メソッドで設定した内容を全部破棄します。

TnbMfcAbstractDrawingCtrl.h419 行目に定義があります。

◆ AppendDrawingMenu()

BOOL AppendDrawingMenu ( UINT  nFlags,
const IDrawable draw,
LPCSTR  lpszText = NULL,
UINT_PTR  nIDNewItem = 0 
)

[追加] メニュー追加.

引数
nFlagsメニュー状態。以下の値を一つ以上指定できます。
MF_CHECKED MF_UNCHECKED とトグルで動作します。既定のチェック マークを項目の隣に付けます。
MF_UNCHECKED MF_CHECKED とトグルで動作します。項目の隣からチェック マークを削除します。
MF_DISABLED メニュー項目を選択できないようにしますが、淡色表示にはしません。
MF_ENABLED メニュー項目を選択できるようにして、淡色表示から元の表示に戻します。
MF_GRAYED メニュー項目を選択できないようにして、淡色表示にします。
MF_MENUBARBREAK スタティック メニューの新しい行、またはポップアップ メニューの新しい桁位置に項目を置きます。 ポップアップ メニューの新しい桁位置と古い桁位置を縦線で分けます。
MF_MENUBREAK スタティック メニューの新しい行、またはポップアップ メニューの新しい桁位置に項目を置きます。 桁位置の間には分割線は描かれません。
※ MF_OWNERDRAW , MF_SEPARATOR , MF_STRING は指定できません。
draw描画情報。
lpszText文字。
nIDNewItem新しいメニュー項目のコマンド ID を指定します。 nFlags の設定が MF_POPUP になっているときは、ポップアップ メニューのメニュー ハンドル (HMENU) を指定します。
戻り値
TRUE成功。
FALSE失敗。

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

◆ BeginItemPaint()

void BeginItemPaint ( void  )
protectedinherited

[処理] 描画開始.

覚え書き
一連の描画の最初にコールします。

TnbMfcAbstractDrawingCtrl.h370 行目に定義があります。

◆ CopyParameter()

void CopyParameter ( const CAbstractDrawingMenu o)

[設定] 設定の複製.

覚え書き
文字の色、背景やマークの描画情報の設定が複製されます。メニュー内容はコピーされません。
引数
oコピー元

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

◆ DrawBackColor()

void DrawBackColor ( HDC  dc,
const RECT &  rect 
)
protectedinherited

[描画] 背景色描画

引数
dcデバイスコンテキスト。
rect表示位置。

TnbMfcAbstractDrawingCtrl.h289 行目に定義があります。

◆ DrawBackground()

void DrawBackground ( HDC  dc,
const RECT &  rect,
LPARAM  lParam = 0 
)
protectedinherited

[描画] 背景表示

引数
dcデバイスコンテキスト。
rect表示位置。
lParamIDrawable::DrawEx() の LPARAM の値

TnbMfcAbstractDrawingCtrl.h256 行目に定義があります。

◆ DrawDisabledStyle()

void DrawDisabledStyle ( HDC  dc,
const RECT &  rect,
LPARAM  lParam = 0 
)
protectedinherited

[描画] 無効状態描画.

最後に使用されます。

引数
dcデバイスコンテキスト。
rect表示位置。
lParamIDrawable::DrawEx() の LPARAM の値

TnbMfcAbstractDrawingCtrl.h279 行目に定義があります。

◆ DrawFocusMark()

void DrawFocusMark ( HDC  dc,
const RECT &  rect,
LPARAM  lParam = 0 
)
protectedinherited

[描画] フォーカスマーク表示

引数
dcデバイスコンテキスト。
rect表示位置。
lParamIDrawable::DrawEx() の LPARAM の値

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

◆ DrawItem()

virtual void DrawItem ( LPDRAWITEMSTRUCT  lpDrawItemStruct)
virtual

[通知] オーナードロー処理.

オーナードロー時コールされます。

覚え書き
描画情報を用意することで、任意に描画させることも出来ます。
引数
lpDrawItemStruct描画情報.

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

◆ DrawSelectMark()

void DrawSelectMark ( HDC  dc,
const RECT &  rect,
bool  isActive,
LPARAM  lParam = 0 
)
protectedinherited

[描画] 選択マーク表示

引数
dcデバイスコンテキスト。
rect表示位置。
isActivetrue ならアクティブ、 false ならノンアクティブの選択マークを書きます。
lParamIDrawable::DrawEx() の LPARAM の値

TnbMfcAbstractDrawingCtrl.h238 行目に定義があります。

◆ DrawText() [1/2]

void DrawText ( HDC  dc,
const RECT &  rect,
LPCTSTR  lpsz,
DWORD  drawStyle,
LPARAM  lParam = 0 
)
protectedinherited

[描画] 文字列描画

引数
dcデバイスコンテキスト。
rect表示位置。
lpsz文字列
drawStyleDrawTextスタイル指定。
lParamIDrawable::DrawEx() の LPARAM の値

TnbMfcAbstractDrawingCtrl.h327 行目に定義があります。

◆ DrawText() [2/2]

void DrawText ( HDC  dc,
const RECT &  rect,
LPCTSTR  lpsz,
LPARAM  lParam = 0 
)
protectedinherited

[描画] 文字列描画

引数
dcデバイスコンテキスト。
rect表示位置。
lpsz文字列
lParamIDrawable::DrawEx() の LPARAM の値

TnbMfcAbstractDrawingCtrl.h308 行目に定義があります。

◆ EndItemPaint()

bool EndItemPaint ( void  )
protectedinherited

[処理] 描画終了.

覚え書き
一連の描画の最後にコールします。
戻り値
true変化あり。
false変化無し。

TnbMfcAbstractDrawingCtrl.h388 行目に定義があります。

◆ GetBackColor()

COLORREF GetBackColor ( void  ) const
protectedinherited

[取得] 背景色取得.

戻り値

TnbMfcAbstractDrawingCtrl.h226 行目に定義があります。

◆ GetParentHwnd()

HWND GetParentHwnd ( void  ) const

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

戻り値
ウィンドウハンドル

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

◆ GetSelectMarkType()

ESelectMarkType GetSelectMarkType ( void  ) const
protectedinherited

[取得] セレクトマークタイプ

戻り値
タイプ

TnbMfcAbstractDrawingCtrl.h217 行目に定義があります。

◆ GetTextDrawStyle()

DWORD GetTextDrawStyle ( void  ) const
protectedinherited

[取得] 文字列描画スタイル取得.

戻り値
文字列描画スタイル

TnbMfcAbstractDrawingCtrl.h343 行目に定義があります。

◆ InsertDrawingMenu()

BOOL InsertDrawingMenu ( UINT  nPosition,
UINT  nFlags,
const IDrawable draw,
LPCSTR  lpszText = NULL,
UINT_PTR  nIDNewItem = 0 
)

[追加] メニュー追加.

引数
nPosition直前に新しいメニュー項目が挿入される、メニュー項目を指定します。nPosition の解釈は、次に挙げる nFlags の設定により決まります。
nFlagsメニュー状態。 AppendDrawingMenu() の nFlags 以外に値を一つ指定します。
MF_BYCOMMAND パラメータを既存のメニュー項目のコマンド ID で指定することを示します。MF_BYCOMMAND と MF_BYPOSITION がどちらも設定されていないときの既定の設定になります。 MF_BYPOSITION パラメータを既存のメニュー項目の位置で指定することを示します。最初の項目位置は 0 です。nPosition が -1 のときは、新しいメニュー項目はメニューの最後に追加されます。
draw描画情報。
lpszText文字。
nIDNewItem新しいメニュー項目のコマンド ID を指定します。 nFlags の設定が MF_POPUP になっているときは、ポップアップ メニューのメニュー ハンドル (HMENU) を指定します。
戻り値
TRUE成功。
FALSE失敗。

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

◆ IsValid()

bool IsValid ( void  ) const

[確認] 有効確認.

覚え書き
WIN32API IsMenu を使用しています。
戻り値
true有効.
false無効

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

◆ MeasureItem()

virtual void MeasureItem ( LPMEASUREITEMSTRUCT  lpMeasureItemStruct)
virtual

[通知] オーナードロー時.

ドロー時Itemの高さ確認のためにコールされる

引数
lpMeasureItemStruct情報

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

◆ OnFoundSubMenu()

virtual void OnFoundSubMenu ( HMENU  hMenu,
COwnerdrawMenuSupportProcedureHooker pProc 
)
protectedpure virtual

[通知] サブメニュ発見.

Regist() で登録中にサブメニューを見つけた場合、通知されます。

引数
hMenu発見したサブメニュー
pProc親となるプロシージャ

CDrawingSubMenuで実装されています。

◆ PostMessageToRelatedHwnd()

void PostMessageToRelatedHwnd ( UINT  message,
WPARAM  wParam = 0,
LPARAM  lParam = 0 
)
inherited

[処理] 関連Windowハンドルへポスト

引数
messageメッセージ
wParamWPARAM
lParamLPARAM

TnbMfcAbstractDrawingCtrl.h193 行目に定義があります。

◆ Regist()

void Regist ( COwnerdrawMenuSupportProcedureHooker pProc,
bool  isAllOwnerDraw = true,
bool  withSubMenu = true 
)
protected

[設定] 登録.

引数
pProc親となるプロシージャ
isAllOwnerDrawtrue を指定するとアタッチしたアイテム、すべてオーナードロー属性を付加します。
withSubMenutrue を指定すると、サブメニューも、すべてオーナードロー属性を付加します。

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

◆ SetBackColor()

void SetBackColor ( COLORREF  color)
inherited

[設定] 背景色設定.

引数
color

TnbMfcAbstractDrawingCtrl.h157 行目に定義があります。

◆ SetBackgroundDrawer()

bool SetBackgroundDrawer ( const IDrawable draw)
inherited

[設定] 背景描画指定.

引数
drawResize() が有効な各アイテムの背景描画情報。
戻り値
true成功。
false失敗。

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

◆ SetDefaultMarkDrawer()

void SetDefaultMarkDrawer ( COLORREF  base = ::GetSysColor(COLOR_MENU))

[設定] デフォルトのマーク描画指定.

覚え書き
フォーカスマーク、選択マークをWindow標準と同じ様にします。
引数
base元の絵の背景に当たる色。 CLR_INVALID を指定すると、左下の色をそれとする。

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

◆ SetDefaultTextDrawer()

void SetDefaultTextDrawer ( CWnd pWnd)
protectedinherited

[設定] テキスト描画情報設定.

覚え書き
設定されていない場合デフォルトの描画情報を設定します。
引数
pWndウィンドウ

TnbMfcAbstractDrawingCtrl.h357 行目に定義があります。

◆ SetDisabledStyleDrawer()

bool SetDisabledStyleDrawer ( const IDrawable draw)
inherited

[設定] 無効状態描画指定.

覚え書き
全て描画後にこの描画情報が使用されます。
引数
drawResize() が有効な無効状態描画情報。
戻り値
true成功。
false失敗。

TnbMfcAbstractDrawingCtrl.h148 行目に定義があります。

◆ SetFocusMarkDrawer()

bool SetFocusMarkDrawer ( const IDrawable draw)
inherited

[設定] フォーカスマーク描画指定.

引数
drawResize() が有効なフォーカスマークの描画情報。
戻り値
true成功。
false失敗。

TnbMfcAbstractDrawingCtrl.h136 行目に定義があります。

◆ SetLeftMargin()

void SetLeftMargin ( int  m)

[設定] 文字表示位置指定

引数
m左からのマージン。 -1 を指定すると、中央に配置されます。

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

◆ SetSelectMarkDrawer() [1/2]

bool SetSelectMarkDrawer ( const IDrawable draw,
ESelectMarkType  type = OVERLAP 
)
inherited

[設定] 選択マーク描画指定.

覚え書き
アクティブ時と非アクティブ時で同じ選択マークを使います。
引数
drawResize() が有効な選択マークの描画情報。
type選択マークのタイプ。省略すると、 OVERLAP になります。
戻り値
true成功。
false失敗。

TnbMfcAbstractDrawingCtrl.h105 行目に定義があります。

◆ SetSelectMarkDrawer() [2/2]

bool SetSelectMarkDrawer ( const IDrawable draw1,
const IDrawable draw2,
ESelectMarkType  type = OVERLAP 
)
inherited

[設定] 選択マーク描画指定.

引数
draw1Resize() が有効なアクティブ時の選択マークの描画情報。
draw2Resize() が有効な非アクティブ時の選択マークの描画情報。
type選択マークのタイプ。省略すると、 OVERLAP になります。
戻り値
true成功。
false失敗。

TnbMfcAbstractDrawingCtrl.h124 行目に定義があります。

◆ SetTextColor()

void SetTextColor ( COLORREF  color1,
COLORREF  color2 = CLR_INVALID 
)

[設定] 文字色指定

覚え書き
指定しなければシステムの色が使用されます。
引数
color1有効項目文字色
color2無効項目文字色

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

◆ SetTextDrawer()

void SetTextDrawer ( const CTextDrawer text)
inherited

[設定] テキスト描画情報指定

覚え書き
指定しない場合でも、標準相当の描画が行われます。
引数
textテキスト描画

TnbMfcAbstractDrawingCtrl.h172 行目に定義があります。

◆ SetTextFont()

void SetTextFont ( HFONT  font)

[設定] 文字フォント指定

覚え書き
指定しなければシステムのフォントが使用されます。
引数
font文字フォント。

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