CComboBox クラス

Windows のコンボ ボックスの機能が用意されています。

class CComboBox : public CWnd

メンバー

12h9x0ch.collapse_all(ja-jp,VS.110).gifパブリック コンストラクター

名前

説明

CComboBox::CComboBox

CComboBox オブジェクトを構築します。

12h9x0ch.collapse_all(ja-jp,VS.110).gifパブリック メソッド

名前

説明

CComboBox::AddString

コンボ ボックス、または CBS_SORT のスタイルのリスト ボックスの分類された位置のリスト ボックスの一覧の末尾に文字列を追加します。

CComboBox::Clear

エディット コントロールの現在の選択がある場合、削除 (クリア) します。

CComboBox::CompareItem

並べ替えられたオーナー描画コンボ ボックスのリストに新しい項目の相対位置を決定するために、フレームワークによって呼び出されます。

CComboBox::Copy

CF_TEXT 形式でクリップボードに現在の選択がある場合、コピーします。

CComboBox::Create

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

CComboBox::Cut

エディット コントロール、コピーの現在の選択範囲がある場合は、CF_TEXT 形式でクリップボードに削除されたテキスト削除し (切り取り) ます。

CComboBox::DeleteItem

リスト項目がオーナー描画コンボ ボックスから削除されるときに、フレームワークによって呼び出されます。

CComboBox::DeleteString

コンボ ボックスのリスト ボックスから文字列を削除します。

CComboBox::Dir

コンボ ボックスのリスト ボックスにファイル名のリストを追加します。

CComboBox::DrawItem

オーナー描画コンボ ボックスの外観が変更されたときに、フレームワークによって呼び出されます。

CComboBox::FindString

コンボ ボックスのリスト ボックスで指定されているプレフィックスを含む最初の文字列を検索します。

CComboBox::FindStringExact

その最初のリスト ボックスの文字列 (コンボ ボックス) で一致した文字列を検索します。

CComboBox::GetComboBoxInfo

CComboBox のオブジェクトについての情報を取得します。

CComboBox::GetCount

コンボ ボックスのリスト ボックスの項目数を取得します。

CComboBox::GetCueBanner

コンボ ボックス コントロールに表示されるキューのテキストを取得します。

CComboBox::GetCurSel

コンボ ボックスのリスト ボックスで現在選択されている項目のインデックス (存在する場合) を取得します。

CComboBox::GetDroppedControlRect

コンボ ボックスの表示 (ドロップダウン) ドロップダウン リスト ボックスの画面座標を取得します。

CComboBox::GetDroppedState

ドロップダウン コンボ ボックスのリスト ボックスが表示されるかどうかを判断します (削除)。

CComboBox::GetDroppedWidth

コンボ ボックスのドロップダウン リスト ボックス部分の最小によって割り当てられた幅を取得します。

CComboBox::GetEditSel

コンボ ボックスのエディット コントロールの現在の選択範囲の開始文字と終了文字位置を取得します。

CComboBox::GetExtendedUI

コンボ ボックスが既定のユーザー インターフェイスや拡張ユーザー インターフェイスを持つかどうかを判定します。

CComboBox::GetHorizontalExtent

コンボ ボックスのリスト ボックス部分を水平方向にスクロールできるピクセル幅を返します。

CComboBox::GetItemData

指定したコンボ ボックスの項目に関連付けられたアプリケーションに用意された 32 ビット値を取得します。

CComboBox::GetItemDataPtr

指定したコンボ ボックスの項目に関連付けられたアプリケーションに用意された 32 ビット ポインターを取得します。

CComboBox::GetItemHeight

コンボ ボックス リストの項目の高さを取得します。

CComboBox::GetLBText

コンボ ボックスのリスト ボックスから文字列を取得します。

CComboBox::GetLBTextLen

コンボ ボックスのリスト ボックスの文字列の長さを取得します。

CComboBox::GetLocale

コンボ ボックスのロケール識別子を取得します。

CComboBox::GetMinVisible

現在のコンボ ボックスのドロップダウン リストに表示されるアイテムの最小数を取得します。

CComboBox::GetTopIndex

コンボ ボックスのリスト ボックス部分に最初に表示される項目のインデックスを返します。

CComboBox::InitStorage

コンボ ボックスのリスト ボックス部分の項目と文字列のメモリ ブロックを割り当てします。

CComboBox::InsertString

コンボ ボックスのリスト ボックスに文字列を追加します。

CComboBox::LimitText

ユーザーがコンボ ボックスのエディット コントロールに入力できるテキストの長さを制限します。

CComboBox::MeasureItem

オーナー描画コンボ ボックスが作成されると、コンボ ボックスのサイズを決定するために、フレームワークによって呼び出されます。

CComboBox::Paste

現在のカーソル位置で編集コントロールにクリップボードからデータを挿入します。データがクリップボードに CF_TEXT の形式のデータが含まれている場合にのみ挿入します。

CComboBox::ResetContent

コンボ ボックスのリスト ボックスとエディット コントロールからすべての項目を削除します。

CComboBox::SelectString

文字列の場合、コンボ ボックスのリスト ボックスの文字列の検索で、リスト ボックスに文字列を選択し、エディット コントロールに文字列をコピーします。

CComboBox::SetCueBanner

コンボ ボックス コントロールに表示されるキューのテキストを設定します。

CComboBox::SetCurSel

コンボ ボックスのリスト ボックスの文字列を選択します。

CComboBox::SetDroppedWidth

コンボ ボックスのドロップダウン リスト ボックス部分の最小によって割り当てられた幅を設定します。

CComboBox::SetEditSel

コンボ ボックスのエディット コントロール内の文字を選択します。

CComboBox::SetExtendedUI

CBS_DROPDOWN または CBS_DROPDOWNLIST のスタイルを持つコンボ ボックスの既定のユーザー インターフェイスや拡張ユーザー インターフェイスを選択します。

CComboBox::SetHorizontalExtent

コンボ ボックスのリスト ボックス部分を水平方向にスクロールできるピクセル幅を設定します。

CComboBox::SetItemData

32 ビット値をコンボ ボックスの指定項目に関連付けられる。

CComboBox::SetItemDataPtr

32 ビット ポインターをコンボ ボックスの指定項目に関連付けられる。

CComboBox::SetItemHeight

コンボ ボックス リストの項目の高さまたはコンボ ボックスのエディット コントロール (または静的テキスト) 部分の高さを設定します。

CComboBox::SetLocale

コンボ ボックスのロケール識別子を設定します。

CComboBox::SetMinVisibleItems

現在のコンボ ボックスのドロップダウン リストに表示されるアイテムの最小数を設定します。

CComboBox::SetTopIndex

コンボ ボックスのリスト ボックス部分を先頭で指定されたインデックスの項目を表示するように指定します。

CComboBox::ShowDropDown

CBS_DROPDOWN または CBS_DROPDOWNLIST のスタイルを持つコンボ ボックスのリスト ボックスを表示または非表示にします。

解説

コンボ ボックスは、静的コントロールまたはエディット コントロールのいずれかとリスト ボックスを組み合わせたものです。コントロールのリスト ボックス部分は、常に表示することも、ユーザーがエディット コントロールの横のドロップダウン矢印を選択したときだけ表示することもできます。

リスト ボックスで現在選択されている項目があると、その項目が静的コントロールまたはエディット コントロールに表示されます。また、ドロップダウン リスト スタイルが指定されているコンボ ボックスでは、ユーザーがリスト ボックス内にある項目の先頭の文字を入力できます。リスト ボックスが表示されている場合、入力された文字で始まる次の項目が強調表示されます。

コンボ ボックスの 3 つのスタイルを次の表で比較します。

スタイル

リスト ボックスが表示されるとき

コントロールの種類

シンプル

常時

Edit

ドロップダウン

ドロップダウンされたとき

Edit

ドロップダウン リスト

ドロップダウンされたとき

静的

CComboBox オブジェクトを作成するには、ダイアログ テンプレートを使用するか、直接コードを記述します。いずれの場合も、まず CComboBox クラスのコンストラクターを呼び出して CComboBox オブジェクトを構築します。続いて、コントロールを作成するために Create メンバー関数を呼び出し、作成したコントロールを CComboBox オブジェクトを結び付けます。

コンボ ボックスからその親クラス (通常は CDialog の派生クラス) に送られた Windows の通知メッセージを処理するには、各メッセージの送信先の親クラスに、メッセージ マップのエントリとメッセージ ハンドラー メンバー関数を追加します。

各メッセージ マップのエントリは次の形式を持ちます。

ON_Notification( id**,** memberFxn )

id には、通知を送るコンボ ボックス コントロールの子ウィンドウ ID を指定します。memberFxn には、通知を処理する親クラスのメンバー関数名を指定します。

親の関数のプロトタイプは次のようになります。

afx_msg void memberFxn**(** );

送られてくる通知の順序は決まっていません。特に、CBN_SELCHANGE 通知は、CBN_CLOSEUP 通知の前に発生するのか、後に発生するのかがわかりません。

有効なメッセージ マップのエントリを次に示します。

  • ON_CBN_CLOSEUP (Windows 3.1 以降)。コンボ ボックスのリスト ボックスが閉じられました。この通知メッセージは、CBS_SIMPLE スタイルを持つコンボ ボックスについては送られません。

  • ON_CBN_DBLCLK ユーザーはコンボ ボックスのリスト ボックス内の文字列をダブルクリックします。この通知メッセージは、CBS_SIMPLE スタイルを持つコンボ ボックスについてだけ送られます。CBS_DROPDOWN スタイルまたは CBS_DROPDOWNLIST スタイルを持つコンボ ボックスでは、シングルクリックするとリスト ボックスが非表示になるので、ダブルクリックされることはありません。

  • ON_CBN_DROPDOWN は、コンボ ボックスのリスト ボックス ドロップ通知 (表示されるようにしてください)。この通知メッセージは、CBS_DROPDOWN または CBS_DROPDOWNLIST スタイルを持つコンボ ボックスについてだけ送られます。

  • ON_CBN_EDITCHANGE ユーザーはコンボ ボックスのエディット コントロール部分のテキストを変更する可能性があるアクションをされました。このメッセージは、CBN_EDITUPDATE メッセージと異なり、Windows が画面を更新した後で送られます。このメッセージはコンボ ボックスが CBS_DROPDOWNLIST スタイルを持つときには送られません。

  • ON_CBN_EDITUPDATE はによって表示されるテキストにコンボ ボックスのエディット コントロール部分を通知します。この通知メッセージは、コントロールがテキストの書式を設定し、そのテキストを表示するまでの間に送られます。このメッセージはコンボ ボックスが CBS_DROPDOWNLIST スタイルを持つときには送られません。

  • コンボ ボックスON_CBN_ERRSPACE は、特定の要求に対して十分なメモリを割り当てることはできません。

  • ON_CBN_SELENDCANCEL (Windows 3.1 以降)。ユーザーによる選択がキャンセルされることを通知します。つまり、ユーザーが項目をクリックしてから、ほかのウィンドウやコントロールをクリックし、コンボ ボックスのリスト ボックスを非表示にした場合などです。この通知メッセージは、選択が無効になったことを伝えるため、CBN_CLOSEUP 通知メッセージの前に送られます。CBN_SELENDCANCEL または CBN_SELENDOK 通知メッセージは、CBN_CLOSEUP 通知メッセージが送られない場合 (コンボ ボックスが CBS_SIMPLE スタイルを持つ場合) でも送られます。

  • ON_CBN_SELENDOK ユーザーが項目を選択し、Enter キーを押すか、コンボ ボックスのリスト ボックスを非表示にしたことを通知します。この通知メッセージは、ユーザーによる選択が有効であることを伝えるために CBN_CLOSEUP メッセージの前に送られます。CBN_SELENDCANCEL または CBN_SELENDOK 通知メッセージは、CBN_CLOSEUP 通知メッセージが送られない場合 (コンボ ボックスが CBS_SIMPLE スタイルを持つ場合) でも送られます。

  • ON_CBN_KILLFOCUS コンボ ボックスが入力フォーカスを失うことを通知します。

  • ON_CBN_SELCHANGE は、コンボ ボックスのリスト ボックスで選択リスト ボックスでをクリックするか、方向キーを使用してオプションを変更するユーザーの結果、変更されたことを通知します。このメッセージを処理するとき、コンボ ボックスのエディット コントロール内のテキストを取得するには、GetLBText 関数または別の同種の関数を使います。GetWindowText 関数は使用できません。

  • ON_CBN_SETFOCUS コンボ ボックスが入力フォーカスを受け取ります。

ダイアログ ボックス内に (ダイアログ リソースを使って) CComboBox オブジェクトを作成したときは、ダイアログ ボックスを閉じたときに CComboBox オブジェクトは自動的に破棄されます。

その他のウィンドウ オブジェクトに CComboBox オブジェクトを埋め込んだときは、オブジェクトを破棄する必要はありません。CComboBox オブジェクトをスタック上に作成したときは、自動的に破棄されます。CComboBox オブジェクトを new 関数を使ってヒープ領域に作成したときは、Windows のコンボ ボックスを破棄したときにオブジェクトが破棄されるように、オブジェクトに対する delete 関数を呼び出します。

WM_KEYDOWNWM_CHAR のメッセージを処理する場合はNote サブクラス コンボ ボックスのエディット コントロール、リスト ボックス コントロール、クラスを CEditCListBoxから取得し、それらのメッセージのハンドラーを派生クラスに追加する必要があります。詳細については、https://support.microsoft.com/default.aspx?scid=kb;ja-jp;q174667 および「CWnd::SubclassWindow」を参照してください。

継承階層

CObject

CCmdTarget

CWnd

CComboBox

必要条件

ヘッダー: afxwin.h

参照

関連項目

CWnd クラス

階層図

CWnd クラス

CButton クラス

CEdit クラス

CListBox クラス

CScrollBar クラス

CStatic クラス

CDialog クラス

概念

MFC CTRLBARS サンプル