我的代码如下:
CListView::OnInitialUpdate();
CDaoRecordset* prset=GetRecordSet();
if(prset != NULL)
{
//prset->MoveFirst();
m_pImageList=new CImageList();
m_pImageList->Create(IDB_IMAGELIST,16,1,RGB(0,0,0));
GetListCtrl().SetImageList(m_pImageList,LVSIL_SMALL);
DWORD dwExStyle = LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | /*LVS_EX_SUBITEMIMAGES |*/
LVS_EX_HEADERDRAGDROP | LVS_EX_TRACKSELECT;
GetListCtrl().SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LPARAM(dwExStyle));
LV_COLUMN lvColumn;
lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvColumn.fmt = LVCFMT_LEFT;
lvColumn.cx = 120;
for(int i=0;i<prset->GetFieldCount();i++)
{
CDaoFieldInfo m_fieldinfo;
prset->GetFieldInfo(i, m_fieldinfo);//get field name
int len = m_fieldinfo.m_strName.GetLength();
CString temp = m_fieldinfo.m_strName;
TCHAR* szBuffer = new TCHAR[len + 1];
strcpy(szBuffer, temp.GetBuffer(len));
temp.ReleaseBuffer();
lvColumn.pszText = szBuffer;
GetListCtrl().InsertColumn(i, &lvColumn);//insert column
delete szBuffer; }
long count=GetRecordcount();
GetListCtrl().SendMessage(LVM_SETITEMCOUNT, (WPARAM)count, (LPARAM)LVSICF_NOINVALIDATEALL);
}
为什么我的程序只显示标题头????
请高手给我具体的做一下
请不要再说什么“只有标题头”之类的话了
CListView::OnInitialUpdate();
CDaoRecordset* prset=GetRecordSet();
if(prset != NULL)
{
//prset->MoveFirst();
m_pImageList=new CImageList();
m_pImageList->Create(IDB_IMAGELIST,16,1,RGB(0,0,0));
GetListCtrl().SetImageList(m_pImageList,LVSIL_SMALL);
DWORD dwExStyle = LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | /*LVS_EX_SUBITEMIMAGES |*/
LVS_EX_HEADERDRAGDROP | LVS_EX_TRACKSELECT;
GetListCtrl().SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LPARAM(dwExStyle));
LV_COLUMN lvColumn;
lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvColumn.fmt = LVCFMT_LEFT;
lvColumn.cx = 120;
for(int i=0;i<prset->GetFieldCount();i++)
{
CDaoFieldInfo m_fieldinfo;
prset->GetFieldInfo(i, m_fieldinfo);//get field name
int len = m_fieldinfo.m_strName.GetLength();
CString temp = m_fieldinfo.m_strName;
TCHAR* szBuffer = new TCHAR[len + 1];
strcpy(szBuffer, temp.GetBuffer(len));
temp.ReleaseBuffer();
lvColumn.pszText = szBuffer;
GetListCtrl().InsertColumn(i, &lvColumn);//insert column
delete szBuffer; }
long count=GetRecordcount();
GetListCtrl().SendMessage(LVM_SETITEMCOUNT, (WPARAM)count, (LPARAM)LVSICF_NOINVALIDATEALL);
}
为什么我的程序只显示标题头????
请高手给我具体的做一下
请不要再说什么“只有标题头”之类的话了
解决方案 »
- 关于游戏实现第三人称视角的问题?
- vc中的&符号与BYTE联合用
- 急求:如何通过win32 API函数枚举一个进程中已经打开的文件句柄????
- The value of ESP was not properly saved across a function call是什么原因
- 谁知道如何用CL命令直接编译工程文件(.dsw/.dsp)?以前看过,忘了
- 打开一个文件时,如何获取其父进程的名称?我的意思是使用驱动层的方式获取。
- “回调函数”可以写在类里面吗?
- 写注册表问题:我的代码这样写,为什么说CRegKey未定义?
- 一个简单的问题!!送分了
- vc中哪里有virtual key 的列表?
- 100分求助!
- 我在Dlg上放了一个RichEdit,用起来不错,可是为什么想换行就Dlg消失了??
InsertItem函数才是添加列表的
int i = m_ctrlList.InsertItem(-1,"第一列");
m_ctrlList.SetItemText(i, 1, "第二列");//这样分别设置几列的值
你的程序中只用InsertColumn加入了标题头.
for(int i=0;i<prset->GetFieldCount();i++)
{ ...
}
GetFiledCount是得到是表的字段名
这个循环只是在List加入了标题头。
你的程序中就没有读记录和加记录到List的代码。
int CEmployeeListView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CListView::OnCreate(lpCreateStruct) == -1)
return -1;
LONG lStyle;
CListCtrl &list=GetListCtrl();
lStyle=GetWindowLong(list.GetSafeHwnd(), GWL_STYLE);
lStyle&=~(LVS_TYPEMASK);
lStyle|=LVS_REPORT ; SetWindowLong(list.GetSafeHwnd(), GWL_STYLE, lStyle);
list.SetExtendedStyle(LVS_EX_FULLROWSELECT );
/////////////////////////////////////////////////
list.InsertColumn(0,"编号",LVCFMT_LEFT,68);
list.InsertColumn(1,"姓名",LVCFMT_LEFT,68);
list.InsertColumn(2,"上班时间",LVCFMT_LEFT,68);
list.InsertColumn(3,"考评", LVCFMT_LEFT,68);
list.InsertColumn(4,"下班时间",LVCFMT_LEFT,68);
list.InsertColumn(5,"考评", LVCFMT_LEFT,68);
return 0;
}void CEmployeeListView::AddDataIntoList()
{
CListCtrl &list=GetListCtrl();
SYSTEMTIME current;
GetLocalTime(¤t);
CString CurrTime,EmployeeName;
CurrTime.Format("%02d:%02d:%02d",current.wHour,current.wMinute,current.wSecond);
//检索员工数据库,如果和输入值相同,则添加进列表
while(!m_pSet->IsEOF())
{
CString EmployeeNum;
int zero=0;
{
m_pSet->GetFieldValue(zero,EmployeeNum);
m_pSet->GetFieldValue(1,EmployeeName);
}
int num=list.GetItemCount();
if(EmployeeNum==m_EmployeeNum)
{
m_EmployeeName=EmployeeName;
m_numArray.Add(EmployeeNum);
LVITEM lvItem;
int nItem;
lvItem.mask=LVIF_TEXT;
lvItem.iItem=num;
lvItem.iSubItem=0;
lvItem.pszText="";
nItem=list.InsertItem(&lvItem);
list.SetItemText(nItem,0,EmployeeNum);
list.SetItemText(nItem,1,EmployeeName);
if(current.wHour<=12)
{
list.SetItemText(nItem,2,CurrTime);
CString strlate=IsLate();
list.SetItemText(nItem,3,strlate);
}
else
{
list.SetItemText(nItem,4,CurrTime);
CString strlate=IsLate();
list.SetItemText(nItem,5,strlate);
}
}
m_pSet->MoveNext();
}
m_pSet->MoveFirst();
}