5

次のようなテーブルを作成するには:

ここに画像の説明を入力
MFC ダイアログで、a を追加しList Controlました。次に、Add Variableウィザードを使用して、コントロール用に次の変数を作成しました。

public:
CListCtrl m_lstIDC_LIST1Control;  

次にOnInitDialog、ダイアログの関数に、次のコード行を追加しました。

// TODO: Add extra initialization here
m_lstIDC_LIST1Control.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_lstIDC_LIST1Control.SetExtendedStyle(LVS_EX_GRIDLINES);
//m_lstIDC_LIST1Control.SetExtendedStyle( LVS_SHOWSELALWAYS);
LVITEM lvItem;

lvItem.mask = LVIF_TEXT;
lvItem.iItem = 0;
lvItem.iSubItem = 0;
char* text = "Sandra C. Anschwitz";
wchar_t wtext[50];
mbstowcs(wtext, text, strlen(text)+1);
LPWSTR ptr = wtext;
lvItem.pszText = ptr;
m_lstIDC_LIST1Control.InsertItem(&lvItem);
UpdateData(false);  

私が得る結果は次のとおりです。

ここに画像の説明を入力
行のコメントを外すと、次のようになります。

//m_lstIDC_LIST1Control.SetExtendedStyle( LVS_SHOWSELALWAYS);  

水平グリッドも表示されません!
だから問題は何ですか?
追加したアイテムが表示されないのはなぜですか? 最初の図のようなテーブルを作成するにはどうすればよいですか?

4

2 に答える 2

24

最初に、リソース エディターでリスト コントロールReportのプロパティのオプションを選択したことを確認します。Viewあなたが望んでいるものではないデフォルトのIconビューを使用していると思われます。

次に、必要な列を追加する必要があります。

m_lstIDC_LIST1Control.InsertColumn(0, _T("Full Name"), LVCFMT_LEFT, 90);
m_lstIDC_LIST1Control.InsertColumn(1, _T("Profession"), LVCFMT_LEFT, 90);
m_lstIDC_LIST1Control.InsertColumn(2, _T("Fav Sport"), LVCFMT_LEFT, 90);
m_lstIDC_LIST1Control.InsertColumn(3, _T("Hobby"), LVCFMT_LEFT, 90);

最後に、次のように簡単にリスト アイテムを設定できます。

int nIndex = m_lstIDC_LIST1Control.InsertItem(0, _T("Sandra C. Anschwitz"));
m_lstIDC_LIST1Control.SetItemText(nIndex, 1, _T("Singer"));
m_lstIDC_LIST1Control.SetItemText(nIndex, 2, _T("Handball"));
m_lstIDC_LIST1Control.SetItemText(nIndex, 3, _T("Beach"));

nIndex = m_lstIDC_LIST1Control.InsertItem(1, _T("Roger A. Miller"));
m_lstIDC_LIST1Control.SetItemText(nIndex, 1, _T("Footballer"));
m_lstIDC_LIST1Control.SetItemText(nIndex, 2, _T("Tennis"));
m_lstIDC_LIST1Control.SetItemText(nIndex, 3, _T("Teaching"));

等々 ....

于 2013-09-14T13:56:46.717 に答える
2

また、適切な種類のコントロールがあることを確認してください... (少なくとも Visual Studio 2008 のリソース エディターでは) リスト ボックスではなく、ツールボックスでリスト コントロールと呼ばれるものが必要です。

于 2015-02-28T09:40:59.200 に答える