Mfc-list-box
MFC-リストボックス
リストボックス*には、ユーザーが表示および選択できるファイル名などのアイテムのリストが表示されます。 リストボックスは CListBoxクラス*で表されます。 単一選択リストボックスでは、ユーザーは1つの項目のみを選択できます。 複数選択リストボックスでは、さまざまなアイテムを選択できます。 ユーザーがアイテムを選択すると、そのアイテムが強調表示され、リストボックスが親ウィンドウに通知メッセージを送信します。
____CListBoxクラスのメソッドのリストです。
Sr.No. | Name & Description |
---|---|
1 |
AddString リストボックスに文字列を追加します。 |
2 |
CharToItem 文字列を持たないオーナー描画リストボックスのカスタム WM_CHAR 処理を提供するためにオーバーライドします。 |
3 |
CompareItem ソートされたオーナー描画リストボックス内の新しいアイテムの位置を決定するために、フレームワークによって呼び出されます。 |
4 |
Create Windowsリストボックスを作成し、CListBoxオブジェクトに添付します。 |
5 |
DeleteItem ユーザーがオーナー描画リストボックスから項目を削除するときに、フレームワークによって呼び出されます。 |
6 |
DeleteString リストボックスから文字列を削除します。 |
7 |
Dir ファイル名、ドライブ、またはその両方を現在のディレクトリからリストボックスに追加します。 |
8 |
DrawItem オーナー描画リストボックスの視覚的側面が変更されたときに、フレームワークによって呼び出されます。 |
9 |
FindString リストボックスで文字列を検索します。 |
10 |
FindStringExact 指定された文字列に一致する最初のリストボックス文字列を検索します。 |
11 |
GetAnchorIndex リストボックス内の現在のアンカーアイテムのゼロから始まるインデックスを取得します。 |
12 |
GetCaretIndex 複数選択リストボックスにフォーカス四角形があるアイテムのインデックスを決定します。 |
13 |
GetCount リストボックス内の文字列の数を返します。 |
14 |
GetCurSel リストボックスで現在選択されている文字列のゼロから始まるインデックスを返します。 |
15 |
GetHorizontalExtent リストボックスを水平方向にスクロールできる幅をピクセル単位で返します。 |
16 |
GetItemData リストボックス項目に関連付けられた32ビット値を返します。 |
17 |
GetItemDataPtr リストボックス項目へのポインターを返します。 |
18 |
GetItemHeight リストボックス内のアイテムの高さを決定します。 |
19 |
GetItemRect 現在表示されているリストボックスアイテムの境界矩形を返します。 |
20 |
GetListBoxInfo 列ごとのアイテム数を取得します。 |
21 |
GetLocale リストボックスのロケール識別子を取得します。 |
22 |
GetSel リストボックスアイテムの選択状態を返します。 |
23 |
GetSelCount 複数選択リストボックスで現在選択されている文字列の数を返します。 |
24 |
GetSelItems リストボックスで現在選択されている文字列のインデックスを返します。 |
25 |
GetText リストボックスアイテムをバッファにコピーします。 |
26 |
GetTextLen リストボックス項目の長さをバイト単位で返します。 |
27 |
GetTopIndex リストボックスで最初に表示される文字列のインデックスを返します。 |
28 |
InitStorage リストボックスのアイテムと文字列にメモリブロックを事前に割り当てます。 |
29 |
InsertString リストボックスの特定の場所に文字列を挿入します。 |
30 |
ItemFromPoint ポイントに最も近いリストボックスアイテムのインデックスを返します。 |
31 |
MeasureItem リストボックスのサイズを決定するためにownerdrawリストボックスが作成されたときに、フレームワークによって呼び出されます。 |
32 |
ResetContent リストボックスからすべてのエントリをクリアします。 |
33 |
SelectString 単一選択リストボックスで文字列を検索して選択します。 |
34 |
SelItemRange 複数選択リストボックスで文字列の範囲を選択または選択解除します。 |
35 |
SetAnchorIndex 複数選択リストボックスにアンカーを設定して、拡張選択を開始します。 |
36 |
SetCaretIndex 複数選択リストボックスの指定されたインデックスにあるアイテムにフォーカス四角形を設定します。 |
37 |
SetColumnWidth 複数列のリストボックスの列幅を設定します。 |
38 |
SetCurSel リストボックス文字列を選択します。 |
39 |
SetHorizontalExtent リストボックスを水平方向にスクロールできる幅をピクセル単位で設定します。 |
40 |
SetItemData リストボックス項目に関連付けられた32ビット値を設定します。 |
41 |
SetItemDataPtr リストボックス項目へのポインターを設定します。 |
42 |
SetItemHeight リストボックス内のアイテムの高さを設定します。 |
43 |
SetLocale リストボックスのロケール識別子を設定します。 |
44 |
SetSel 複数選択リストボックス内のリストボックス項目を選択または選択解除します。 |
45 |
SetTabStops リストボックスのタブストップ位置を設定します。 |
46 |
SetTopIndex リストボックスで最初に表示される文字列のゼロから始まるインデックスを設定します。 |
47 |
VKeyToItem
|
リストボックスのマッピングエントリは次のとおりです-
Message | Map entry | Description |
---|---|---|
LBN_DBLCLK | ON_LBN_DBLCLK( <id>, <memberFxn> ) | The framework calls this member function when list item is double clicked. |
LBN_KILLFOCUS | ON_LBN_KILLFOCUS( <id>, <memberFxn> ) | The framework calls this member function immediately before losing the input focus. |
LBN_SELCHANGE | ON_LBN_SELCHANGE( <id>, <memberFxn> ) | The framework calls this member function when selection is changed. |
LBN_SETFOCUS | ON_LBN_SETFOCUS( <id>, <memberFxn> ) | The framework calls this member function after gaining the input focus. |
新しいMFCダイアログベースのアプリケーションを作成して、リストボックスの簡単な例を見てみましょう。
- ステップ1 *-プロジェクトが作成されると、テキストコントロールのキャプションであるTODO行が表示されます。 キャプションを削除し、そのIDをIDC_STATIC_TXTに設定します。
- ステップ2 *-ツールボックスからリストボックスをドラッグします。
- ステップ3 *-テキストコントロールのコントロール変数を追加します。
- ステップ4 *-テキストコントロールの値変数を追加します。
- ステップ5 *-リストボックスコントロールのコントロール変数を追加します。
- ステップ6 *-リストボックスコントロールのイベントハンドラーを追加します。
- ステップ7 *-メッセージタイプからLBN_SELCHANGEを選択し、イベントハンドラーの名前を入力します。
- ステップ8 *-リストボックスを読み込む関数を1つ追加します。
void CMFCListBoxDlg::LoadListBox() {
CString str = _T("");
for (int i = 0; i<10; i++) {
str.Format(_T("Item %d"), i);
m_listBox.AddString(str);
}
}
- *ステップ9 *-次のコードに示すように、CMFCListBoxDlg
- OnInitDialog()から関数を呼び出します。
BOOL CMFCListBoxDlg::OnInitDialog() {
CDialogEx::OnInitDialog();
//Set the icon for this dialog. The framework does this automatically
//when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); //Set big icon
SetIcon(m_hIcon, FALSE); //Set small icon
//TODO: Add extra initialization here
LoadListBox();
return TRUE;//return TRUE unless you set the focus to a control
}
- ステップ10 *-これはイベントハンドラの実装です。 これにより、リストボックスから現在選択されている項目が表示されます。
void CMFCListBoxDlg::OnLbnSelchangeList1() {
//TODO: Add your control notification handler code here
m_listBox.GetText(m_listBox.GetCurSel(),m_strItemSelected);
UpdateData(FALSE);
}
- ステップ11 *-上記のコードをコンパイルして実行すると、次の出力が表示されます。
- ステップ12 *-項目を選択すると、テキストコントロールに表示されます。