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

カスタム描画抽象ListCtrlコントロール [詳解]

#include <TnbMfcAbstractCustomListCtrl.h>

+ CAbstractCustomListCtrl の継承関係図

クラス

struct  TDrawParam
 表示用パラメータ [詳解]
 

公開型

enum  EState {
  LVIS_ACTIVATING , LVIS_CUT , LVIS_DROPHILITED , LVIS_FOCUSED ,
  LVIS_OVERLAYMASK , LVIS_SELECTED , LVIS_STATEIMAGEMASK
}
 アイテム状態値. [詳解]
 

公開メンバ関数

 CAbstractCustomListCtrl (void)
 コンストラクタ [詳解]
 
BOOL DeleteAllItems (void)
 [設定] 全アイテム削除. [詳解]
 
BOOL DeleteColumn (int nCol)
 [設定] カラム削除. [詳解]
 
BOOL DeleteItem (int nItem)
 [設定] アイテム削除. [詳解]
 
int GetCountPerPage () const
 [取得] 垂直方向に表示されるアイテム数 [詳解]
 
DWORD GetExStyle (void) const
 [取得] ウィンドウ拡張スタイル取得. [詳解]
 
DWORD GetExtendedStyle (void)
 [取得] 専用拡張スタイル取得. [詳解]
 
POSITION GetFirstSelectedItemPosition () const
 [取得] 選択アイテム検索. [詳解]
 
int GetItemCount () const
 [取得] アイテム数取得 [詳解]
 
UINT GetItemState (int nItem, UINT nMask) const
 [取得] アイテム状態取得 [詳解]
 
int GetNextItem (int nItem, int nFlags) const
 [取得] アイテム検索 [詳解]
 
int GetNextSelectedItem (POSITION &_pos) const
 [取得] 選択アイテム検索. [詳解]
 
HWND GetSafeHwnd (void) const
 [取得] ウィンドウハンドル取得. [詳解]
 
UINT GetSelectedCount () const
 [取得] 選択アイテム数取得. [詳解]
 
int GetSelectedItem (void) const
 [取得] 選択アイテム取得. [詳解]
 
DWORD GetStyle (void) const
 [取得] ウィンドウスタイル取得. [詳解]
 
int GetTopIndex () const
 [取得] 一番上表示のアイテム [詳解]
 
int InsertColumn (int nCol, LPCTSTR lpszColumnHeading, int nFormat=LVCFMT_LEFT, int nWidth=-1, int nSubItem=-1)
 [設定] カラム追加. [詳解]
 
int InsertItem (int nItem, LPCTSTR lpszItem)
 [設定] アイテム挿入. [詳解]
 
BOOL ModifyStyle (DWORD dwRemove, DWORD dwAdd, UINT nFlags=0)
 [設定] ウィンドウスタイル変更. [詳解]
 
BOOL ModifyStyleEx (DWORD dwRemove, DWORD dwAdd, UINT nFlags=0)
 [設定] ウィンドウ拡張スタイル変更. [詳解]
 
void SetEraseBkGndOffset (int f=2)
 [設定] BGクリア調整値設定. [詳解]
 
DWORD SetExtendedStyle (DWORD dwNewStyle)
 [設定] 専用拡張スタイル設定. [詳解]
 
BOOL SetItemState (int nItem, UINT nState, UINT nMask)
 [設定] アイテム状態設定 [詳解]
 
BOOL SetItemText (int nItem, int nSubItem, LPCTSTR lpszText)
 [設定] アイテムテキスト設定. [詳解]
 
void SetSelectedItem (int item)
 [設定] 選択アイテム設定. [詳解]
 
BOOL SetWindowPos (const CWnd *pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags)
 [設定] ウィンドウサイズポジション設定. [詳解]
 
BOOL ShowWindow (int nCmdShow)
 [設定] ウィンドウ表示状態. [詳解]
 

限定公開メンバ関数

virtual void OnBeginItemPaint (HDC dc)=0
 [通知] 描画開始. [詳解]
 
virtual BOOL OnChildNotify (UINT message, WPARAM wParam, LPARAM lParam, LRESULT *_pResult)
 [通知] for notifications from parent [詳解]
 
virtual void OnDrawBackground (HDC dc, const RECT &rect)
 [通知] 背景描画通知. [詳解]
 
virtual void OnEndItemPaint (HDC dc)=0
 [通知] 描画終了. [詳解]
 
virtual void OnItemPainted (const TDrawParam *pParam)=0
 [通知] アイテム描画終わり. [詳解]
 
virtual LRESULT OnItemPainting (TDrawParam *pParam)=0
 [通知] アイテム描画. [詳解]
 
virtual void OnSelectItemChanged (int item)
 [通知] 選択変更通知. [詳解]
 
virtual void PreSubclassWindow (void)
 [通知] subclassing/unsubclassing functions. [詳解]
 
virtual LRESULT WindowProc (UINT message, WPARAM wParam, LPARAM lParam)
 [通知] for processing Windows messages. [詳解]
 

詳解

カスタム描画抽象ListCtrlコントロール

覚え書き
Reportタイプの一行全選択スタイルをサポートします。
OnBeginItemPaint() , OnEndItemPaint() , OnItemPainting() , OnItemPainted() の4つを実装する必要があります。
必要ファイル
TnbMfcAbstractCustomListCtrl.h
日付
07/12/07 新規作成
11/03/04 ReportViewの時、表示範囲に無い、サブアイテムの表示要求をしないようにした。
11/09/28 背景描画処理を最適化、 OnDrawBackground() を追加。
15/01/27 SetEraseBkGndOffset() を追加。

TnbMfcAbstractCustomListCtrl.h37 行目に定義があります。

列挙型メンバ詳解

◆ EState

enum EState

アイテム状態値.

覚え書き
実際は define で宣言されています。
列挙値
LVIS_ACTIVATING 

Not currently supported.

LVIS_CUT 

The item is marked for a cut-and-paste operation.

LVIS_DROPHILITED 

The item is highlighted as a drag-and-drop target.

LVIS_FOCUSED 

The item has the focus, so it is surrounded by a standard focus rectangle. Although more than one item may be selected, only one item can have the focus.

LVIS_OVERLAYMASK 

The item's overlay image index is retrieved by a mask.

LVIS_SELECTED 

The item is selected. The appearance of a selected item depends on whether it has the focus and also on the system colors used for selection.

LVIS_STATEIMAGEMASK 

The item's state image index is retrieved by a mask.

TnbMfcAbstractCustomListCtrl.h504 行目に定義があります。

構築子と解体子

◆ CAbstractCustomListCtrl()

コンストラクタ

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

関数詳解

◆ DeleteAllItems()

BOOL DeleteAllItems ( void  )
inherited

[設定] 全アイテム削除.

戻り値
TRUE成功
FALSE失敗.

◆ DeleteColumn()

BOOL DeleteColumn ( int  nCol)
inherited

[設定] カラム削除.

引数
nCol削除する列のインデックス.
戻り値
TRUE成功
FALSE失敗

◆ DeleteItem()

BOOL DeleteItem ( int  nItem)
inherited

[設定] アイテム削除.

引数
nItem削除するアイテムのインデックス
戻り値
TRUE成功
FALSE失敗.

◆ GetCountPerPage()

int GetCountPerPage ( ) const

[取得] 垂直方向に表示されるアイテム数

戻り値
表示領域の垂直方向に入るアイテム数を返します。

◆ GetExStyle()

DWORD GetExStyle ( void  ) const
inherited

[取得] ウィンドウ拡張スタイル取得.

本インスタンスが管理しているウィンドウの拡張スタイルを返します。

戻り値
ウィンドウスタイル。 WS_EX_LEFT や WS_EX_TOPMOST などのシンボルが論理和(or)されている。

◆ GetExtendedStyle()

DWORD GetExtendedStyle ( void  )
inherited

[取得] 専用拡張スタイル取得.

戻り値
専用拡張スタイル。 LVS_EX_FULLROWSELECT や LVS_EX_GRIDLINES を論理和(or)したものを返します。

◆ GetFirstSelectedItemPosition()

POSITION GetFirstSelectedItemPosition ( ) const

[取得] 選択アイテム検索.

戻り値
NULL未発見。
NULL以外発見。 GetNextSelectedItem() で使用できます。

◆ GetItemCount()

int GetItemCount ( ) const

[取得] アイテム数取得

戻り値
アイテム数

◆ GetItemState()

UINT GetItemState ( int  nItem,
UINT  nMask 
) const

[取得] アイテム状態取得

引数
nItemインデックス
nMaskどの 状態ビット を返すか指定する値。
戻り値
指定アイテムの 状態ビット

◆ GetNextItem()

int GetNextItem ( int  nItem,
int  nFlags 
) const

[取得] アイテム検索

引数
nItem検索を開始するインデックス。 -1 なら最初からになります。
nFlags以下のいずれかを指定します。
説明
LVNI_ABOVE 指定したアイテムの上にあるアイテムを検索します。
LVNI_ALL インデックス順で次のアイテムを検索します (既定値)。
LVNI_BELOW 指定したアイテムの下にあるアイテムを検索します。
LVNI_TOLEFT 指定したアイテムの左にあるアイテムを検索します。
LVNI_TORIGHT 指定したアイテムの右にあるアイテムを検索します。
以下のフラグも合わせて指定できます。
説明
LVNI_DROPHILITED アイテムに LVIS_DROPHILITED 状態フラグが設定されている。
LVNI_FOCUSED アイテムに LVIS_FOCUSED 状態フラグが設定されている。
LVNI_SELECTED アイテムに LVIS_SELECTED 状態フラグが設定されている。
戻り値
マイナス未発見。
0以上発見。数値はインデックスNo。

◆ GetNextSelectedItem()

int GetNextSelectedItem ( POSITION &  _pos) const

[取得] 選択アイテム検索.

引数
[in,out]_pos前の GetNextSelectedItem() または GetFirstSelectedItemPosition() の呼び出しで返された POSITION 値への参照。この値は、今回の呼び出しによって 次の位置に更新されます。
覚え書き
本関数を使う前に _pos 値が NULL 以外であることを確認する必要があります。
戻り値
発見したインデックスNo。

◆ GetSafeHwnd()

HWND GetSafeHwnd ( void  ) const
inherited

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

本インスタンスが管理しているウィンドウのハンドルを返します。

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

◆ GetSelectedCount()

UINT GetSelectedCount ( ) const

[取得] 選択アイテム数取得.

戻り値
選択されているアイテム数を返します。

◆ GetSelectedItem()

int GetSelectedItem ( void  ) const

[取得] 選択アイテム取得.

覚え書き
単一選択スタイル専用です。
戻り値
マイナス選択なし
0以上インデックス

TnbMfcAbstractCustomListCtrl.h54 行目に定義があります。

◆ GetStyle()

DWORD GetStyle ( void  ) const
inherited

[取得] ウィンドウスタイル取得.

本インスタンスが管理しているウィンドウのスタイルを返します。

戻り値
ウィンドウスタイル。 WS_CHILD や WS_MINIMIZE などのシンボルが論理和(or)されている。

◆ GetTopIndex()

int GetTopIndex ( ) const

[取得] 一番上表示のアイテム

戻り値
一番上に表示されているアイテムのインデックス

◆ InsertColumn()

int InsertColumn ( int  nCol,
LPCTSTR  lpszColumnHeading,
int  nFormat = LVCFMT_LEFT,
int  nWidth = -1,
int  nSubItem = -1 
)
inherited

[設定] カラム追加.

引数
nCol新しい列のインデックス
lpszColumnHeading文字列
nFormat列の配置を指定する整数。次の値のどれか 1 つを指定します。LVCFMT_LEFT、LVCFMT_RIGHT、または LVCFMT_CENTER。
nWidthピクセル単位の列の幅。このパラメータに -1 を指定すると、列の幅は設定されません。
nSubItem列に関連付けられたサブアイテムのインデックス。このパラメータに -1 を指定すると、列に関連付けられるサブアイテムはありません。
戻り値
0未満エラー。
0以上成功。値は新しい列のインデックス。

◆ InsertItem()

int InsertItem ( int  nItem,
LPCTSTR  lpszItem 
)
inherited

[設定] アイテム挿入.

引数
nItem挿入するアイテムのインデックス.
lpszItem文字列
戻り値
0未満エラー。
0以上成功。値は新しいアイテムのインデックス。

◆ ModifyStyle()

BOOL ModifyStyle ( DWORD  dwRemove,
DWORD  dwAdd,
UINT  nFlags = 0 
)
inherited

[設定] ウィンドウスタイル変更.

引数
dwRemove除去するスタイルを指定する。
dwAdd追加するスタイルを指定する。
nFlagsSetWindowPos() に渡すフラグ。0なら SetWindowPos() を呼びません。
戻り値
TRUE成功.
FALSE失敗.

◆ ModifyStyleEx()

BOOL ModifyStyleEx ( DWORD  dwRemove,
DWORD  dwAdd,
UINT  nFlags = 0 
)
inherited

[設定] ウィンドウ拡張スタイル変更.

引数
dwRemove除去する拡張スタイルを指定する。
dwAdd追加する拡張スタイルを指定する。
nFlagsSetWindowPos() に渡すフラグ。0なら SetWindowPos() を呼びません。
戻り値
TRUE成功.
FALSE失敗.

◆ OnBeginItemPaint()

virtual void OnBeginItemPaint ( HDC  dc)
protectedpure virtual

[通知] 描画開始.

一連の描画の開始を通知します。

覚え書き
dc は以下、 OnItemPainting() OnItemPainted() OnEndItemPaint() と続く一連の描画で共通で 使うデバイスコンテキストです。 OnItemPainting() などでデバイスコンテキストの 状態変更して戻すタイミングがない場合、本メソッドで記憶し、 OnEndItemPaint() で元に戻すようにします。
引数
dcデバイスコンテキスト。

CDrawingListCtrlで実装されています。

◆ OnChildNotify()

virtual BOOL OnChildNotify ( UINT  message,
WPARAM  wParam,
LPARAM  lParam,
LRESULT *  _pResult 
)
protectedvirtual

[通知] for notifications from parent

覚え書き
CWndのメソッドをオーバーライドしています。 メッセージ受信したらコールされます。
引数
[in]messageメッセージ
[in]wParamWPARAM
[in]lParamLPARAM
[out]_pResultリザルト
戻り値
TRUE処理済。
FALSE未処理。

CSubEditListCtrlで再実装されています。

TnbMfcAbstractCustomListCtrl.h192 行目に定義があります。

◆ OnDrawBackground()

virtual void OnDrawBackground ( HDC  dc,
const RECT &  rect 
)
protectedvirtual

[通知] 背景描画通知.

覚え書き
背景を描画するタイミングで通知されます。
引数
dcデバイスコンテキスト。
rect描画範囲

CDrawingListCtrlで再実装されています。

TnbMfcAbstractCustomListCtrl.h175 行目に定義があります。

◆ OnEndItemPaint()

virtual void OnEndItemPaint ( HDC  dc)
protectedpure virtual

[通知] 描画終了.

一連の描画の終了を通知します。

参照
OnBeginItemPaint()
引数
dcデバイスコンテキスト。

CDrawingListCtrlで実装されています。

◆ OnItemPainted()

virtual void OnItemPainted ( const TDrawParam pParam)
protectedpure virtual

[通知] アイテム描画終わり.

覚え書き
サブアイテム描画が終わったあと、アイテム毎に通知されます。
引数
[in]pParam描画用情報。 rect は、サブアイテムも含む範囲。

CDrawingListCtrlで実装されています。

◆ OnItemPainting()

virtual LRESULT OnItemPainting ( TDrawParam pParam)
protectedpure virtual

[通知] アイテム描画.

覚え書き
サブアイテム毎に通知されます。
引数
[in,out]pParam描画用情報。範囲やアイテムNOが入っています。
戻り値
CDRF_NOTIFYITEMDRAW通常の描画を行う(本メソッドでは何もしていない)。
CDRF_NEWFONTフォントや文字色を変更した時返します。
CDRF_SKIPDEFAULT本メソッドで描画ずみ。

CDrawingListCtrl, CSubEditListCtrlで実装されています。

◆ OnSelectItemChanged()

virtual void OnSelectItemChanged ( int  item)
protectedvirtual

[通知] 選択変更通知.

覚え書き
選択状態が変化した時に通知されます。
引数
item選択されているアイテムNO(複数ある場合、一番若いNO)。 -1 なら未選択。

TnbMfcAbstractCustomListCtrl.h167 行目に定義があります。

◆ PreSubclassWindow()

virtual void PreSubclassWindow ( void  )
protectedvirtual

[通知] subclassing/unsubclassing functions.

サブクラス化する時コールされます。

覚え書き
CWndのメソッドをオーバーライドしています。

CDrawingListCtrl, CSubEditListCtrlで再実装されています。

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

◆ SetEraseBkGndOffset()

void SetEraseBkGndOffset ( int  f = 2)

[設定] BGクリア調整値設定.

引数
f調整値。デフォルトは2です。

TnbMfcAbstractCustomListCtrl.h85 行目に定義があります。

◆ SetExtendedStyle()

DWORD SetExtendedStyle ( DWORD  dwNewStyle)
inherited

[設定] 専用拡張スタイル設定.

引数
dwNewStyle使用する専用拡張スタイル。 LVS_EX_FULLROWSELECT や LVS_EX_GRIDLINES を論理和(or)で指定します。
戻り値
以前の拡張スタイル
m_myListCtrl.SetExtendedStyle(m_myListCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT);

◆ SetItemState()

BOOL SetItemState ( int  nItem,
UINT  nState,
UINT  nMask 
)

[設定] アイテム状態設定

引数
nItemインデックス
nState状態ビット の新しい値。
nMaskどの 状態ビット を変更するかを指定する値。
戻り値
TRUE成功.
FALSE失敗.

◆ SetItemText()

BOOL SetItemText ( int  nItem,
int  nSubItem,
LPCTSTR  lpszText 
)
inherited

[設定] アイテムテキスト設定.

引数
nItemアイテムのインデックス
nSubItemサブアイテムのインデックス
lpszText文字列
戻り値
TRUE成功
FALSE失敗.

◆ SetSelectedItem()

void SetSelectedItem ( int  item)

[設定] 選択アイテム設定.

覚え書き
単一選択スタイル専用です。
引数
itemインデックス

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

◆ SetWindowPos()

BOOL SetWindowPos ( const CWnd pWndInsertAfter,
int  x,
int  y,
int  cx,
int  cy,
UINT  nFlags 
)
inherited

[設定] ウィンドウサイズポジション設定.

子ウィンドウ、ポップアップ ウィンドウ、およびトップレベル ウィンドウのサイズ、位置、および Z オーダーを変更します。

引数
pWndInsertAfterZ オーダーでこの CWnd オブジェクトより前に配置される CWnd オブジェクトを識別します。このパラメータへは、 CWnd へのポインタか 次の値のいずれか 1 つを指定できます。
  • wndBottom ウィンドウを Z オーダーの一番下に置きます。この CWnd が最上位のウィンドウの場合、ウィンドウの最上位ステータスは失われます。 システムでは、このウィンドウをほかのすべてのウィンドウよりも下に置きます。
  • wndTop ウィンドウを Z オーダーの先頭に置きます。
  • wndTopMost ウィンドウを最上位でないすべてのウィンドウの上に置きます。 ウィンドウは、非アクティブになったときも、最上位の位置を保持します。
  • wndNoTopMost ウィンドウを最上位でないすべてのウィンドウの先頭に再配置します (つまり、一番手前のすべてのウィンドウの後ろに置きます)。 ウィンドウが既に非最上位ウィンドウとなっているときは、このフラグは無効です。
xウィンドウの新しい左辺の位置を指定します。
yウィンドウの新しい上辺の位置を指定します。
cxウィンドウの新しい幅を指定します。
cyウィンドウの新しい高さを指定します。
nFlagsサイズ変更オプションおよび位置指定オプションを指定します。このパラメータには、次の値を組み合わせて指定できます。
  • SWP_DRAWFRAME ウィンドウの周りにフレーム (ウィンドウ作成時に定義されます) を描画します。
  • SWP_FRAMECHANGED ウィンドウのサイズが変化されていない場合でも、ウィンドウに WM_NCCALCSIZE メッセージを送信します。このフラグが指定されていない場合、WM_NCCALCSIZE メッセージはウィンドウのサイズが実際に変化しているときにだけ送られます。
  • SWP_HIDEWINDOW ウィンドウを非表示にします。
  • SWP_NOACTIVATE ウィンドウをアクティブにしません。このフラグが設定されていないと、ウィンドウはアクティブになり、最上位または非最上位のウィンドウ グループのいずれかの先頭に移動されます (パラメータ pWndInsertAfter の設定に依存します)。
  • SWP_NOCOPYBITS クライアント領域の内容全体を破棄します。このフラグが指定されていない場合、クライアント領域の有効な内容はすべて保存されます。保存された内容は、ウィンドウのサイズや位置が再び変更されたときにクライアント領域に復元されます。
  • SWP_NOMOVE 現在位置を保持します (x パラメータと y パラメータを無視します)。
  • SWP_NOOWNERZORDER オーナー ウィンドウの Z オーダーの位置を変更しません。
  • SWP_NOREDRAW 変更があっても再描画しません。このフラグが設定されていると、どのような種類の再描画も行われません。このことは、クライアント領域、非クライアント領域 (タイトルやスクロール バーを含みます)、ウィンドウが移動したことにより覆われない親ウィンドウのあらゆる部分に適用されます。このフラグが設定されているときは、アプリケーションは再描画が必要なウィンドウや親ウィンドウのあらゆる部分を明示的に無効領域または再描画する必要があります。
  • SWP_NOREPOSITION SWP_NOOWNERZORDER と同じです。
  • SWP_NOSENDCHANGING ウィンドウが WM_WINDOWPOSCHANGING メッセージを受信しないようにします。
  • SWP_NOSIZE 現在のサイズを保持します (cx パラメータと cy パラメータを無視します)。
  • SWP_NOZORDER 現在の順序を保持します (pWndInsertAfter を無視します)。
  • SWP_SHOWWINDOW ウィンドウを表示します。
戻り値
TRUE成功.
FALSE失敗.

◆ ShowWindow()

BOOL ShowWindow ( int  nCmdShow)
inherited

[設定] ウィンドウ表示状態.

引数
nCmdShowCWnd を表示する方法を指定します。次の値のいずれかになります。
  • SW_HIDE このウィンドウを非表示にし、他のウィンドウをアクティブにします。
  • SW_MINIMIZE ウィンドウを最小化し、システムのリストのトップレベル ウィンドウをアクティブにします。
  • SW_RESTORE ウィンドウをアクティブにし、表示します。ウィンドウが最小化または最大化されている場合は、Windows によって元のサイズと位置に戻されます。
  • SW_SHOW ウィンドウをアクティブにし、現在のサイズと位置で表示します。
  • SW_SHOWMAXIMIZED ウィンドウをアクティブにし、最大表示します。
  • SW_SHOWMINIMIZED ウィンドウをアクティブにし、最小化して表示します。
  • SW_SHOWMINNOACTIVE ウィンドウを最小化して表示します。現在アクティブなウィンドウはアクティブなまま表示します。
  • SW_SHOWNA 現在の状態でウィンドウを表示します。現在アクティブなウィンドウはアクティブなまま表示します。
  • SW_SHOWNOACTIVATE ウィンドウを直前のサイズと位置で表示します。現在アクティブなウィンドウはアクティブなまま表示します。
  • SW_SHOWNORMAL ウィンドウをアクティブにし、表示します。ウィンドウが最小化または最大化されている場合は、Windows によって元のサイズと位置に戻されます。
戻り値
TRUE成功.
FALSE失敗.

◆ WindowProc()

virtual LRESULT WindowProc ( UINT  message,
WPARAM  wParam,
LPARAM  lParam 
)
protectedvirtual

[通知] for processing Windows messages.

メッセージ受信したらコールされます。 ListBox 関係のメッセージをフックしています。

覚え書き
CWndのメソッドをオーバーライドしています。
引数
messageメッセージ
wParamWPARAM
lParamLPARAM
戻り値
リザルト。

CDragAddinT< CDrawingListCtrl >, CDragDrawingListCtrl, CDrawingListCtrl, CSubEditListCtrlで再実装されています。

TnbMfcAbstractCustomListCtrl.h225 行目に定義があります。