关于CTreeCtrl问题~~~

snowbirdfly 2006-05-20 10:56:53
我的问题是:
-----当前在线学生
+++用户一
+++用户二
...
其中当前在线学生这个我用的成员函数为~
void CUserView::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();

// TODO: Add your specialized code here and/or call the base class
HICON hIcon[3];
m_imageList.Create(16,16,0,3,3);
//添加小图标到m_imageList中
hIcon[0] = AfxGetApp()->LoadIcon(IDI_TEACHER);
hIcon[1] = AfxGetApp()->LoadIcon(IDI_MALE);
hIcon[2] = AfxGetApp()->LoadIcon(IDI_FEMALE);
for(int n = 0; n < 3;n++)
{
m_imageList.Add(hIcon[n]);
}
CTreeCtrl& tc = GetTreeCtrl();
tc.ModifyStyle(0,TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES);
//设置背景颜色为绿色和字体颜色为蓝色
tc.SetBkColor(RGB(0,255,255));
tc.SetTextColor(RGB(0,0,255));
tc.SetImageList(&m_imageList,TVSIL_NORMAL);
tvinsert.hParent = NULL;
tvinsert.hInsertAfter = NULL;
tvinsert.item.mask = TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
tvinsert.item.hItem = NULL;
tvinsert.item.state = 0;
tvinsert.item.stateMask = 0;
tvinsert.item.cchTextMax = 6;
tvinsert.item.iSelectedImage = 0;
tvinsert.item.cChildren = 0;
tvinsert.item.lParam = 0;
//top level,最顶层
tvinsert.item.pszText = "当前在线学生";
tvinsert.item.iImage = 0;
hDad = tc.InsertItem(&tvinsert);
}
然后想通过另外一个成员函数来添加学生的姓名~~~
void CUserView::AddItem(short i, char *name, char *text)
{
tvinsert.hParent = hDad;
tvinsert.item.pszText = name;
tvinsert.item.iImage = i;
XXX.InsertItem(&tvinsert);//XXX就是不知道如何获取上面的OnInitialUpdate()里面的tc~
}
因为我使用的是GetTreeCtrl()而不是通过Create()成员函数来创建~~~
那我如何在类中定义CTreeCtrl变量来保存OnInitialUpdate()的tc,然后将该参数传递到AddItem中~~~
...全文
263 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
T97102003 2006-05-20
  • 打赏
  • 举报
回复
t97102003@163.com
方便发过来,我帮你调试看看.
snowbirdfly 2006-05-20
  • 打赏
  • 举报
回复
定义成局部变量也出现问题~~
还是tvinsert.hParent = hDad;//还是出错~~~
void CUserView::AddItem(short i, char *name, char *text)
{
TV_INSERTSTRUCT tvinsert;
tvinsert.hParent = hDad;
tvinsert.item.pszText = name;
tvinsert.item.iImage = i;
m_pTreeCtrl->InsertItem(&tvinsert);
}
T97102003 2006-05-20
  • 打赏
  • 举报
回复
从上面的代码看,函数AddItem是CUserView的成员函数,而CUserView继承自CTreeView,
所以CTreeCtrl& tc = GetTreeCtrl();在 AddItem 里是没问题的。

另外:
void CUserView::AddItem(short i, char *name, char *text)
{
tvinsert.hParent = hDad;//出错
tvinsert.item.pszText = name;
tvinsert.item.iImage = i;
m_pTreeCtrl->InsertItem(&tvinsert);
}
问题是 hDad和tvinsert我都定义为类的成员变量~~~
所以运行的时候,运行到tvinsert.hParent = hDad;会出现异常~
============

把tvinsert定义成AddItem的局部变量


snowbirdfly 2006-05-20
  • 打赏
  • 举报
回复
楼上是什么意思啊~~
是不是也在AddItem(short i, char *name, char *text)里面使用CTreeCtrl& tc = GetTreeCtrl();
阿???
这样是不行的~~~
T97102003 2006-05-20
  • 打赏
  • 举报
回复
在成员函数里也可以用
CTreeCtrl& tc = GetTreeCtrl();
snowbirdfly 2006-05-20
  • 打赏
  • 举报
回复
恩~~
感谢回答~~~
对了~~~
我用你的方法(实际上之前我也想过~)
void CUserView::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();

// TODO: Add your specialized code here and/or call the base class
HICON hIcon[3];
m_imageList.Create(16,16,0,3,3);
//添加小图标到m_imageList中
hIcon[0] = AfxGetApp()->LoadIcon(IDI_TEACHER);
hIcon[1] = AfxGetApp()->LoadIcon(IDI_MALE);
hIcon[2] = AfxGetApp()->LoadIcon(IDI_FEMALE);
for(int n = 0; n < 3;n++)
{
m_imageList.Add(hIcon[n]);
}
CTreeCtrl& tc = GetTreeCtrl();
tc.ModifyStyle(0,TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES);
//设置背景颜色为绿色和字体颜色为蓝色
tc.SetBkColor(RGB(0,255,255));
tc.SetTextColor(RGB(0,0,255));
tc.SetImageList(&m_imageList,TVSIL_NORMAL);
tvinsert.hParent = NULL;
tvinsert.hInsertAfter = NULL;
tvinsert.item.mask = TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
tvinsert.item.hItem = NULL;
tvinsert.item.state = 0;
tvinsert.item.stateMask = 0;
tvinsert.item.cchTextMax = 6;
tvinsert.item.iSelectedImage = 0;
tvinsert.item.cChildren = 0;
tvinsert.item.lParam = 0;
//top level,最顶层
tvinsert.item.pszText = "当前在线学生";
tvinsert.item.iImage = 0;
hDad = tc.InsertItem(&tvinsert);
m_pTreeCtrl = &tc;
}


void CUserView::AddItem(short i, char *name, char *text)
{
tvinsert.hParent = hDad;//出错
tvinsert.item.pszText = name;
tvinsert.item.iImage = i;
m_pTreeCtrl->InsertItem(&tvinsert);
}
问题是 hDad和tvinsert我都定义为类的成员变量~~~
所以运行的时候,运行到tvinsert.hParent = hDad;会出现异常~
mynamelj 2006-05-20
  • 打赏
  • 举报
回复
定义成员:
CTreeCtrl* m_pTreeCtrl;


CXXView::CXXView()
{
m_pTreeCtrl = NULL; // 构造清空
}

BOOL CXXView::OnInitialUpdate()
{
...
m_pTreeCtrl = &GetTreeCtrl();
...
}

这样你就可以随时用m_pTreeCtrl来访问CTreeCtrl控件
snowbirdfly 2006-05-20
  • 打赏
  • 举报
回复
问题就是如何动态添加用户,使用的是树状控件~~~
就像QQ一样~~
但有用户上线时,就会自动的添加一个列表示该用户上线了`~~~
snowbirdfly 2006-05-20
  • 打赏
  • 举报
回复
已经解决了~~
感谢楼上~~~
内容概要:本文针对基于输入并联输出串联(IPOS)结构的双三相LLC谐振变换器,系统研究其在宽增益工况下的谐振参数优化方法与启动过程中冲击电流的抑制策略。通过Simulink平台构建系统仿真模型,结合变频控制与电压电流双闭环调控策略,深入分析变换器在全范围软开关条件下的工作边界、模式切换动态响应及多模式运行稳定性。研究提出优化谐振腔参数设计以扩展电压增益范围,并引入降频软启动、星形耦合自均流等机制有效抑制上电瞬间的电流冲击,提升系统启动可靠性与运行效率。同时探讨了变频调压、多模式切换控制及交错并联带来的均流优势,为高增益、大功率密度DC-DC变换器的设计提供了完整的建模、控制与优化解决方案; 适合人群:具备电力电子与电力系统基础知识,从事新能源变换器、高频开关电源、电动汽车充电系统、航空航天电源等相关领域研究的研究生、科研人员及工程技术人员; 使用场景及目标:①为高电压增益、高效率、高功率密度DC-DC变换器的谐振参数设计与控制策略制定提供理论依据与仿真验证手段;②指导LLC谐振变换器在新能源并网、车载充电机、直流微网等应用场景中的工程实现与性能优化;③支撑高水平学术论文(如IEEE期刊)的复现、科研项目关键技术攻关及系统级仿真平台搭建; 阅读建议:建议结合Simulink仿真实例,细致理解谐振参数设计准则、软开关实现条件、冲击电流形成机理及其抑制方法的有效性验证过程,重点关注模式切换过程中的动态响应特性与闭环控制参数整定规律,宜配合相关文献进行对比分析以深化对系统稳定性和控制策略优越性的认知。
内容概要:本文详细介绍了使用CAXA3D软件进行支座类零件三维建模的全过程,采用“草图拉伸构建基体→添加凸台→加强筋→切除凹槽与安装孔”的建模思路。通过分步操作讲解,涵盖从创建底座草图、拉伸成实体、添加长方体凸台、使用加强肋图素增强结构强度,到利用孔类图素完成顶部矩形凹槽和中部弧形槽口的切除,最后通过布尔合并形成完整零件。文中还列出了关键尺寸参数,并针对常见建模问题提供了具体解决方案,如长圆孔未切除、加强肋无法生成、孔类图素不减料及零件未合并等问题的原因分析与处理方法。; 适合人群:具备基本三维建模基础,从事机械设计、产品结构设计等相关工作的工程师或工科专业学生;尤其适合正在学习CAXA3D软件操作的初学者; 使用场景及目标:①掌握CAXA3D中基于草图拉伸与图素库组合的高效建模流程;②理解加强肋、孔类图素等智能图素的正确使用方式;③学会解决建模过程中常见的草图封闭性、实体吸附与布尔运算问题;④为后续工程图出图和实际零件设计打下基础; 阅读建议:建议读者结合CAXA3D软件同步实操,按照文档步骤逐步练习,重点关注草图封闭性、图素吸附机制和最终布尔合并的操作细节,以提升建模成功率与效率。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧