CCheckListBox
クラス
Windows のチェックリスト ボックスの機能を提供します。
構文
class CCheckListBox : public CListBox
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CCheckListBox::CCheckListBox |
CCheckListBox オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
CCheckListBox::Create |
Windows チェックリスト ボックスを作成し、 CCheckListBox オブジェクトに添付します。 |
CCheckListBox::DrawItem |
所有者描画リスト ボックスの視覚的な側面が変更されたときにフレームワークによって呼び出されます。 |
CCheckListBox::Enable |
チェックリスト ボックス項目を有効または無効にします。 |
CCheckListBox::GetCheck |
項目のチェック ボックスの状態を取得します。 |
CCheckListBox::GetCheckStyle |
コントロールのチェック ボックスのスタイルを取得します。 |
CCheckListBox::IsEnabled |
項目が有効かどうかを判断します。 |
CCheckListBox::MeasureItem |
所有者描画スタイルのリスト ボックスが作成されるときに、フレームワークによって呼び出されます。 |
CCheckListBox::OnGetCheckPosition |
項目のチェック ボックスの位置を取得するためにフレームワークによって呼び出されます。 |
CCheckListBox::SetCheck |
項目のチェック ボックスの状態を設定します。 |
CCheckListBox::SetCheckStyle |
コントロールのチェック ボックスのスタイルを設定します。 |
解説
"チェックリスト ボックス" には、ファイル名などの項目の一覧が表示されます。 リスト内の各項目には、ユーザーがチェックまたはクリアできるチェック ボックスが横に表示されます。
CCheckListBox
は、リストに複数のテキスト文字列が含まれているため、所有者描画コントロールに対してのみ使用されます。 最も簡単なチェックリスト ボックスには、テキスト文字列とチェック ボックスが含まれていますが、テキストを含める必要はまったくありません。 たとえば、各項目の横にチェック ボックスがある小さなビットマップの一覧を作成できます。
独自のチェックリスト ボックスを作成するには、 CCheckListBox
から独自のクラスを派生させる必要があります。 独自のクラスを派生するには、派生クラスのコンストラクターを記述し、 Create
を呼び出します。
リスト ボックスによって親 (通常は CDialog
から派生したクラス) に送信された Windows 通知メッセージを処理する場合は、メッセージ マップ エントリとメッセージ ハンドラー メンバー関数を各メッセージの親クラスに追加します。
各メッセージ マップ エントリの形式は次のとおりです。
ON_Notification ( id
, memberFxn
)
ここで、 id
は通知を送信するコントロールの子ウィンドウ ID を指定し、 memberFxn
は通知を処理するために作成した親メンバー関数の名前です。
親の関数プロトタイプは次のとおりです。
afx_msg void memberFxn();
CCheckListBox
に関連するメッセージ マップ エントリは 1 つだけです (ただし、CListBox
のメッセージ マップ エントリも参照してください)。
ON_CLBN_CHKCHANGE
ユーザーが項目のチェック ボックスの状態を変更しました。
チェックリスト ボックスが既定のチェックリスト ボックス (それぞれの左側に既定のサイズのチェック ボックスを持つ文字列の一覧) である場合は、既定の CCheckListBox::DrawItem
を使用してチェックリスト ボックスを描画できます。 それ以外の場合は、 CListBox::CompareItem
関数と CCheckListBox::DrawItem
関数と CCheckListBox::MeasureItem
関数をオーバーライドする必要があります。
チェックリスト ボックスは、ダイアログ テンプレートから作成することも、コード内で直接作成することもできます。
継承階層
CCheckListBox
要件
ヘッダー: afxwin.h
CCheckListBox::CCheckListBox
CCheckListBox
オブジェクトを構築します。
CCheckListBox();
解説
CCheckListBox
オブジェクトは、2 つの手順で作成します。 まず、 CCheckListBox
から派生したクラスを定義してから、 Create
を呼び出します。これにより、Windows チェックリスト ボックスが初期化され、 CCheckListBox
オブジェクトにアタッチされます。
例
CCheckListBox myCheckListBox;
myCheckListBox.Create(LBS_HASSTRINGS | LBS_OWNERDRAWFIXED,
CRect(10, 10, 100, 100), this, IDC_MYCHECKLISTBOX);
CCheckListBox::Create
Windows チェックリスト ボックスを作成し、 CCheckListBox
オブジェクトに添付します。
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
パラメーター
dwStyle
チェックリスト ボックスのスタイルを指定します。 スタイルは LBS_HASSTRINGS
で、 LBS_OWNERDRAWFIXED
(リスト内のすべての項目は同じ高さ) または LBS_OWNERDRAWVARIABLE
(リスト内の項目は高さが異なります) である必要があります。 このスタイルは、LBS_USETABSTOPS
を除き他のリスト ボックス スタイルと組み合わせることができます。
rect
チェックリスト ボックスのサイズと位置を指定します。 CRect
オブジェクトまたはRECT
構造体を指定できます。
pParentWnd
チェックリスト ボックスの親ウィンドウ (通常は CDialog
オブジェクト) を指定します。 NULL は指定できません。
nID
チェックリスト ボックスのコントロール ID を指定します。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
CCheckListBox
オブジェクトは、2 つの手順で作成します。 まず、 CcheckListBox
から派生したクラスを定義してから、 Create
を呼び出します。これにより、Windows チェックリスト ボックスが初期化され、 CCheckListBox
にアタッチされます。 サンプルについては、「CCheckListBox::CCheckListBox
」を参照してください。
Create
実行すると、Windows は、WM_NCCREATE
、WM_CREATE
、WM_NCCALCSIZE
、およびWM_GETMINMAXINFO
メッセージをチェックリスト ボックス コントロールに送信します。
これらのメッセージは、既定では、CWnd
基底クラスのOnNcCreate
、OnCreate
、OnNcCalcSize
、およびOnGetMinMaxInfo
メンバー関数によって処理されます。 既定のメッセージ処理を拡張するには、派生クラスにメッセージ マップを追加し、前のメッセージ ハンドラーメンバー関数をオーバーライドします。 たとえば、新しいクラスに必要な初期化を実行するには、 OnCreate
をオーバーライドします。
チェックリスト ボックス コントロールに次のウィンドウ スタイルを適用します。
WS_CHILD
いつもWS_VISIBLE
通常はWS_DISABLED
稀にWS_VSCROLL
垂直スクロール バーを追加するにはWS_HSCROLL
水平スクロール バーを追加するにはWS_GROUP
コントロールをグループ化するにはWS_TABSTOP
このコントロールへのタブ移動を許可するには
CCheckListBox::DrawItem
所有者が描画したチェックリスト ボックスの視覚的な側面が変更されたときにフレームワークによって呼び出されます。
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
パラメーター
lpDrawItemStruct
必要な描画の種類に関する情報を含む DRAWITEMSTRUCT
構造体への長いポインター。
解説
DRAWITEMSTRUCT
構造体のitemAction
メンバーとitemState
メンバーは、実行する描画アクションを定義します。
既定では、この関数は既定のチェック ボックス リストを描画します。各文字列の一覧と、既定のサイズのチェック ボックスが左側に表示されます。 チェック ボックスの一覧のサイズは、 Create
で指定されたサイズです。
このメンバー関数をオーバーライドして、既定ではない所有者描画チェックリスト ボックスの描画を実装します。たとえば、文字列ではないリストを含むチェックリスト ボックス、高さ可変項目を含むリスト、または左側にないチェック ボックスを含むチェックリスト ボックスを実装します。 アプリケーションは、このメンバー関数の終了前に、 lpDrawItemStruct
で指定された表示コンテキストに対して選択されているすべてのグラフィックス デバイス インターフェイス (GDI) オブジェクトを復元する必要があります。
チェックリスト ボックスの項目がすべて同じ高さではない場合は、チェックリスト ボックスのスタイル ( Create
で指定) を LBS_OWNERVARIABLE
し、 MeasureItem
関数をオーバーライドする必要があります。
CCheckListBox::Enable
チェックリスト ボックス項目を有効または無効にするには、この関数を呼び出します。
void Enable(
int nIndex,
BOOL bEnabled = TRUE);
パラメーター
nIndex
有効にするチェックリスト ボックス項目のインデックス。
bEnabled
項目が有効か無効かを指定します。
CCheckListBox::GetCheck
指定したチェック ボックスの状態を取得します。
int GetCheck(int nIndex);
パラメーター
nIndex
リスト ボックスに含まれるチェック ボックスの 0 から始まるインデックス。
戻り値
指定したチェック ボックスの状態。 次の表は使用できる値をまとめたものです。
値 | 説明 |
---|---|
BST_CHECKED |
チェック ボックスがオンになっています。 |
BST_UNCHECKED |
チェック ボックスはオンになっていません。 |
BST_INDETERMINATE |
チェック ボックスの状態が不確定です。 |
CCheckListBox::GetCheckStyle
チェックリスト ボックスのスタイルを取得するには、この関数を呼び出します。
UINT GetCheckStyle();
戻り値
コントロールのチェック ボックスのスタイル。
解説
使用可能なスタイルについては、「 SetCheckStyle
」を参照してください。
CCheckListBox::IsEnabled
この関数を呼び出して、項目が有効になっているかどうかを確認します。
BOOL IsEnabled(int nIndex);
パラメーター
nIndex
項目のインデックス。
戻り値
項目が有効な場合は 0 以外。それ以外の場合は 0。
CCheckListBox::MeasureItem
既定以外のスタイルのチェックリスト ボックスが作成されたときにフレームワークによって呼び出されます。
virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
パラメーター
lpMeasureItemStruct
MEASUREITEMSTRUCT
構造体への長いポインター。
解説
既定では、このメンバー関数は何も行いません。 このメンバー関数をオーバーライドし、 MEASUREITEMSTRUCT
構造体に入力して、チェックリスト ボックス項目のディメンションを Windows に通知します。 チェックリスト ボックスが LBS_OWNERDRAWVARIABLE
スタイルで作成されている場合、フレームワークはリスト ボックス内の各項目に対してこのメンバー関数を呼び出します。 それ以外の場合、このメンバーは 1 回だけ呼び出されます。
CCheckListBox::OnGetCheckPosition
フレームワークは、この関数を呼び出して、項目内のチェック ボックスの位置とサイズを取得します。
virtual CRect OnGetCheckPosition(
CRect rectItem,
CRect rectCheckBox);
パラメーター
rectItem
リスト アイテムの位置とサイズ。
rectCheckBox
アイテムのチェック ボックスの既定の位置とサイズ。
戻り値
項目のチェック ボックスの位置とサイズ。
解説
既定の実装では、チェック ボックス (rectCheckBox
) の既定の位置とサイズのみが返されます。 既定では、チェック ボックスは項目の左上隅に配置され、標準のチェック ボックス サイズです。 右側にチェック ボックスが必要な場合や、大きいチェック ボックスまたは小さいチェック ボックスが必要な場合があります。 このような場合は、 OnGetCheckPosition
をオーバーライドして、アイテム内のチェック ボックスの位置とサイズを変更します。
CCheckListBox::SetCheck
指定したチェック ボックスの状態を設定します。
void SetCheck(
int nIndex,
int nCheck);
パラメーター
nIndex
リスト ボックスに含まれるチェック ボックスの 0 から始まるインデックス。
nCheck
指定したチェック ボックスのボタンの状態。 可能な値については、「備考」セクションを参照してください。
解説
次の表に、 nCheck
パラメーターに使用できる値を示します。
値 | 説明 |
---|---|
BST_CHECKED |
指定したチェック ボックスをオンにします。 |
BST_UNCHECKED |
指定したチェック ボックスをオフにします。 |
BST_INDETERMINATE |
指定したチェック ボックスの状態を不確定に設定します。 この状態は、チェック ボックスのスタイルが BS_AUTO3STATE または BS_3STATE されている場合にのみ使用できます。 詳しくは、「ボタンのスタイル」をご覧ください。 |
CCheckListBox::SetCheckStyle
この関数を呼び出して、チェックリスト ボックスのチェック ボックスのスタイルを設定します。
void SetCheckStyle(UINT nStyle);
パラメーター
nStyle
チェックリスト ボックスのチェック ボックスのスタイルを決定します。
解説
有効なスタイルは次のとおりです。
BS_CHECKBOX
BS_AUTOCHECKBOX
BS_AUTO3STATE
BS_3STATE
これらのスタイルの詳細については、「 Button スタイル」を参照してください。