MFC树形控件加载Access数据库数据
研究了好几天,今天终于弄好了,下面是代码
[dlg.cpp]
在初始函数OnInitDialog()中加
HICON hIcon[3];
HTREEITEM hRoot;
//加载三个图标
hIcon[0] = theApp.LoadIconW(IDI_ICON1);
hIcon[1] = theApp.LoadIconW(IDI_ICON3);
hIcon[2] = theApp.LoadIconW(IDI_ICON2);
m_imageList.Create(16, 16, ILC_COLOR16, 3, 3);
for (int i=0;i<3;i++)
{
m_imageList.Add(hIcon[i]);
}
//绑定树控件与ImaageList
m_webTree.SetImageList(&m_imageList, TVSIL_NORMAL);
//初始化Ado环境
AfxOleInit();
hRoot = NULL;
OpenConn(); //打开数据函数
LoadTreeCtrlData(hRoot,_T("0")); //递归加数据到树控件中
CloseConn(); //关闭数据库
//下面就是递归函数
void CMFCApp_CTreeCtrl_testDlg::LoadTreeCtrlData(HTREEITEM hItem,CString mid)
{
HTREEITEM temItem;
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
try
{
CString sql;
sql.Format(_T("select * from mTable where pID='%s'"), mid);
m_pRecordset->Open((_variant_t)sql, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
//AfxMessageBox(_T("123"));
}
catch (_com_error e)
{
CString str;
str.Format(_T("连接数据表失败:%s"), e.ErrorMessage());
AfxMessageBox(str);
return;
}
_variant_t var;
CString strTmp;
while (!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect(_T("mName"));
strTmp = (LPCTSTR)_bstr_t(var);
temItem=m_webTree.InsertItem(strTmp, 1, 1, hItem, TVI_LAST);
//把自己的mID存入到节点中,
//节点存放的是指针地址的数据,查了好几天百度才弄清.
var = m_pRecordset->GetCollect(_T("mID"));
strTmp = (LPCTSTR)_bstr_t(var);
CString* pStr = new CString;
*pStr = strTmp;
m_webTree.SetItemData(temItem,(DWORD)pStr);
//递归加载子节点
LoadTreeCtrlData(temItem,strTmp);
m_pRecordset->MoveNext();
}
}
//取出数据
CString strText;
HTREEITEM hItem = m_webTree.GetSelectedItem();
//strText = m_webTree.GetItemText(hItem);
CString str = (CString)m_webTree.GetItemData(hItem);
if(str!=NULL)
strText.Format(_T("%s"), str->GetString());
SetDlgItemText(IDC_ITEM_SET_EDIT,strText);
尽管磕磕绊绊的好几天,今天总算弄出效果了.


MFC树形控件加载Access数据库数据的更多相关文章
- MFC Picture控件加载图片
CStatic *pPic = (CStatic*)GetDlgItem(IDC_PICTURE); CBitmap bitmap; bitmap.LoadBitmapW(IDB_BITMAP2); ...
- paip.gui控件tabs控件加载内容的原理以及easyui最佳实现
paip.gui控件tabs控件加载内容的原理以及easyui最佳实现 //////////////tabs控件的加载 同form窗体一样,俩个方式 两个方式:一个是url,简单的文本可以使用这个,不 ...
- C#拖曳控件加载,bll报错问题
C#拖曳控件加载,bll报错问题,加载时实例如化bll时加上一个判断 if (!(GetService(typeof(IDesignerHost)) != null || Sys ...
- C#窗体加载和控件加载不同步导致控件闪烁
窗体加载和控件加载不同步导致的控件闪烁现象:// 代码块加在父窗体中的任意位置,解决窗体加载和控件加载不同步导致的控件闪烁问题 protected override CreatePara ...
- 关于4A网络安全管控平台控件加载失败的解决方法
最近电脑重装系统后,到公司登录4A管控平台提示"控件加载失败","无效的参数为:Null","点击资源无任何反映"等等问题 别人的电脑用的好 ...
- MFC树形控件的使用(右键点击)
在MFC中,会用到树形控件,这里做下记录. 右键点击 1.添加右键点击事件(NM_RCLICK) 2.获得鼠标在Client的坐标 CPoint point; GetCursorPos(&po ...
- MFC 树形控件
Tree Control属性:Has Buttons.Has Lines.Lines At Root这三个设为True 常用的事件:SelectChanged() ico图片放到项目的res文件夹中( ...
- vue使用树形控件z-tree,动态添加数据,默认展开第一行
环境:vue 2.9.3; webpack; 插件:z-tree,jquery(cnpm install xxxx) 问题;由于数据量比较多,需要动态加载数据,默认第一次请求的数据是最高一级,然后子集 ...
- 利用MFC Picture Control控件 加载bmp,png
1.在资源视图,选择PictureControl,并且在属性中把Type设置为Bitmap. 2.加载PNG CStatic* pWnd = (CStatic*)GetDlgItem(IDC_PIC) ...
- MFC-----在MFC中使用Picture控件加载任意图片
对于刚刚接触OpenCV的童鞋来说,如何在MFC中加载并显示一张图片.应该是初期必定会碰到的问题之一.因此本文在分享这方面经验的同时,也相当于是写给自己的一份备忘录. 本文使用的是OpenCV2.1+ ...
随机推荐
- [AGC030C] Coloring Torus
非常巧妙的一道构造题,发现对于所构造的 \(n\) 有上限,那么对于 \(K<=500\) 的情况,很好构造,每行全是一个数就行了,对于 \(K>500\) 的情况,显然每行都是 \(1, ...
- Mysql 使用(一)
一.数据库的种类 关系型数据库 非关系型数据库 二.常见关系型数据库 oracle:在以前的大型项目中使用,银行,电信等项目 mysql:web时代使用最广泛的关系型数据库 ms sql server ...
- Stable Diffusion(二)WebUI使用指南
1. 前言 基于 https://stable-diffusion-art.com/ 内的教程进行翻译与整理,帮助快速上手 stable-diffusion 的使用. 2. 环境 AWS DeepLe ...
- 在Linux驱动中使用regmap
背景 在学习SPI的时候,看到了某个rtc驱动中用到了regmap,在学习了对应的原理以后,也记录一下如何使用. 介绍 在Linu 3.1开始,Linux引入了regmap来统一管理内核的I2C, S ...
- 『vulnhub系列』HMS-1
『vulnhub系列』HMS?-1 下载地址: https://www.vulnhub.com/entry/hms-1,728/ 信息搜集: 使用nmap进行存活主机探测,发现开启了21端口(ftp) ...
- 【仿真】Carla简易安装 Window Ubuntu均适用 附ROS的简单连接 [0]
参考与前言 CARLA Documentation 官方文档 后续链接:[仿真]Carla介绍与使用 [1] 本篇创建于 2020/12/18,安装方式为压缩包安装,无需UE4等软件,但是前提是需要一 ...
- Linux常用指令及shell脚本记录
记录一些常用指令在博客上,以防哪天因太久不敲而忘却,还可以直接翻看博客记录,不用再一条条百度搜...... 一.Linux常用指令 一.设置文件权限为aapp用户及用户组-- chown -R app ...
- PN转232网关模块接扫码枪与CPU通讯
在现代物流.汽车生产线等领域,广泛使用条码扫码枪快速扫描产品条码,提高工作效率.为了保证条码扫码枪与CPU之间的准确通信,PN转232网关模块成为关键部件.本文将深入研究PN转232网关模块(BT-P ...
- oeasy教您玩转vim - 005 - # 程序本质
程序本质 回忆上次内容 py 的程序是按照顺序 一行行挨排解释执行的 我们可以 python3 -m pdb hello.py 来对程序调试 调试的目的是去除 bug 别害怕 bug bug 会有 ...
- Linux 基于flock命令实现多进程并发读写文件控制
基于flock命令实现多进程并发读写文件控制 需求描述 实际项目中,需要在Linux下通过shell脚本并发读写同一个文件,但是希望同一时刻,只有一个进程可以在读.写目标文件. 解决方案 使用floc ...