我用第三方控件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这样实现过?给小弟指点一下,谢谢了~~~
