c++ - 如何创建多列列表框?

标签 c++ windows listbox

我正在开发一个程序,它应该列出所有文件及其大小(目前...)。我创建了一个简单的应用程序,它应该将数据写入列表框。我试图将数据写在两列中(第一列应该是名称,在它旁边的另一列中,它是大小),但我不知道我应该怎么做。 有人可以帮助我吗?

提前致谢!

坎比

更新:

我尝试使用 ListControl.,但不幸的是我不能。我可以成功编译我的应用程序,但我只能看到空矩形。有人知道我做错了什么吗?

BOOL CGetFileListDlg::OnInitDialog()
{  
CDialog::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

LVITEM lvItem;
LVCOLUMN lvColumn;
int nCol;

lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;
lvColumn.fmt = LVCFMT_CENTER;
lvColumn.cx = 10;
lvColumn.pszText = _T("Filename");
ListView_InsertColumn( m_List, 0, &lvColumn ); 
ListView_SetItemText( m_List, 0, 0, _T("TEST") );

return TRUE;  // return TRUE  unless you set the focus to a control    
}

最佳答案

列表框控件确实支持多列,但它只支持单个系列的条目;多列支持只是让项目继续到下一列,因此不需要垂直滚动。

正如 Kornel 所建议的那样,一个 list view control可能更合适。创建 ListView 控件后,使用 ListView_InsertColumn创建列。然后使用 ListView_SetItemText插入项目。

编辑: 我的道歉;你应该使用 ListView_InsertItem插入一个项目(一行)然后使用 ListView_SetItemText更改子项(列)。如果 ListView 仍然只是一个没有任何标题的空白框,您是否初始化了常用控件?这可以使用 InitCommonControlsEx 来完成,指定 ICC_LISTVIEW_CLASSES 常量。这应该在创建控件之前完成。

参见 Microsoft's documentation on list view controls .

关于c++ - 如何创建多列列表框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2166473/

相关文章:

c# - ListBox 未获取选定的项目

vb6 - 如何在vb6的多选ListBox中获取所有选择的值?

c++ - float 的小数部分最多有多少位 10 位数字

c++ - 绑定(bind).gyp : How to use "copies" section to copy files in multiple location

c# - Unity3d 错误 CS2011 : Error opening response file (incorrect temp folder)

移动鼠标光标 N 像素的 Windows 命令脚本?

c# - 将列表与列表框同步?

c++ - 我怎样才能从模板派生两次,并让子类交互?

c++ - 剪刀石头布游戏c++

windows - 在添加/删除程序窗口中更新版本号