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_CHECKBOXBS_AUTOCHECKBOXBS_AUTO3STATEBS_3STATE
これらのスタイルの詳細については、「 Button スタイル」を参照してください。