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

カラフルListBoxコントロール [詳解]

#include <TnbMfcColorfulListBox.h>

+ CColorfulListBox の継承関係図

クラス

class  CColor
 カラフルListBoxコントロールのカラー情報. [詳解]
 

公開メンバ関数

int AddString (LPCTSTR lpszItem)
 [追加] 文字列追加. [詳解]
 
void AllSetSel (void)
 [選択] 全項目選択. [詳解]
 
 CColorfulListBox (void)
 コンストラクタ [詳解]
 
void Copy (bool boIsSelectOnly=true)
 [処理] 選択項目コピー. [詳解]
 
int DeleteString (UINT nIndex)
 [削除] 文字列削除. [詳解]
 
int DeleteStringEx (UINT nIndex)
 [削除] 文字列削除. [詳解]
 
DWORD GetExStyle (void) const
 [取得] ウィンドウ拡張スタイル取得. [詳解]
 
int GetMaxLine (void) const
 [取得] 最大ライン数取得. [詳解]
 
HWND GetSafeHwnd (void) const
 [取得] ウィンドウハンドル取得. [詳解]
 
DWORD GetStyle (void) const
 [取得] ウィンドウスタイル取得. [詳解]
 
virtual void GetText (int nIndex, CString &rString) const
 [取得] 文字列取得. [詳解]
 
virtual int GetText (int nIndex, LPTSTR lpszBuffer) const
 [取得] 文字列取得. [詳解]
 
int InsertString (int nIndex, LPCTSTR lpszItem)
 [追加] 文字列追加. [詳解]
 
BOOL ModifyStyle (DWORD dwRemove, DWORD dwAdd, UINT nFlags=0)
 [設定] ウィンドウスタイル変更. [詳解]
 
BOOL ModifyStyleEx (DWORD dwRemove, DWORD dwAdd, UINT nFlags=0)
 [設定] ウィンドウ拡張スタイル変更. [詳解]
 
void PostString (int nIndex, LPCTSTR lpszItem)
 [追加] 文字列追加. [詳解]
 
void PostString (int nIndex, LPCTSTR lpszItem, const CColorfulListBox::CColor &color)
 [追加] 文字列追加. [詳解]
 
void SetColor (INDEX nIndex, const CColorfulListBox::CColor &color)
 [設定] 文字色設定. [詳解]
 
void SetCurrentColor (const CColorfulListBox::CColor &color)
 [設定] 文字色設定. [詳解]
 
void SetMargin (DWORD m)
 [設定] マージン設定 [詳解]
 
void SetMaxLine (int maxLine)
 [設定] 最大ライン数設定. [詳解]
 
void SetPostViewMode (bool isView, bool isDelayMode=false)
 [設定] PostString表示モード設定. [詳解]
 
BOOL SetWindowPos (const CWnd *pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags)
 [設定] ウィンドウサイズポジション設定. [詳解]
 
BOOL ShowWindow (int nCmdShow)
 [設定] ウィンドウ表示状態. [詳解]
 
CString ToString (bool boIsSelectOnly=true)
 [処理] 文字列取得. [詳解]
 
 ~CColorfulListBox (void)
 デストラクタ [詳解]
 

限定公開型

enum  { WM_CLB_POSTSTRING = WM_APP }
 

限定公開メンバ関数

virtual void DrawItem (LPDRAWITEMSTRUCT lpDrawItemStruct)
 [通知] オーナードロー通知. [詳解]
 
virtual void MeasureItem (LPMEASUREITEMSTRUCT lpMeasureItemStruct)
 [通知] オーナードロー計算通知. [詳解]
 
virtual void PostNcDestroy (void)
 破棄 [詳解]
 
virtual void PreSubclassWindow (void)
 [通知] subclassing/unsubclassing functions. [詳解]
 
virtual LRESULT WindowProc (UINT message, WPARAM wParam, LPARAM lParam)
 [通知] for processing Windows messages. [詳解]
 

詳解

カラフルListBoxコントロール

一文字単位で色を指定出来る ListBoxコントロールです。

Ctrl+A , Ctrl+C が使える ListBoxコントロールです。
覚え書き
選択行は、文字色と背景色が反転し表示されます。
使い方
リソースエディタでリストボックスコントロールを張り、コントロール変数に割り当て後、 そのコントロール変数の型(CListBox)を本クラスに置き換えて使用します。
リストボックスのプロパティは、「選択(C)」を「拡張」に、「オーナー描画(O)」を「可変」に 文字列ありのチェックをONにしておいてください。

ヘッダファイル

class CFooDlg : public CDialog
{
;
CColorfulListBox m_listColorful; //← CListBox を CColorfulListBox に書き換え
;
};
CColorfulListBox(void)
コンストラクタ
void CFooDlg::Foo(void)
{
CColorfulListBox::CColor cc;
cc.Add(4, 2, RGB(255, 0, 0), RGB(0, 255, 0)); // 4文字目から2文字分の色を指定
cc.Add(8, 2, RGB(255, 255, 0), RGB(0, 255, 0)); // 8文字目から2文字分の色を指定
m_listColorful.SetCurrentColor(cc); // 色設定
m_listColorful.AddString("1234567890abcdefghijklmn");
m_listColorful.AddString("あいうえおかきくけこ");
m_listColorful.AddString("1234n");
m_listColorful.AddString("1あい!");
cc.RemoveAll();
cc.Add(5, 3, RGB(255, 255, 0), RGB(0, 0, 0)); // 5文字目から3文字分の色を指定
cc.Add(9, 5, RGB(255, 255, 255), RGB(255, 0, 0)); // 9文字目から5文字分の色を指定
m_listColorful.SetCurrentColor(cc); // 色再設定
m_listColorful.AddString("1234567890abcdefghijklmn");
m_listColorful.AddString("あいうえおかきくけこ");
m_listColorful.AddString("1234n");
m_listColorful.AddString("1あい!");
}
覚え書き
スクロールすると、親に WM_VSCROLL を SendMessage します。LPARAM には 本コントロールの HWND を渡します。 そのため、 MFC の CWnd::OnVScroll() の第三引数の CScrollBar* には本クラスのインスタンスが渡ります。 CScrollBar* として操作しないように注意してください。
必要ファイル
TnbMfcColorfulListBox.h
日付
09/06/02 新規作成

TnbMfcColorfulListBox.h80 行目に定義があります。

列挙型メンバ詳解

◆ anonymous enum

anonymous enum
protectedinherited

TnbMfcListBoxCp.h232 行目に定義があります。

構築子と解体子

◆ CColorfulListBox()

CColorfulListBox ( void  )

コンストラクタ

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

◆ ~CColorfulListBox()

~CColorfulListBox ( void  )

デストラクタ

TnbMfcColorfulListBox.h231 行目に定義があります。

関数詳解

◆ AddString()

int AddString ( LPCTSTR  lpszItem)

[追加] 文字列追加.

文字列を最後に追加します。色は SetCurrentColor()PostString() で設定したものになります。

覚え書き
別スレッドからの実行は、予想外の動作をすることがあります。 PostString() を使用してください。
引数
lpszItem挿入する文字列。
戻り値
マイナスエラー。
0以上成功。挿入されたインデックスを返します。

TnbMfcColorfulListBox.h345 行目に定義があります。

◆ AllSetSel()

void AllSetSel ( void  )
inherited

[選択] 全項目選択.

TnbMfcListBoxCp.h83 行目に定義があります。

◆ Copy()

void Copy ( bool  boIsSelectOnly = true)
inherited

[処理] 選択項目コピー.

LIST 内の文字列を改行で連結し、クリップボードへコピーします。

引数
boIsSelectOnlytrue なら選択されている項目のみを収集します。

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

◆ DeleteString()

int DeleteString ( UINT  nIndex)
inherited

[削除] 文字列削除.

覚え書き
削除後、表示位置を top に戻します。
引数
nIndex削除する文字列を 0 から始まるインデックスで指定します。
戻り値
LB_ERRエラー。
上記以外成功。数値は、残りのアイテム数

TnbMfcListBoxCp.h186 行目に定義があります。

◆ DeleteStringEx()

int DeleteStringEx ( UINT  nIndex)
inherited

[削除] 文字列削除.

覚え書き
表示位置を変えずに、文字列を削除します。
引数
nIndex削除する文字列を 0 から始まるインデックスで指定します。
戻り値
LB_ERRエラー。
上記以外成功。数値は、残りのアイテム数

TnbMfcListBoxCp.h198 行目に定義があります。

◆ DrawItem()

virtual void DrawItem ( LPDRAWITEMSTRUCT  lpDrawItemStruct)
protectedvirtual

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

引数
lpDrawItemStructドロー要求状態

TnbMfcColorfulListBox.h356 行目に定義があります。

◆ GetExStyle()

DWORD GetExStyle ( void  ) const
inherited

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

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

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

◆ GetMaxLine()

int GetMaxLine ( void  ) const
inherited

[取得] 最大ライン数取得.

戻り値
0未満最大ライン、未指定.
0以上

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

◆ GetSafeHwnd()

HWND GetSafeHwnd ( void  ) const
inherited

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

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

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

◆ GetStyle()

DWORD GetStyle ( void  ) const
inherited

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

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

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

◆ GetText() [1/2]

virtual void GetText ( int  nIndex,
CString &  rString 
) const
virtualinherited

[取得] 文字列取得.

引数
[in]nIndex取得する文字列を 0 から始まるインデックスで指定します。
[out]rString文字列を格納されます。

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

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

◆ GetText() [2/2]

virtual int GetText ( int  nIndex,
LPTSTR  lpszBuffer 
) const
virtualinherited

[取得] 文字列取得.

引数
[in]nIndex取得する文字列を 0 から始まるインデックスで指定します。
[out]lpszBuffer文字列を格納するアドレスを指定します。
戻り値
LB_ERRエラー。
上記以外成功。数値は、取得した文字数。

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

TnbMfcListBoxCp.h216 行目に定義があります。

◆ InsertString()

int InsertString ( int  nIndex,
LPCTSTR  lpszItem 
)

[追加] 文字列追加.

文字列を追加します。色は SetCurrentColor()PostString() で設定したものになります。

覚え書き
別スレッドからの実行は、予想外の動作をすることがあります。 PostString() を使用してください。
引数
nIndex文字列を挿入する位置を 0 から始まるインデックスで指定します。 このパラメータが -1 の場合、文字列はリストの最後に追加されます。
lpszItem挿入する文字列。
戻り値
マイナスエラー。
0以上成功。挿入されたインデックスを返します。

TnbMfcColorfulListBox.h332 行目に定義があります。

◆ MeasureItem()

virtual void MeasureItem ( LPMEASUREITEMSTRUCT  lpMeasureItemStruct)
protectedvirtual

[通知] オーナードロー計算通知.

引数
lpMeasureItemStructドロー要求状態

TnbMfcColorfulListBox.h440 行目に定義があります。

◆ 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失敗.

◆ PostNcDestroy()

virtual void PostNcDestroy ( void  )
protectedvirtual

破棄

TnbMfcColorfulListBox.h653 行目に定義があります。

◆ PostString() [1/2]

void PostString ( int  nIndex,
LPCTSTR  lpszItem 
)

[追加] 文字列追加.

指定した色で文字列を追加します。

覚え書き
別スレッドからでも追加が可能です。
引数
nIndex文字列を挿入する位置を 0 から始まるインデックスで指定します。 このパラメータが -1 の場合、文字列はリストの最後に追加されます。
lpszItem挿入する文字列。

TnbMfcColorfulListBox.h291 行目に定義があります。

◆ PostString() [2/2]

void PostString ( int  nIndex,
LPCTSTR  lpszItem,
const CColorfulListBox::CColor color 
)

[追加] 文字列追加.

指定した色で文字列を追加します。

覚え書き
別スレッドからでも追加が可能です。
色を指定すると、 SetCurrentColor() で指定したのと同じ効果が残ります。
引数
nIndex文字列を挿入する位置を 0 から始まるインデックスで指定します。 このパラメータが -1 の場合、文字列はリストの最後に追加されます。
lpszItem挿入する文字列。
color色指定。

TnbMfcColorfulListBox.h307 行目に定義があります。

◆ PreSubclassWindow()

virtual void PreSubclassWindow ( void  )
protectedvirtual

[通知] subclassing/unsubclassing functions.

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

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

CListBoxCpを再実装しています。

TnbMfcColorfulListBox.h639 行目に定義があります。

◆ SetColor()

void SetColor ( INDEX  nIndex,
const CColorfulListBox::CColor color 
)

[設定] 文字色設定.

指定行の色を指定します。

引数
nIndexインデックス
color色指定

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

◆ SetCurrentColor()

void SetCurrentColor ( const CColorfulListBox::CColor color)

[設定] 文字色設定.

追加する文字列の色を指定します。

引数
color色指定

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

◆ SetMargin()

void SetMargin ( DWORD  m)

[設定] マージン設定

引数
m上下のマージン

TnbMfcColorfulListBox.h265 行目に定義があります。

◆ SetMaxLine()

void SetMaxLine ( int  maxLine)
inherited

[設定] 最大ライン数設定.

覚え書き
デフォルトは 20000 行です。
引数
maxLine最大ライン。 -1 なら、最大ラインのチェックをしません(推奨しません)。

TnbMfcListBoxCp.h65 行目に定義があります。

◆ SetPostViewMode()

void SetPostViewMode ( bool  isView,
bool  isDelayMode = false 
)

[設定] PostString表示モード設定.

覚え書き
PostString() 実行時、追加した文字列が表示するようにスクロールさせるか否か、設定できます。
引数
isViewtrue なら追加文字列が表示されるようにスクロールします。 false ならスクロールしません。
isDelayModetrue ならスクロールを遅延させます(高速に量を表示させる場合に有効)。 false ならリアルタイムでスクロールしません。

TnbMfcColorfulListBox.h277 行目に定義があります。

◆ 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失敗.

◆ ToString()

CString ToString ( bool  boIsSelectOnly = true)
inherited

[処理] 文字列取得.

LIST 内の文字列を改行で連結し返します。

引数
boIsSelectOnlytrue なら選択されている項目のみを収集します。
戻り値
文字列。

TnbMfcListBoxCp.h98 行目に定義があります。

◆ WindowProc()

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

[通知] for processing Windows messages.

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

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

CListBoxCpを再実装しています。

TnbMfcColorfulListBox.h472 行目に定義があります。