CListBox クラス
更新 : 2007 年 11 月
Windows のリスト ボックスの機能を提供します。
class CListBox : public CWnd
解説
リスト ボックスにはファイル名などの項目の一覧が表示されます。ユーザーはこれらの項目を確認したり、選択できます。
単一選択リスト ボックスでは、1 項目しか選択できません。複数選択リスト ボックスでは、項目の範囲を選択できます。項目を選択すると、項目は強調表示され、リスト ボックスから親ウィンドウに通知メッセージが送られます。
リスト ボックスは、ダイアログ テンプレートから作成することも、直接プログラミングして作成することもできます。直接作成するには CListBox オブジェクトを構築し、その後 Create メンバ関数を使って Windows のリスト ボックス コントロールを作成し、CListBox オブジェクトに結び付けます。ダイアログ テンプレートでリスト ボックスを使うには、ダイアログ ボックス クラスでリスト ボックス変数を宣言し、メンバ変数をコントロールに接続するためにダイアログ ボックス クラスの DoDataExchange 関数で DDX_Control を使います。この処理は、ダイアログ ボックス クラスにコントロール変数が追加されたときに、自動的に実行されます。
CListBox クラスからの派生クラスでは、1 ステップで構築できます。派生クラスのコンストラクタを記述し、その中で Create 関数を呼び出します。
リスト ボックスから親ウィンドウ (通常は CDialog の派生クラス) に送られた Windows の通知メッセージを処理するには、メッセージごとにメッセージ マップのエントリとメッセージ ハンドラ メンバ関数を親クラスに追加します。
各メッセージ マップのエントリは次の形式を持ちます。
ON_Notification( id, memberFxn )
id には、送信元のリスト ボックス コントロールの子ウィンドウ ID を指定します。memberFxn には、通知を処理するために記述した親メンバ関数名を指定します。
親の関数のプロトタイプは次のようになります。
afx_msg void memberFxn( );
以下に、該当するメッセージ マップのエントリを示し、メッセージが親ウィンドウへ送られる場合について説明します。
ON_LBN_DBLCLK リスト ボックスの文字列をダブルクリックしたとき。LBS_NOTIFY スタイルを持つリスト ボックスのみがこの通知メッセージを送ります。
ON_LBN_ERRSPACE リスト ボックスが要求に合う十分なメモリの割り当てをできなかったとき。
ON_LBN_KILLFOCUS リスト ボックスが入力フォーカスを失ったとき。
ON_LBN_SELCANCEL リスト ボックスの現在の選択項目がキャンセルされたとき。LBS_NOTIFY スタイルを持つリスト ボックスのみがこの通知メッセージを送ります。
ON_LBN_SELCHANGE リスト ボックスの選択内容が変更されたとき。選択が CListBox::SetCurSel メンバ関数で変更されたときは、この通知は送られません。この通知は LBS_NOTIFY スタイルを持つリスト ボックスのみに適用されます。LBN_SELCHANGE 通知メッセージは、複数選択リスト ボックスで、ユーザーが方向キーを押したときに必ず、選択が変更されないときでも、送られます。
ON_LBN_SETFOCUS リスト ボックスが入力フォーカスを受け取ったとき。
ON_WM_CHARTOITEM 文字列を持たないオーナー描画リスト ボックスが WM_CHAR メッセージを受け取ったとき。
ON_WM_VKEYTOITEM LBS_WANTKEYBOARDINPUT スタイルを持つリスト ボックスが WM_KEYDOWN メッセージを受け取ったとき。
ダイアログ ボックス内に (ダイアログ リソースを使って) CListBox オブジェクトを作成したときは、ダイアログ ボックスを閉じたときに CListBox オブジェクトは自動的に破棄されます。
ウィンドウ内部に CListBox オブジェクトを作成したときは、アプリケーションで CListBox オブジェクトを破棄する必要があります。CListBox オブジェクトをスタック上に作成したときは、自動的に破棄されます。new 関数を使ってヒープ領域に CListBox オブジェクトを作成した場合は、ユーザーが親ウィンドウを閉じるときに、オブジェクトに対して delete 関数を呼び出してオブジェクトを破棄してください。
CListBox オブジェクト内部にメモリを割り当てるときは、割り当てたメモリを解放するために CListBox デストラクタをオーバーライドしてください。
必要条件
ヘッダー : afxwin.h
参照
処理手順
CTRLTEST サンプル : カスタム コントロールの実装