关于如何实现类似XP下的列表显示样式? 不知道大家有没有注意过,在XP下,用资源管理器查看一个目录时候,如果在列表中点击“按组排列”,列表就会显示为按照名称分成一个一个区域的样子,我觉得非常直观,可是我花了很大功夫,也没有找到实现的方法,不知道有那位兄弟实现过,说一说吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 LVGROUP lvGroup; ZeroMemory(&lvGroup, sizeof(LVGROUP)); lvGroup.cbSize = sizeof(LVGROUP); lvGroup.mask = LVGF_HEADER | LVGF_GROUPID; LVITEM lvItem; ZeroMemory(&lvItem, sizeof(LVITEM)); lvItem.mask = LVIF_TEXT | LVIF_GROUPID | LVIF_PARAM; while (!pRst->get_EOF()) { COleVariant covVar = pRst->get_Collect(COleVariant(_T("fm_Name"))); CString strHeader = covVar.bstrVal; strHeader += " ("; covVar = pRst->get_Collect(COleVariant(_T("fm_Role"))); strHeader += covVar.bstrVal; strHeader += ")"; covVar = pRst->get_Collect(COleVariant(_T("fm_ID"))); strSQL.Format(_T("SELECT SUM([ba_Balance]) FROM [BankAccount] WHERE [fm_ID]=%d"), covVar.lVal); CADORecordset *pRstAccount = pDoc->GetRecordset(strSQL); if (pRstAccount) { COleCurrency cocBalance( pRstAccount->get_Collect(COleVariant((long)0))); delete pRstAccount; pRstAccount = NULL; strHeader += " - 总余额:"; strHeader += cocBalance.Format(); strHeader += "元"; } lvGroup.pszHeader = strHeader.GetBuffer(); int nGroup = ctlList.InsertGroup(lvGroup.iGroupId, &lvGroup); lvItem.iGroupId = nGroup; strSQL.Format(_T("SELECT [ba_ID], [ba_Name], [ba_AccountNo], [ba_Balance], [ba_Fixed] FROM [BankAccount] WHERE [fm_ID]=%d"), covVar.lVal); pRstAccount = pDoc->GetRecordset(strSQL); if (pRstAccount) { while (!pRstAccount->get_EOF()) { covVar = pRstAccount->get_Collect(COleVariant(_T("ba_Name"))); lvItem.pszText = covVar.bstrVal; covVar = pRstAccount->get_Collect(COleVariant(_T("ba_ID"))); lvItem.lParam =covVar.lVal; int nItem = ctlList.InsertItem(&lvItem); lvItem.iItem++; covVar = pRstAccount->get_Collect(COleVariant(_T("ba_AccountNo"))); ctlList.SetItemText(nItem, 1, covVar.bstrVal); covVar = pRstAccount->get_Collect(COleVariant(_T("ba_Balance"))); COleCurrency cocBalance(covVar); ctlList.SetItemText(nItem, 2, cocBalance.Format(0, MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_PRC))); covVar = pRstAccount->get_Collect(COleVariant(_T("ba_Fixed"))); if (covVar.boolVal) ctlList.SetItemText(nItem, 3, _T("定期")); else ctlList.SetItemText(nItem, 3, _T("活期")); pRstAccount->MoveNext(); } delete pRstAccount; pRstAccount = NULL; } lvGroup.iGroupId++; pRst->MoveNext(); }这是我代码中的,把数据库操作部分去掉看。 MFC连连看游戏问题 急问显示bmp图像的一些应用问题 不是C++高手请别进来。 vc中如何读取ini文件,或者xml里面的元素? 只是为了方便修改程序中控件的位置、颜色等值。 请问各位大侠,连接另外一台机器读其共享的文件。在连接的时候不想出现用户和密码提示应该如何做 想做一个如photoshop的工具条,怎么办 键盘上Back Space键的消息响应函数怎么写?? 有关WIN2K窗口切换的提问: 如何编译、配置、调用 DCOM?在 ATL 中 50分新人小问题求助! 请教,如何截获OnPaint()的消息??? 对话框界面难题
ZeroMemory(&lvGroup, sizeof(LVGROUP));
lvGroup.cbSize = sizeof(LVGROUP);
lvGroup.mask = LVGF_HEADER | LVGF_GROUPID;
LVITEM lvItem;
ZeroMemory(&lvItem, sizeof(LVITEM));
lvItem.mask = LVIF_TEXT | LVIF_GROUPID | LVIF_PARAM; while (!pRst->get_EOF())
{
COleVariant covVar = pRst->get_Collect(COleVariant(_T("fm_Name")));
CString strHeader = covVar.bstrVal;
strHeader += " (";
covVar = pRst->get_Collect(COleVariant(_T("fm_Role")));
strHeader += covVar.bstrVal;
strHeader += ")";
covVar = pRst->get_Collect(COleVariant(_T("fm_ID")));
strSQL.Format(_T("SELECT SUM([ba_Balance]) FROM [BankAccount] WHERE [fm_ID]=%d"), covVar.lVal);
CADORecordset *pRstAccount = pDoc->GetRecordset(strSQL);
if (pRstAccount)
{
COleCurrency cocBalance( pRstAccount->get_Collect(COleVariant((long)0)));
delete pRstAccount;
pRstAccount = NULL;
strHeader += " - 总余额:";
strHeader += cocBalance.Format();
strHeader += "元";
}
lvGroup.pszHeader = strHeader.GetBuffer();
int nGroup = ctlList.InsertGroup(lvGroup.iGroupId, &lvGroup);
lvItem.iGroupId = nGroup; strSQL.Format(_T("SELECT [ba_ID], [ba_Name], [ba_AccountNo], [ba_Balance], [ba_Fixed] FROM [BankAccount] WHERE [fm_ID]=%d"), covVar.lVal);
pRstAccount = pDoc->GetRecordset(strSQL);
if (pRstAccount)
{
while (!pRstAccount->get_EOF())
{
covVar = pRstAccount->get_Collect(COleVariant(_T("ba_Name")));
lvItem.pszText = covVar.bstrVal;
covVar = pRstAccount->get_Collect(COleVariant(_T("ba_ID")));
lvItem.lParam =covVar.lVal;
int nItem = ctlList.InsertItem(&lvItem);
lvItem.iItem++;
covVar = pRstAccount->get_Collect(COleVariant(_T("ba_AccountNo")));
ctlList.SetItemText(nItem, 1, covVar.bstrVal);
covVar = pRstAccount->get_Collect(COleVariant(_T("ba_Balance")));
COleCurrency cocBalance(covVar);
ctlList.SetItemText(nItem, 2, cocBalance.Format(0, MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_PRC)));
covVar = pRstAccount->get_Collect(COleVariant(_T("ba_Fixed")));
if (covVar.boolVal)
ctlList.SetItemText(nItem, 3, _T("定期"));
else
ctlList.SetItemText(nItem, 3, _T("活期"));
pRstAccount->MoveNext();
}
delete pRstAccount;
pRstAccount = NULL;
}
lvGroup.iGroupId++;
pRst->MoveNext();
}
这是我代码中的,把数据库操作部分去掉看。