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 の使用」を参照してください。
継承階層
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
オブジェクトを作成します。
CComboBoxEx を呼び出して、
CComboBoxEx
オブジェクトを構築します。このメンバー関数を呼び出します。これにより、拡張 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 の CreateWindowEx の dwExStyle パラメーターを参照してください。
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 メッセージの機能をエミュレートします。