关于动态设置文本.

rotApple 2008-03-28 06:09:45

我要在运行时更改CListCtrl的HEAD的文本.
我的代码如下:
加入列:
m_logList.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
m_logList.InsertColumn(0,_T("#"),LVCFMT_CENTER,25); //序号
m_logList.InsertColumn(1,0,LVCFMT_LEFT,120); //时间
m_logList.InsertColumn(2,0,LVCFMT_LEFT,292); //URL

然后按按钮更改:
TCHAR lpBuffer[50];
wcscpy(lpBuffer,m_pLanguage->GetString(IDS_LOGLIST_COLUMN1));
LVCOLUMN column;
column.mask = LVCF_TEXT;
column.pszText = lpBuffer;
column.cchTextMax = sizeof(lpBuffer);
m_logList.SetColumn(1,&column);
或者直接用m_logList.GetHeaderCtrl()->SetDlgItemText(....);
这两个怎么都不行啊, 不报错, 编译通过, 但是HEAD头上还是没有字啊? 怎么回事?
...全文
122 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
rotApple 2008-04-02
  • 打赏
  • 举报
回复
顶.
rotApple 2008-03-31
  • 打赏
  • 举报
回复
谢谢楼上的.
按你的写界面还是没字. 我刚才写的和你的应该是对了.

另外我不知道问题是不是在这里:

首先, 我把加入列的代码放到INITDIALOG里面了.
m_logList.InsertColumn(0,_T("#"),LVCFMT_CENTER,25); //序号
m_logList.InsertColumn(1,0,LVCFMT_LEFT,120); //时间
m_logList.InsertColumn(2,0,LVCFMT_LEFT,292); //地址

initDialogLanguage();

然后才在initDialogLanguage()里面切换为默认语言的.

会不会是insertColumn第二个参数的问题? 我直接写的0.
AndyXia 2008-03-31
  • 打赏
  • 举报
回复
我使用如下代码测试是对的,不知楼主的问题是否还有?
HDITEM hdi;
const unsigned int size = 50;
TCHAR lpBuffer[size] = {0};
hdi.cchTextMax = size;
hdi.mask = HDI_TEXT;
hdi.pszText = lpBuffer;
CString strTest = _T("test 1");
//wcscpy_s(hdi.pszText,size, strTest);
wcscpy(hdi.pszText, strTest);
m_lst1.GetHeaderCtrl()->SetItem(1, &hdi);
m_lst1.GetHeaderCtrl()->GetItem(1,&hdi);
MessageBox(hdi.pszText);
rotApple 2008-03-31
  • 打赏
  • 举报
回复
回楼上的:

改成
HDITEM hdi;
const unsigned int size = 50;
TCHAR lpBuffer[size] = {0};
hdi.cchTextMax = size;
hdi.mask = HDI_TEXT;
hdi.pszText = lpBuffer;
wcscpy_s(hdi.pszText,size,m_pLanguage->GetString(IDS_LOGLIST_COLUMN1));
header->SetItem(1,&hdi);


header->GetItem(1,&hdi);
MessageBox(hdi.pszText);

弹出来有字, 但界面上就是没字....... 疯了.
shakaqrj 2008-03-31
  • 打赏
  • 举报
回复
没有字?
messagebox(hdi.pszText)看看有没有
rotApple 2008-03-31
  • 打赏
  • 举报
回复
刚刚这么写了:
HDITEM hdi;
const unsigned int size = 50;
TCHAR lpBuffer[size];
hdi.cchTextMax = size;
hdi.mask = HDI_TEXT;
hdi.pszText = lpBuffer;
wcscpy_s(hdi.pszText,size,m_pLanguage->GetString(IDS_LOGLIST_COLUMN1));
m_logList.GetHeaderCtrl()->SetItem(1,&hdi);

仍然没有字, 晕了. 怎么回事.
rotApple 2008-03-31
  • 打赏
  • 举报
回复
回一楼:
HDITEM, SetItem
和SetColumn有什么区别吗?
我写的:
SetColumn同我帖子里面写的, SetItem:
HDITEM hdi;
hdi.cchTextMax = sizeof(lpBuffer); //lpbuffer如帖子里面的
hdi.mask = LVCF_TEXT;
wcscpy(lpBuffer,m_pLanguage->GetString(IDS_LOGLIST_COLUMN1));
hdi.pszText = lpBuffer;
m_logList.GetHeaderCtrl()->SetItem(1,&hdi);
一样不行!


回二楼,回三楼:
如果是我没表达清楚那是我的错, 如果是你没看清楚还是没看懂那就不要回帖子了, 谢谢.
rotApple 2008-03-31
  • 打赏
  • 举报
回复
没人啊?
Eleven 2008-03-28
  • 打赏
  • 举报
回复
m_list.InsertItem(..);
m_list.SetItemText(..);
你的程序中掉了m_list.InsertItem()语句
用户 昵称 2008-03-28
  • 打赏
  • 举报
回复
				m_list1.InsertItem( m_list1.GetItemCount(), "" );
sprintf( buf, "%d", xxx + 1 );
m_list1.SetItemText( m_list1.GetItemCount() - 1, 1, buf );
sprintf( buf, "%d", g____searchresult[ kkk ] );
m_list1.SetItemText( m_list1.GetItemCount() - 1, 2, buf );
cnzdgs 2008-03-28
  • 打赏
  • 举报
回复
SetColumn要指定iSubItem。
用CHeaderCtrl要调SetItem函数。

15,979

社区成员

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

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