Mfc-list-box

提供:Dev Guides
移動先:案内検索

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

  • LBS_WANTKEYBOARDINPUT* スタイルセットを持つリストボックスのカスタム *WM_KEYDOWN* 処理を提供するためにオーバーライドします。

リストボックスのマッピングエントリは次のとおりです-

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 *-ツールボックスからリストボックスをドラッグします。

Listbox1

  • ステップ3 *-テキストコントロールのコントロール変数を追加します。

Listbox2

  • ステップ4 *-テキストコントロールの値変数を追加します。

Listbox3

  • ステップ5 *-リストボックスコントロールのコントロール変数を追加します。

Listbox4

  • ステップ6 *-リストボックスコントロールのイベントハンドラーを追加します。

Listbox5

  • ステップ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 *-上記のコードをコンパイルして実行すると、次の出力が表示されます。

Listbox6

  • ステップ12 *-項目を選択すると、テキストコントロールに表示されます。