在用vc mfc 做一个项目的时候,要展示数据用啥界面,觉得用Datagrid的话好像~ 有点难看~~
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在用vc mfc 做一个项目的时候,要展示数据用啥界面,觉得用Datagrid的话好像~ 有点难看~~相关的知识,希望对你有一定的参考价值。
高手给点意见
可以用ListCtrl,界面比DataGrid好看多了,可以自定义列表的样式和表格颜色、文本颜色以下代码仅供参考:
BOOL CDlgYgInfo::OnInitDialog()
CDialog::OnInitDialog();
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_GRIDLINES|LVS_EX_FLATSB);//设置扩展样式
m_list.SetTextColor(RGB(200, 0, 0));//设置文本颜色
//m_list.SetBkColor(RGB(0, 200, 200));//设置表格的颜色
m_list.InsertColumn(0, "员工编号");//为列头添加列名
m_list.InsertColumn(1, "姓名");
m_list.InsertColumn(2, "性别");
m_list.InsertColumn(3, "年龄");
m_list.InsertColumn(4, "个人手机");
m_list.InsertColumn(5, "联系电话");
m_list.InsertColumn(6, "联系地址");
m_list.InsertColumn(7, "工作职位");
m_list.InsertColumn(8, "用户级别");
m_list.InsertColumn(9, "备注");
for(int j = 0; j < 10; j++)
m_list.SetColumnWidth(j, LVSCW_AUTOSIZE);//设置列宽
m_list.SetColumnWidth(j, LVSCW_AUTOSIZE_USEHEADER);
CString sql = "select * from yginfo order by num asc";//查询数据
RefrushList(sql);//刷新ListCtrl
}
void CDlgTest::RefrushList(CString sql)
m_list.DeleteAllItems();
DataBase db;
db.ConnectDB();
db.ExecuteQuery(sql);
CString value = "";
int i = 0;
while(!db.m_pRecordset->adoEOF)
value = (char*)(_bstr_t)db.m_pRecordset->GetCollect("num");
m_list.InsertItem(i, value);//InsertItem(0, value);不能实现插入多行
value = (char*)(_bstr_t)db.m_pRecordset->GetCollect("name");
m_list.SetItemText(i, 1, value);
//SetItemText(i, 0 ,value);第一参数必须是变量i,第二参数不是从0开始
value = (char*)(_bstr_t)db.m_pRecordset->GetCollect("sex");
m_list.SetItemText(i, 2, value);
value = (char*)(_bstr_t)db.m_pRecordset->GetCollect("age");
m_list.SetItemText(i, 3, value);
value = (char*)(_bstr_t)db.m_pRecordset->GetCollect("mobile");
m_list.SetItemText(i, 4, value);
value = (char*)(_bstr_t)db.m_pRecordset->GetCollect("phone");
m_list.SetItemText(i, 5, value);
value = (char*)(_bstr_t)db.m_pRecordset->GetCollect("address");
m_list.SetItemText(i, 6, value);
value = (char*)(_bstr_t)db.m_pRecordset->GetCollect("zhiwei");
m_list.SetItemText(i, 7, value);
value = (char*)(_bstr_t)db.m_pRecordset->GetCollect("jibie");
m_list.SetItemText(i, 8, value);
value = (char*)(_bstr_t)db.m_pRecordset->GetCollect("beizhu");
m_list.SetItemText(i, 9, value);
db.m_pRecordset->MoveNext();
i++;
for(int j = 0; j < 10; j++)
m_list.SetColumnWidth(j, LVSCW_AUTOSIZE);
m_list.SetColumnWidth(j, LVSCW_AUTOSIZE_USEHEADER);
参考技术A 你是用三层结构还是两层结构,如果是两层结构直接用ado就可以通过网络访问数据库
如果是要三层结构的客户端,应用服务器,数据库
客户端,和应用服务器自己编程实现,用套接字或COM组件编程,看具体要求定
另外,虚机团上产品团购,超级便宜 参考技术B 这个要根据你的要求来了啊
可以用其它库试试
或者使用其它控件,然后修改样式追问
具体可以哪些控件? 我做的是图书管理系统
追答用listbox算了。。。。
改一下样式。。。
在 VC++ MFC 中创建另一个鼠标光标
【中文标题】在 VC++ MFC 中创建另一个鼠标光标【英文标题】:To create another mouse cursor in VC++ MFC 【发布时间】:2012-11-28 10:54:59 【问题描述】:我遇到了一个问题。基本上在我的项目中有两个窗口。当满足一定条件时,我需要同时对两个窗口进行操作。最初,我曾经这样做过首先在第一个窗口上执行操作,然后在第二个窗口上执行操作,结果是这两个操作之间存在延迟,因为它必须同时发生相同的移动而没有延迟..
所以我想创建另一个鼠标光标..我的意思是一个原始鼠标光标和另一个以编程方式创建的光标,所以当条件满足时,原始光标可以在第一个窗口上操作并且以编程方式创建的可以在第二个窗口上操作..这两个操作可以同时发生.. 请任何人指导/建议我是否可以创建另一个光标?如果是,请建议我...如果不是,请告诉我如何完成此任务..
谢谢大家..
【问题讨论】:
【参考方案1】:不,你不能有两个光标。
如果您只是移动窗口,请尝试DeferWindowPos;否则你可以尝试使用SetRedraw。那么至少他们会看起来好像他们在同时移动/改变......
【讨论】:
好的...谢谢 liam.. 感谢您的建议 :)以上是关于在用vc mfc 做一个项目的时候,要展示数据用啥界面,觉得用Datagrid的话好像~ 有点难看~~的主要内容,如果未能解决你的问题,请参考以下文章
VC MFC下 定义 CString str 怎样获取str的第二个和第三字符(用啥函数)?