CComboBox クラス
Windows のコンボ ボックスの機能が用意されています。
class CComboBox : public CWnd
メンバー
パブリック コンストラクター
名前 |
説明 |
---|---|
CComboBox オブジェクトを構築します。 |
パブリック メソッド
名前 |
説明 |
---|---|
コンボ ボックス、または CBS_SORT のスタイルのリスト ボックスの分類された位置のリスト ボックスの一覧の末尾に文字列を追加します。 |
|
エディット コントロールの現在の選択がある場合、削除 (クリア) します。 |
|
並べ替えられたオーナー描画コンボ ボックスのリストに新しい項目の相対位置を決定するために、フレームワークによって呼び出されます。 |
|
CF_TEXT 形式でクリップボードに現在の選択がある場合、コピーします。 |
|
コンボ ボックスを作成し、CComboBox のオブジェクトにアタッチします。 |
|
エディット コントロール、コピーの現在の選択範囲がある場合は、CF_TEXT 形式でクリップボードに削除されたテキスト削除し (切り取り) ます。 |
|
リスト項目がオーナー描画コンボ ボックスから削除されるときに、フレームワークによって呼び出されます。 |
|
コンボ ボックスのリスト ボックスから文字列を削除します。 |
|
コンボ ボックスのリスト ボックスにファイル名のリストを追加します。 |
|
オーナー描画コンボ ボックスの外観が変更されたときに、フレームワークによって呼び出されます。 |
|
コンボ ボックスのリスト ボックスで指定されているプレフィックスを含む最初の文字列を検索します。 |
|
その最初のリスト ボックスの文字列 (コンボ ボックス) で一致した文字列を検索します。 |
|
CComboBox のオブジェクトについての情報を取得します。 |
|
コンボ ボックスのリスト ボックスの項目数を取得します。 |
|
コンボ ボックス コントロールに表示されるキューのテキストを取得します。 |
|
コンボ ボックスのリスト ボックスで現在選択されている項目のインデックス (存在する場合) を取得します。 |
|
コンボ ボックスの表示 (ドロップダウン) ドロップダウン リスト ボックスの画面座標を取得します。 |
|
ドロップダウン コンボ ボックスのリスト ボックスが表示されるかどうかを判断します (削除)。 |
|
コンボ ボックスのドロップダウン リスト ボックス部分の最小によって割り当てられた幅を取得します。 |
|
コンボ ボックスのエディット コントロールの現在の選択範囲の開始文字と終了文字位置を取得します。 |
|
コンボ ボックスが既定のユーザー インターフェイスや拡張ユーザー インターフェイスを持つかどうかを判定します。 |
|
コンボ ボックスのリスト ボックス部分を水平方向にスクロールできるピクセル幅を返します。 |
|
指定したコンボ ボックスの項目に関連付けられたアプリケーションに用意された 32 ビット値を取得します。 |
|
指定したコンボ ボックスの項目に関連付けられたアプリケーションに用意された 32 ビット ポインターを取得します。 |
|
コンボ ボックス リストの項目の高さを取得します。 |
|
コンボ ボックスのリスト ボックスから文字列を取得します。 |
|
コンボ ボックスのリスト ボックスの文字列の長さを取得します。 |
|
コンボ ボックスのロケール識別子を取得します。 |
|
現在のコンボ ボックスのドロップダウン リストに表示されるアイテムの最小数を取得します。 |
|
コンボ ボックスのリスト ボックス部分に最初に表示される項目のインデックスを返します。 |
|
コンボ ボックスのリスト ボックス部分の項目と文字列のメモリ ブロックを割り当てします。 |
|
コンボ ボックスのリスト ボックスに文字列を追加します。 |
|
ユーザーがコンボ ボックスのエディット コントロールに入力できるテキストの長さを制限します。 |
|
オーナー描画コンボ ボックスが作成されると、コンボ ボックスのサイズを決定するために、フレームワークによって呼び出されます。 |
|
現在のカーソル位置で編集コントロールにクリップボードからデータを挿入します。データがクリップボードに CF_TEXT の形式のデータが含まれている場合にのみ挿入します。 |
|
コンボ ボックスのリスト ボックスとエディット コントロールからすべての項目を削除します。 |
|
文字列の場合、コンボ ボックスのリスト ボックスの文字列の検索で、リスト ボックスに文字列を選択し、エディット コントロールに文字列をコピーします。 |
|
コンボ ボックス コントロールに表示されるキューのテキストを設定します。 |
|
コンボ ボックスのリスト ボックスの文字列を選択します。 |
|
コンボ ボックスのドロップダウン リスト ボックス部分の最小によって割り当てられた幅を設定します。 |
|
コンボ ボックスのエディット コントロール内の文字を選択します。 |
|
CBS_DROPDOWN または CBS_DROPDOWNLIST のスタイルを持つコンボ ボックスの既定のユーザー インターフェイスや拡張ユーザー インターフェイスを選択します。 |
|
コンボ ボックスのリスト ボックス部分を水平方向にスクロールできるピクセル幅を設定します。 |
|
32 ビット値をコンボ ボックスの指定項目に関連付けられる。 |
|
32 ビット ポインターをコンボ ボックスの指定項目に関連付けられる。 |
|
コンボ ボックス リストの項目の高さまたはコンボ ボックスのエディット コントロール (または静的テキスト) 部分の高さを設定します。 |
|
コンボ ボックスのロケール識別子を設定します。 |
|
現在のコンボ ボックスのドロップダウン リストに表示されるアイテムの最小数を設定します。 |
|
コンボ ボックスのリスト ボックス部分を先頭で指定されたインデックスの項目を表示するように指定します。 |
|
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_KEYDOWN と WM_CHAR のメッセージを処理する場合はNote サブクラス コンボ ボックスのエディット コントロール、リスト ボックス コントロール、クラスを CEdit と CListBoxから取得し、それらのメッセージのハンドラーを派生クラスに追加する必要があります。詳細については、https://support.microsoft.com/default.aspx?scid=kb;ja-jp;q174667 および「CWnd::SubclassWindow」を参照してください。
継承階層
CComboBox
必要条件
ヘッダー: afxwin.h