如下为我的一段代码:
POSITION pos;
FileInfoStruct fileinfo;
int tempp = 0;
//取得查询条数
g_fileNum = g_filelist->GetCount(); if ( g_fileNum > 0) //有查询结果
{
int i;
for( i= 0,pos = g_filelist->GetHeadPosition(); pos != NULL; i++ )
{
tempp = i;
fileinfo = g_filelist->GetNext(pos);
//文件名
m_srchrlt.InsertItem(i,fileinfo.m_filename);
//路径
m_srchrlt.SetItemText(i,1,fileinfo.m_filepath);
//压缩格式
m_srchrlt.SetItemText(i,2,fileinfo.m_ziptype);
//作者
m_srchrlt.SetItemText(i,3,fileinfo.m_author);
//文件大小
m_srchrlt.SetItemText(i,4,fileinfo.m_filesize);
//持续时间
m_srchrlt.SetItemText(i,5,fileinfo.m_filelong);
//发布时间
m_srchrlt.SetItemText(i,6,fileinfo.m_publictime);
//文件编码
m_srchrlt.SetItemText(i,7,fileinfo.m_filecode);
//其他信息
m_srchrlt.SetItemText(i,8,fileinfo.m_otherinfo);
//图片信息
m_srchrlt.SetItemText(i,9,fileinfo.m_imagepath);
}
g_filelist->RemoveAll();
}
else
{
AfxMessageBox("没有相关文件!");
this->OnOK();
}
单步跟到发现存放数据的g_filelist中的数据完全正常,但就是经过上面的操作后,在界面上显示出来时好多数据显示不完全(比如路径等字段),或者有错位现象(本来是上一个文件的路径显示到下一个文件).调试了半天,不得其原因.
想了一下我上面的代码是放在"搜索结果"对话框的OninitDialog()事件中,而这个对话框是在另外一个线程中生成的,不知道这样是否会有问题呢??
POSITION pos;
FileInfoStruct fileinfo;
int tempp = 0;
//取得查询条数
g_fileNum = g_filelist->GetCount(); if ( g_fileNum > 0) //有查询结果
{
int i;
for( i= 0,pos = g_filelist->GetHeadPosition(); pos != NULL; i++ )
{
tempp = i;
fileinfo = g_filelist->GetNext(pos);
//文件名
m_srchrlt.InsertItem(i,fileinfo.m_filename);
//路径
m_srchrlt.SetItemText(i,1,fileinfo.m_filepath);
//压缩格式
m_srchrlt.SetItemText(i,2,fileinfo.m_ziptype);
//作者
m_srchrlt.SetItemText(i,3,fileinfo.m_author);
//文件大小
m_srchrlt.SetItemText(i,4,fileinfo.m_filesize);
//持续时间
m_srchrlt.SetItemText(i,5,fileinfo.m_filelong);
//发布时间
m_srchrlt.SetItemText(i,6,fileinfo.m_publictime);
//文件编码
m_srchrlt.SetItemText(i,7,fileinfo.m_filecode);
//其他信息
m_srchrlt.SetItemText(i,8,fileinfo.m_otherinfo);
//图片信息
m_srchrlt.SetItemText(i,9,fileinfo.m_imagepath);
}
g_filelist->RemoveAll();
}
else
{
AfxMessageBox("没有相关文件!");
this->OnOK();
}
单步跟到发现存放数据的g_filelist中的数据完全正常,但就是经过上面的操作后,在界面上显示出来时好多数据显示不完全(比如路径等字段),或者有错位现象(本来是上一个文件的路径显示到下一个文件).调试了半天,不得其原因.
想了一下我上面的代码是放在"搜索结果"对话框的OninitDialog()事件中,而这个对话框是在另外一个线程中生成的,不知道这样是否会有问题呢??
解决方案 »
- keybd_event发送组合键消息会产生多余按键消息,是函数的bug?
- static函数如何调用非static函数?
- 《100分》如何枚举[ENUM]/遍历带资源[RESOURCE]文件[EXE/DLL]中的字符串表[STRING-TABLE]?
- 在windows2k下,怎样让dns1.bat运行十分钟之后运行dns2.bat?
- 升星了,无条件散分,给前20人
- 用API通信函数做串口,怎么发送、接受十六进制(回码有乱码)?
- 一个静态变量的问题
- 在用MFC编写ActiveX控件中,BSTR是不是代表字符串类型?而整型怎么找不到int型?
- RichEditCtrl中段落对齐方式的问题
- 这一段时间要写一个Dos程序,谁能给我一个键盘中断的程序?一定给分!
- VC++调用Oracle存储过程,查询返回游标类型的问题
- 关于多线程对同一个SOCKET操作的问题
这个会不会有问题?
typedef struct _FileInfoStruct
{
CString m_filename; //文件名字
CString m_filepath; //文件路径
CString m_ziptype; //压缩格式
CString m_author; //作者
CString m_filesize; //文件大小
CString m_filelong; //文件长度(分钟)
CString m_publictime; //文件发行时间
CString m_filecode; //文件码率
CString m_imagepath; //相关图片信息目录
CString m_otherinfo; //文件其他信息
}FileInfoStruct;typedef CList<FileInfoStruct,FileInfoStruct&> mylist; //存放文件信息的列表
mylist* g_filelist;
WecanHuang(闷头赚分ing):
哪应该是没有问题的,我换成下面的写法:
for( int i= 0; i < g_filelist->GetCount(); i++ ),还是老样子.
LV_ITEM lvitem;
lvitem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
lvitem.state = 0;
lvitem.stateMask = 0;
lvitem.iItem = i;
lvitem.iSubItem = 0;
lvitem.pszText =fileinfo.m_filename;
m_ListCtrl.InsertItem(&lvitem);
试试
(LVM_GETEXTENDEDLISTVIEWSTYLE);
lStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES |
LVS_EX_HEADERDRAGDROP;
m_ListCtrl.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0,
(LPARAM)lStyle);
LV_COLUMN lvc;
// Add "About..." menu item to system menu.
lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH /*| LVCF_FMT*/;
lvc.iSubItem = 0;
lvc.pszText = (char *)"序号";
lvc.cx = 60;
m_ListCtrl.InsertColumn(0,&lvc);
lvc.iSubItem = 1;
lvc.pszText = (char *)"期号";
lvc.cx = 90;
m_ListCtrl.InsertColumn(1,&lvc);
lvc.iSubItem = 2;
lvc.pszText = (char *)"中奖号码";
lvc.cx = 60;
m_ListCtrl.InsertColumn(2,&lvc);
//
m_ListCtrl.DeleteAllItems();
LV_COLUMN column;
column.pszText="名称";
column.mask=LVCF_TEXT;
m_srchrlt.InsertColumn(0,&column);
m_srchrlt.SetColumnWidth(0,100); column.pszText="文件路径";
column.mask=LVCF_TEXT;
m_srchrlt.InsertColumn(1,&column);
m_srchrlt.SetColumnWidth(1,100);
column.pszText="压缩格式";
column.mask=LVCF_TEXT;
m_srchrlt.InsertColumn(2,&column);
m_srchrlt.SetColumnWidth(2,100); column.pszText="作者";
column.mask=LVCF_TEXT;
m_srchrlt.InsertColumn(3,&column);
m_srchrlt.SetColumnWidth(3,100); column.pszText="文件大小(KB)";
column.mask=LVCF_TEXT;
m_srchrlt.InsertColumn(4,&column);
m_srchrlt.SetColumnWidth(4,100); column.pszText="时长(分钟:秒)";
column.mask=LVCF_TEXT;
m_srchrlt.InsertColumn(5,&column);
m_srchrlt.SetColumnWidth(5,100); column.pszText="发行时间";
column.mask=LVCF_TEXT;
m_srchrlt.InsertColumn(6,&column);
m_srchrlt.SetColumnWidth(6,100); column.pszText="码率";
column.mask=LVCF_TEXT;
m_srchrlt.InsertColumn(7,&column);
m_srchrlt.SetColumnWidth(7,100); column.pszText="备注信息";
column.mask=LVCF_TEXT;
m_srchrlt.InsertColumn(8,&column);
m_srchrlt.SetColumnWidth(8,100);
column.pszText="图片信息";
column.mask=LVCF_TEXT;
m_srchrlt.InsertColumn(9,&column);
m_srchrlt.SetColumnWidth(9,0);
m_list.SetItemText(nRow, 1, strtemp);和我直接用i来代替nRow效果应该是一样的啊.能不那能再解释一下.