CListCtrl--GetColumn
https://i.postimg.cc/yWCN7D6H/q1.pngLVCOLUMN Column = {0};
Column.mask = LVIF_TEXT;
TCHARch = {0};
Column.cchTextMax = 256;
Column.pszText = ch;
BOOL b6= mylist4.GetColumn(1,&Column);//获取列标题
/*
参数1:int nCol 列号
参数2:LVCOLUMN * pColumnLVCOLUMN 结构的地址
返回值:如果成功,则不为零,否则为零
*/
CString str1 = Column.pszText;
OutputDebugString(str1);
我的问题:b6返回1,说明GetColumn函数是成功的,可是str1返回值是"" ?? 从您的代码片段来看,您试图获取CListCtrl对象mylist4的第二列的标题。GetColumn()方法的返回值b6为1,表明调用是成功的。然而,您发现返回的标题字符串str1为空。
首先,请确保您已正确设置了该列的标题。在添加或修改列标题时,请检查以下代码:
LVCOLUMN lvColumn;
lvColumn.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_FMT;
lvColumn.pszText = _T("Column Title");
lvColumn.cx = 100; // Column width
lvColumn.fmt = LVCFMT_LEFT; // Column format, e.g. left-aligned
// To add a new column
int result = mylist4.InsertColumn(1, &lvColumn);
// Or to modify an existing column
mylist4.SetColumn(1, &lvColumn);
如果您已设置列标题,请检查以下可能的原因:
1. 检查列索引。请注意,CListCtrl的列索引是从0开始的。您在GetColumn()中使用的列索引是1,确保这是您要访问的列。
2. 检查列是否存在。请确保您已将该列添加到CListCtrl中。如果尝试访问不存在的列,GetColumn()可能会返回错误的结果。
3. 确保在调用GetColumn()之前已初始化CListCtrl对象。例如,如果在对话框中使用CListCtrl,请确保在OnInitDialog()中初始化了CListCtrl对象。
如果以上建议都无法解决问题,请考虑提供更多关于您的代码和项目的详细信息,以便我能更好地帮助您解决问题。 isdkz 发表于 2023-4-30 16:05
从您的代码片段来看,您试图获取CListCtrl对象mylist4的第二列的标题。GetColumn()方法的返回值b6为1,表明 ...
you are so fast 歌者文明清理员 发表于 2023-4-30 16:06
you are so fast
you are so fast too isdkz 发表于 2023-4-30 16:07
you are so fast too
it is why you have so many best answers int i= mylist4.InsertColumn(0, _T("姓名"), LVCFMT_CENTER,100,-1);//在报告模式下插入一列
i = mylist4.InsertColumn(1, _T("物理"), LVCFMT_CENTER, 70, -1);
i = mylist4.InsertColumn(2, _T("化学"), LVCFMT_CENTER, 70, -1);
我已经插入列标题 可以看图 可是str1返回值还是 "" lm68140318 发表于 2023-4-30 16:41
可是str1返回值还是 ""
根据您提供的代码片段,您已成功在报告模式下为CListCtrl插入了列标题。然而,您提到的str1返回值为空字符串"" 。在这个情况下,我们需要更多信息来判断问题所在。但是,您可以检查以下几点:
1. 确保您已正确插入项目和子项目(行数据)到CListCtrl中,如前面所示:
// 添加项目
int nItem = mylist4.InsertItem(LVIF_TEXT, 0, _T("Item Text"), 0, 0, 0, 0);
// 添加子项目
mylist4.SetItemText(nItem, 1, _T("Subitem Text"));
2. 如果您希望获取CListCtrl中的文本信息,请使用GetItemText函数。例如,如果您想获取第一个项目(行)的 "物理" 列的文本,请使用以下代码:
CString str1 = mylist4.GetItemText(0, 1); // 索引从 0 开始
这里, 0表示项目(行)索引, 1表示子项目(列)索引。返回值str1应包含您所需的文本信息。
请确保您在尝试获取项目和子项目文本之前已正确插入它们。如果问题仍然存在,请提供更多有关您的代码和环境的详细信息,以便我们可以更好地帮助您。 CString str1 = mylist4.GetItemText(0, 1); // 索引从 0 开始
这种方式不能获取 标题啊? isdkz 请加我QQ 我传你代码 估计你看一下就明白了 我的QQ389384675 我把放在百度网盘了 请大佬们下载看一下
链接:https://pan.baidu.com/s/1Gm_Nx0BT4z20vAA5g9v2MA
提取码:6666 根据你提供的代码,可能的问题是你没有正确地将获取到的列标题复制到字符串 ch 中,从而导致 Column.pszText 是一个空字符串。你可以尝试在获取列标题后使用 memcpy 函数将 Column.pszText 复制到一个 TCHAR 类型的字符串中,例如:
LVCOLUMN Column = {0};
Column.mask = LVIF_TEXT;
TCHAR ch = {0};
Column.cchTextMax = 256;
Column.pszText = ch;
BOOL b6= mylist4.GetColumn(1,&Column);//获取列标题
CString str1 = ch;
OutputDebugString(str1);
这里将 Column.pszText 赋值给了 ch,然后将 ch 转换为 CString 类型的字符串。这样,你就可以在调试器中查看获取到的列标题了。 LVCOLUMN
问题在于 ch本身就是空 LVCOLUMN没有拿到标题 ?? Col.mask = LVIF_TEXT;是错误的
改成Col.mask = LVCF_TEXT; 就对了
LVIF_TEXT;和LVCF_TEXT; 有什么区别?? LVIF_TEXT表示项的文本
LVCF_TEXT表示标题文本
对不 ??
页:
[1]