次の方法で共有


CComboBoxEx クラス

イメージ リストをサポートすることにより、コンボ ボックス コントロールを拡張します。

構文

class CComboBoxEx : public CComboBox

メンバー

パブリック コンストラクター

名前 説明
CComboBoxEx::CComboBoxEx CComboBoxEx オブジェクトを構築します。

パブリック メソッド

名前 説明
CComboBoxEx::Create コンボ ボックスを作成し、 CComboBoxEx オブジェクトにアタッチします。
CComboBoxEx::CreateEx 指定した Windows 拡張スタイルを持つコンボ ボックスを作成し、 ComboBoxEx オブジェクトにアタッチします。
CComboBoxEx::D eleteItem ComboBoxEx コントロールから項目を削除します。
CComboBoxEx::GetComboBoxCtrl 子コンボ ボックス コントロールへのポインターを取得します。
CComboBoxEx::GetEditCtrl ComboBoxEx コントロールの編集コントロール部分へのハンドルを取得します。
CComboBoxEx::GetExtendedStyle ComboBoxEx コントロールに使用されている拡張スタイルを取得します。
CComboBoxEx::GetImageList ComboBoxEx コントロールに割り当てられているイメージ リストへのポインターを取得します。
CComboBoxEx::GetItem 特定の ComboBoxEx 項目の項目情報を取得します。
CComboBoxEx::HasEditChanged ユーザーが入力して ComboBoxEx 編集コントロールの内容を変更したかどうかを判断します。
CComboBoxEx::InsertItem ComboBoxEx コントロールに新しい項目を挿入します。
CComboBoxEx::SetExtendedStyle ComboBoxEx コントロール内の拡張スタイルを設定します。
CComboBoxEx::SetImageList ComboBoxEx コントロールのイメージ リストを設定します。
CComboBoxEx::SetItem ComboBoxEx コントロール内の項目の属性を設定します。
CComboBoxEx::SetWindowTheme 拡張コンボ ボックス コントロールの表示スタイルを設定します。

解説

CComboBoxExを使用してコンボ ボックス コントロールを作成することで、独自のイメージ描画コードを実装する必要がなくなりました。 代わりに、 CComboBoxEx を使用してイメージ リストからイメージにアクセスします。

イメージ リストのサポート

標準のコンボ ボックスでは、コンボ ボックスの所有者は、コンボ ボックスを所有者描画コントロールとして作成してイメージを描画します。 CComboBoxExを使用する場合、描画スタイルをCBS_OWNERDRAWFIXEDおよびCBS_HASSTRINGS設定する必要はありません。 それ以外の場合は、描画操作を実行するコードを記述する必要があります。 CComboBoxEx コントロールは、項目ごとに最大 3 つのイメージをサポートします。1 つは選択された状態用、1 つは選択されていない状態用、1 つはオーバーレイ イメージ用です。

スタイル

CComboBoxEx では、スタイルCBS_SIMPLE、CBS_DROPDOWN、CBS_DROPDOWNLIST、およびWS_CHILDがサポートされます。 ウィンドウの作成時に渡されるその他のスタイルはすべて、コントロールによって無視されます。 ウィンドウが作成されたら、 CComboBoxEx メンバー関数 SetExtendedStyle を呼び出すことによって、他のコンボ ボックス スタイルを指定できます。 これらのスタイルを使用すると、次のことができます。

  • リスト内の文字列検索で大文字と小文字が区別されるように設定します。

  • スラッシュ ('/')、円記号 ('\')、ピリオド ('.') 文字を単語区切り記号として使用するコンボ ボックス コントロールを作成します。 これにより、ユーザーはキーボード ショートカット Ctrl + ARROW を使用して単語間を移動できます。

  • コンボ ボックス コントロールを、画像を表示するか表示しないように設定します。 画像が表示されない場合、コンボ ボックスは画像に対応するテキスト インデントを削除できます。

  • 狭いコンボ ボックス コントロールを作成し、そのコントロールに含まれるより広いコンボ ボックスをクリップするようにサイズを変更します。

これらのスタイル フラグについては、「 CComboBoxEx の使用」で詳しく説明します。

アイテムの保持とコールバックアイテムの属性

アイテムと画像のインデックス、インデント値、テキスト文字列などの項目情報は、Windows SDK で説明されているように、Win32 構造体 COMBOBOXEXITEM に格納されます。 構造体には、コールバック フラグに対応するメンバーも含まれています。

概念的な詳細な説明については、「 CComboBoxEx の使用」を参照してください。

継承階層

CObject

CCmdTarget

CWnd

CComboBox

CComboBoxEx

要件

ヘッダー: afxcmn.h

CComboBoxEx::CComboBoxEx

このメンバー関数を呼び出して、 CComboBoxEx オブジェクトを作成します。

CComboBoxEx();

CComboBoxEx::Create

コンボ ボックスを作成し、 CComboBoxEx オブジェクトにアタッチします。

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

パラメーター

dwStyle
コンボ ボックスに適用されるコンボ ボックス スタイルの組み合わせを指定します。 スタイルの詳細については、以下の「 Remarks を参照してください。

rect
CRect オブジェクトまたは RECT 構造体への参照。コンボ ボックスの位置とサイズです。

pParentWnd
コンボ ボックスの親ウィンドウ (通常はCDialog) であるCWnd オブジェクトへのポインター。 NULL は指定できません。

nID
コンボ ボックスのコントロール ID を指定します。

戻り値

オブジェクトが正常に作成された場合は 0 以外。それ以外の場合は 0。

解説

2 つの手順で CComboBoxEx オブジェクトを作成します。

  1. CComboBoxEx を呼び出して、CComboBoxEx オブジェクトを構築します。

  2. このメンバー関数を呼び出します。これにより、拡張 Windows コンボ ボックスが作成され、 CComboBoxEx オブジェクトにアタッチされます。

Createを呼び出すと、MFC は共通コントロールを初期化します。

コンボ ボックスを作成するときに、次のコンボ ボックス スタイルの一部またはすべてを指定できます。

  • CBS_SIMPLE

  • CBS_DROPDOWN

  • CBS_DROPDOWNLIST

  • CBS_AUTOHSCROLL

  • WS_CHILD

ウィンドウの作成時に渡されるその他のスタイルはすべて無視されます。 ComboBoxEx コントロールは、追加の機能を提供する拡張スタイルもサポートしています。 これらのスタイルについては、Windows SDK の ComboBoxEx コントロール拡張スタイルで説明されています。 これらのスタイルを設定するには、 SetExtendedStyle を呼び出します。

コントロールで拡張ウィンドウ スタイルを使用する場合は、Createの代わりに CreateEx を呼び出します。

CComboBoxEx::CreateEx

この関数を呼び出して、拡張コンボ ボックス コントロール (子ウィンドウ) を作成し、 CComboBoxEx オブジェクトに関連付けます。

virtual BOOL CreateEx(
    DWORD dwExStyle,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

パラメーター

dwExStyle
作成するコントロールの拡張スタイルを指定します。 拡張 Windows スタイルの一覧については、Windows SDK の CreateWindowExdwExStyle パラメーターを参照してください。

dwStyle
コンボ ボックス コントロールのスタイル。 スタイルの一覧については、「 Create 」を参照してください。

rect
作成するウィンドウのサイズと位置を記述する RECT 構造体への参照 ( pParentWnd のクライアント座標)。

pParentWnd
コントロールの親であるウィンドウへのポインター。

nID
コントロールの子ウィンドウ ID。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

Createの代わりにCreateExを使用して、Windows 拡張スタイルの前書きWS_EX_で指定された拡張 Windows スタイルを適用します。

CreateEx は、 dwExStyle で指定された拡張 Windows スタイルを使用してコントロールを作成します。 SetExtendedStyle を使用して、拡張コンボ ボックス コントロールに固有の拡張スタイルを設定する必要があります。 たとえば、 CreateEx を使用してWS_EX_CONTEXTHELPなどのスタイルを設定しますが、 SetExtendedStyle を使用してCBES_EX_CASESENSITIVEなどのスタイルを設定します。 詳細については、Windows SDK の「 ComboBoxEx コントロール拡張スタイル 」のトピックで説明されているスタイルを参照してください。

CComboBoxEx::D eleteItem

ComboBoxEx コントロールから項目を削除します。

int DeleteItem(int iIndex);

パラメーター

iIndex
削除する項目の 0 から始まるインデックス。

戻り値

コントロールに残っている項目の数。 iIndex が無効な場合、関数はCB_ERRを返します。

解説

このメンバー関数は、Windows SDK で説明されているように、メッセージ CBEM_DELETEITEMの機能を実装します。 DeleteItem を呼び出すと、CBEN_DELETEITEM通知を含む WM_NOTIFY メッセージが親ウィンドウに送信されます。

CComboBoxEx::GetComboBoxCtrl

このメンバー関数を呼び出して、 CComboBoxEx オブジェクト内のコンボ ボックス コントロールへのポインターを取得します。

CComboBox* GetComboBoxCtrl();

戻り値

CComboBox オブジェクトを指すポインターです。

解説

CComboBoxEx コントロールは、CComboBoxをカプセル化する親ウィンドウで構成されます。

戻り値が指す CComboBox オブジェクトは一時的なオブジェクトであり、次のアイドル処理時間中に破棄されます。

CComboBoxEx::GetEditCtrl

このメンバー関数を呼び出して、コンボ ボックスの編集コントロールへのポインターを取得します。

CEdit* GetEditCtrl();

戻り値

CEdit オブジェクトへのポインター。

解説

CComboBoxEx コントロールは、CBS_DROPDOWN スタイルで編集ボックスを作成するときに使用します。

戻り値が指す CEdit オブジェクトは一時的なオブジェクトであり、次のアイドル処理時間中に破棄されます。

CComboBoxEx::GetExtendedStyle

このメンバー関数を呼び出して、 CComboBoxEx コントロールに使用される拡張スタイルを取得します。

DWORD GetExtendedStyle() const;

戻り値

コンボ ボックス コントロールに使用される拡張スタイルを含む DWORD 値。

解説

これらのスタイルの詳細については、Windows SDK の「 ComboBoxEx コントロール拡張スタイル 」を参照してください。

CComboBoxEx::GetImageList

このメンバー関数を呼び出して、 CComboBoxEx コントロールによって使用されるイメージ リストへのポインターを取得します。

CImageList* GetImageList() const;

戻り値

CImageList オブジェクトへのポインター。 失敗した場合、このメンバー関数は NULL を返します。

解説

戻り値が指す CImageList オブジェクトは一時的なオブジェクトであり、次のアイドル処理時間中に破棄されます。

CComboBoxEx::GetItem

特定の ComboBoxEx 項目の項目情報を取得します。

BOOL GetItem(COMBOBOXEXITEM* pCBItem);

パラメーター

pCBItem
アイテム情報を受け取る COMBOBOXEXITEM 構造体へのポインター。

戻り値

操作が成功した場合は 0 以外。それ以外の場合は 0。

解説

このメンバー関数は、Windows SDK で説明されているように、メッセージ CBEM_GETITEMの機能を実装します。

CComboBoxEx::HasEditChanged

ユーザーが入力して ComboBoxEx 編集コントロールの内容を変更したかどうかを判断します。

BOOL HasEditChanged();

戻り値

ユーザーがコントロールの編集ボックスに入力した場合は 0 以外。それ以外の場合は 0。

解説

このメンバー関数は、Windows SDK で説明されているように、メッセージ CBEM_HASEDITCHANGEDの機能を実装します。

CComboBoxEx::InsertItem

ComboBoxEx コントロールに新しい項目を挿入します。

int InsertItem(const COMBOBOXEXITEM* pCBItem);

パラメーター

pCBItem
アイテム情報を受け取る COMBOBOXEXITEM 構造体へのポインター。 この構造体には、項目のコールバック フラグ値が含まれています。

戻り値

成功した場合に新しい項目が挿入されたインデックス。それ以外の場合は -1。

解説

InsertItemを呼び出すと、CBEN_INSERTITEM通知を含むWM_NOTIFY メッセージが親ウィンドウに送信されます。

CComboBoxEx::SetExtendedStyle

コンボ ボックス拡張コントロールに使用する拡張スタイルを設定するには、このメンバー関数を呼び出します。

DWORD SetExtendedStyle(
    DWORD dwExMask,
    DWORD dwExStyles);

パラメーター

dwExMask
影響を受ける dwExStyles のスタイルを示す DWORD 値。 dwExMask 内の拡張スタイルのみが変更されます。 他のすべてのスタイルは、そのまま維持されます。 このパラメーターが 0 の場合、 dwExStyles 内のすべてのスタイルが影響を受けます。

dwExStyles
コントロールに設定する拡張スタイルのコンボ ボックス コントロールを含む DWORD 値。

戻り値

以前にコントロールに使用された拡張スタイルを含む DWORD 値。

解説

これらのスタイルの詳細については、Windows SDK の「 ComboBoxEx コントロール拡張スタイル 」を参照してください。

拡張ウィンドウ スタイルを持つコンボ ボックス拡張コントロールを作成するには、 CreateExを使用します。

CComboBoxEx::SetImageList

ComboBoxEx コントロールのイメージ リストを設定します。

CImageList* SetImageList(CImageList* pImageList);

パラメーター

pImageList
CComboBoxEx コントロールで使用するイメージを含むCImageList オブジェクトへのポインター。

戻り値

CComboBoxEx コントロールによって以前に使用されたイメージを含むCImageList オブジェクトへのポインター。 イメージ リストが以前に設定されていない場合は NULL。

解説

このメンバー関数は、Windows SDK で説明されているように、メッセージ CBEM_SETIMAGELISTの機能を実装します。 既定の編集コントロールの高さを変更する場合は、Win32 関数 SetWindowPos を呼び出して、 SetImageListを呼び出した後にコントロールのサイズを変更するか、正しく表示されません。

戻り値が指す CImageList オブジェクトは一時的なオブジェクトであり、次のアイドル処理時間中に破棄されます。

CComboBoxEx::SetItem

ComboBoxEx コントロール内の項目の属性を設定します。

BOOL SetItem(const COMBOBOXEXITEM* pCBItem);

パラメーター

pCBItem
アイテム情報を受け取る COMBOBOXEXITEM 構造体へのポインター。

戻り値

操作が成功した場合は 0 以外。それ以外の場合は 0。

解説

このメンバー関数は、Windows SDK で説明されているように、メッセージ CBEM_SETITEMの機能を実装します。

CComboBoxEx::SetWindowTheme

拡張コンボ ボックス コントロールの表示スタイルを設定します。

HRESULT SetWindowTheme(LPCWSTR pszSubAppName);

パラメーター

pszSubAppName
設定する拡張コンボ ボックスのビジュアル スタイルを含む Unicode 文字列へのポインター。

戻り値

戻り値は使用されません。

解説

このメンバー関数は、Windows SDK で説明されているように、 CBEM_SETWINDOWTHEME メッセージの機能をエミュレートします。

関連項目

MFC サンプル MFCIE
CComboBox クラス
階層図
CComboBox クラス