CTreeCtrl结合GridCtrl的消息响应顺序?

50米 2012-05-02 11:23:43
我用第三方控件MFC GridCtrl来显示数据,用MFC的CTreeCtrl控制MFC GridCtrl的内容显示,当点击CTreeCtrl的子项时,保存之前CTreeCtrl的子项的内容(也就是GridCtrl的内容),然后把GridCtrl的非固定行删除,根据新点击的子项在GridCtrl中添加相应的行(每一个CTreeCtrl的子项在GridCtrl显示的行数和嵌入在GridCtrl的控件并非一样)。这一系列操作都放在CTreeCtrl的TVN_SELCHANGED的响应函数里。

现在遇到一个问题: 当我点击GridCtrl中嵌入的Combox下拉框,选择一个数值之后,此时鼠标的焦点还在Combox上,接着鼠标点击CTreeCtrl的另一个子项,调试发现是先响应CTreeCtrl的TVN_SELCHANGED消息的响应函数而不是先响应Combox的OnKillFocus函数,当鼠标点击另一个控件的时候,不是先失去原先的控件的焦点才能响应点击的那个控件的消息吗?我是在CTreeCtrl的TVN_SELCHANGED的响应函数里保存GridCtrl的内容到他对应的子项中,先响应CTreeCtrl的TVN_SELCHANGED消息就获取不到Combox的值了,这样就没法保存CTreeCtrl的旧子项关联的GridCtrl的内容了。而且,在Combox选择的数值会保存在CTreeCtrl新点击的子项的GridCtrl中(与旧子项对应同一行同一列,如果新的子项没有这一行,程序就会崩溃)。

有哪位大虾将CTreeCtrl结合GridCtrl这样实现过?给小弟指点一下,谢谢了~~~
...全文
164 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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