次の方法で共有


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 関数をオーバーライドする必要があります。

チェックリスト ボックスは、ダイアログ テンプレートから作成することも、コード内で直接作成することもできます。

継承階層

CObject

CCmdTarget

CWnd

CListBox

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_NCCREATEWM_CREATEWM_NCCALCSIZE、およびWM_GETMINMAXINFOメッセージをチェックリスト ボックス コントロールに送信します。

これらのメッセージは、既定では、CWnd 基底クラスのOnNcCreateOnCreateOnNcCalcSize、および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 から始まるインデックス。

戻り値

指定したチェック ボックスの状態。 次の表は使用できる値をまとめたものです。

Value 説明
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 パラメーターに使用できる値を示します。

Value 説明
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 スタイル」を参照してください。

関連項目

MFC サンプル TSTCON
CListBox クラス
階層図