求教:listctrl列显示反了????

guangong 2006-08-02 12:21:19
所有的列,有时候显示顺序会正好与我插入的顺序相反
如 列1 列2 列3
显示为:列3 列2 列1
相应的内容等都显示反了

为什么????
百思不得其解啊
请指教
...全文
154 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cleverwyq 2006-08-02
  • 打赏
  • 举报
回复
int InsertColumn(
int nCol,
LPCTSTR lpszColumnHeading,
int nFormat = LVCFMT_LEFT,
int nWidth = -1,
int nSubItem = -1
);

nCol从0开始,怎么会错呢
是不是你一直都把他设为0啊
折腾_苏州 2006-08-02
  • 打赏
  • 举报
回复
正常的InsertColumn,之后,先InsertItem,再SetItemText应该不会有问题的?
hhyytt 2006-08-02
  • 打赏
  • 举报
回复
你反向插入试试.
DentistryDoctor 2006-08-02
  • 打赏
  • 举报
回复
你插入的顺序是不是有问题?
syy64 2006-08-02
  • 打赏
  • 举报
回复
CListCtrl::SetColumnOrderArray
BOOL SetColumnOrderArray( int iCount, LPINT piArray );

Return Value

Nonzero if successful; otherwise zero.

Parameters

piArray

A pointer to a buffer containing the index values of the columns in the list view control (from left to right). The buffer must be large enough to contain the total number of columns in the list view control.

iCount

Number of columns in the list view control.

Remarks

This member function implements the behavior of the Win32 macro,ListView_SetColumnOrderArray, as described in the Platform SDK.

CListCtrl Overview | Class Members | Hierarchy Chart

See Also CListCtrl::GetColumnOrderArray
guangong 2006-08-02
  • 打赏
  • 举报
回复
也没有选择sort属性
排序函数:
void CListCtrlEx::SortColumn(int nSortedCol)
{
if (!m_bSort)
return;

if(nSortedCol == m_nSortedCol)
m_bSortAscending = !m_bSortAscending;
else
m_bSortAscending = TRUE;

m_nSortedCol = nSortedCol;
int NumItems = GetItemCount();

//将比较条件打包保存到对应的缓冲地址
for (int i = 0; i < NumItems; i++)
{
DWORD dwData = GetItemData(i); // save current data to restore it later
CString strText = GetItemText(i, m_nSortedCol);

SetItemData(i, (DWORD)new ListData(dwData, strText));
}
m_headerctrl.SetSortArrow( m_nSortedCol, m_bSortAscending );

//开始比较
//回调函数自动传递比较对象的缓冲地址(LPARAM lParam1, LPARAM lParam2)以及SortItems传递的参数(第二个)
SortItems(Compare, m_bSortAscending);
//比较结束
//比较过程中自动变换位置和数据

//恢复原始的数据
for(i=0; i<NumItems; i++)
{
ListData* pData = (ListData*)GetItemData(i);
SetItemData(i, pData->dwOldData);
delete pData;
}
}
guangong 2006-08-02
  • 打赏
  • 举报
回复
插入时正确的,偶尔会出现反了的情况
guangong 2006-08-02
  • 打赏
  • 举报
回复
sort属性应该只对本列有效吧
列还可以进行调整吗?
jinhengxyz 2006-08-02
  • 打赏
  • 举报
回复
sort 取消试试
snowbirdfly 2006-08-02
  • 打赏
  • 举报
回复
楼上这么多方法提示~~
你一定可以解决这个问题的~~
俺不用多说~~~
思危 2006-08-02
  • 打赏
  • 举报
回复
是不是设置了 Sort 属性,设了的话控件会对你插入的item进行排序,把这个设为none
handsomerun 2006-08-02
  • 打赏
  • 举报
回复
你怎么插的,给你一段代码参考

TCHAR rgtsz[2][10] = {_T("列头1"), _T("列头2")};

LV_COLUMN lvcolumn;
CRect rect;
m_listctrl.GetWindowRect(&rect);
for(int i=0;i<2;i++)
{
 lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT
         | LVCF_WIDTH | LVCF_ORDER;
 lvcolumn.fmt = LVCFMT_LEFT;
 lvcolumn.pszText = rgtsz[i];
  lvcolumn.iSubItem = i;
 lvcolumn.iOrder = i;
  if(i==0)
 {
   lvcolumn.cx = rect.Width()*3/5 ;
  }
  else
  lvcolumn.cx = rect.Width()*2/5;
    

   m_listctrl.InsertColumn(i, &lvcolumn);
 }

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧