mfc下listbox控件显示字符串,实现字符格式输出的问题: 我知道%ns,但是显示有问题。求指导
str.Format(L"%-10s%-8s%-8s%-8s%-8s%-8s%-8s",m_pSet->m_sno,m_pSet->m_sname,m_pSet->m_s...
str.Format(L"%-10s%-8s%-8s%-8s%-8s%-8s%-8s",m_pSet->m_sno,m_pSet->m_sname,m_pSet->m_sex,m_pSet->m_college,m_pSet->m_dept,m_pSet->m_position,m_pSet->m_phone);
m_list2.AddString(str);
怎么让输出的字符串能够输出显示(不够补空格),从而达到列表美观 展开
m_list2.AddString(str);
怎么让输出的字符串能够输出显示(不够补空格),从而达到列表美观 展开
3个回答
展开全部
你用错了控件, 这样做起来会出现很多问题,就算你现在解决了,以后也会出现新的问题。
用list control吧, 用法如下:
void CFindStuInfoDlg::OnInitList() //初始化list control控件列
{
m_list.InsertColumn(0,"编号",LVCFMT_CENTER,90,-1);
m_list.InsertColumn(1,"姓名",LVCFMT_CENTER,80,-1);
m_list.InsertColumn(2,"性别",LVCFMT_CENTER,50,-1);
m_list.InsertColumn(3,"导师",LVCFMT_CENTER,60,-1);
m_list.InsertColumn(4,"入学年",LVCFMT_CENTER,60,-1);
m_list.InsertColumn(5,"出生年",LVCFMT_CENTER,60,-1);
m_list.InsertColumn(6,"专业",LVCFMT_CENTER,100,-1);
m_list.InsertColumn(7,"籍贯",LVCFMT_CENTER,120,-1);
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);//当选中某行时全选
}
void CFindStuInfoDlg::DisplayInfo() //显示list control控件信息
{
CString number,name,sex,tutor,comeYear,stuYear,specialty,place;
int index=0;
while(!m_rec->adoEOF) //从数据库中读取数据显示到控件上
{
number=(char*)(_bstr_t)m_rec->GetCollect("stuID");
m_list.InsertItem(index,number);
name=(char*)(_bstr_t)m_rec->GetCollect("stuName");
m_list.SetItemText(index,1,name);
sex=(char*)(_bstr_t)m_rec->GetCollect("stuSex");
m_list.SetItemText(index,2,sex);
tutor=(char*)(_bstr_t)m_rec->GetCollect("teaID");
m_list.SetItemText(index,3,tutor);
comeYear=(char*)(_bstr_t)m_rec->GetCollect("comeYear");
m_list.SetItemText(index,4,comeYear);
stuYear=(char*)(_bstr_t)m_rec->GetCollect("stuYear");
m_list.SetItemText(index,5,stuYear);
specialty=(char*)(_bstr_t)m_rec->GetCollect("specialty");
m_list.SetItemText(index,6,specialty);
place=(char*)(_bstr_t)m_rec->GetCollect("comeFrom");
m_list.SetItemText(index,7,place);
m_rec->MoveNext(); //下一记录
index++;
}
m_nCount=m_list.GetItemCount(); //获取控件上的记录数并显示
UpdateData(false);
}
用list control吧, 用法如下:
void CFindStuInfoDlg::OnInitList() //初始化list control控件列
{
m_list.InsertColumn(0,"编号",LVCFMT_CENTER,90,-1);
m_list.InsertColumn(1,"姓名",LVCFMT_CENTER,80,-1);
m_list.InsertColumn(2,"性别",LVCFMT_CENTER,50,-1);
m_list.InsertColumn(3,"导师",LVCFMT_CENTER,60,-1);
m_list.InsertColumn(4,"入学年",LVCFMT_CENTER,60,-1);
m_list.InsertColumn(5,"出生年",LVCFMT_CENTER,60,-1);
m_list.InsertColumn(6,"专业",LVCFMT_CENTER,100,-1);
m_list.InsertColumn(7,"籍贯",LVCFMT_CENTER,120,-1);
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);//当选中某行时全选
}
void CFindStuInfoDlg::DisplayInfo() //显示list control控件信息
{
CString number,name,sex,tutor,comeYear,stuYear,specialty,place;
int index=0;
while(!m_rec->adoEOF) //从数据库中读取数据显示到控件上
{
number=(char*)(_bstr_t)m_rec->GetCollect("stuID");
m_list.InsertItem(index,number);
name=(char*)(_bstr_t)m_rec->GetCollect("stuName");
m_list.SetItemText(index,1,name);
sex=(char*)(_bstr_t)m_rec->GetCollect("stuSex");
m_list.SetItemText(index,2,sex);
tutor=(char*)(_bstr_t)m_rec->GetCollect("teaID");
m_list.SetItemText(index,3,tutor);
comeYear=(char*)(_bstr_t)m_rec->GetCollect("comeYear");
m_list.SetItemText(index,4,comeYear);
stuYear=(char*)(_bstr_t)m_rec->GetCollect("stuYear");
m_list.SetItemText(index,5,stuYear);
specialty=(char*)(_bstr_t)m_rec->GetCollect("specialty");
m_list.SetItemText(index,6,specialty);
place=(char*)(_bstr_t)m_rec->GetCollect("comeFrom");
m_list.SetItemText(index,7,place);
m_rec->MoveNext(); //下一记录
index++;
}
m_nCount=m_list.GetItemCount(); //获取控件上的记录数并显示
UpdateData(false);
}
追问
本来想采用这控件的,发现没弄清楚,显示老有问题,自己学的比较菜。不过你的回答很有启发,谢谢
展开全部
在Format之前,你把字符串长度求出来,例如名字那一列,你设定名字为8个字节,当第一排得到的是6个字节,则补2个空格,第三排得到的名字为4个字节,补上4个空格,这样就可以达到对齐的效果了,不知道理解了没,希望对你又帮助,可以给我发消息探讨
追问
理解其一,%ns不是本身就可以补空格么?那应该能达到效果,可是出现这种情况,实在不解。具体如何改进呢?中文字符算两个吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
listbox不是表格控件,还是用list control控件吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询