昨天跟同学一起调程序,在一个单文档多视图的项目里,有一个视图是从CTreeView继承的,同学希望右键点击弹出菜单,然后点击菜单项弹出模式对话框。
然后就在那个视图里加了OnRButtonDown响应,由于系统自动生成,就在响应的最后调用了CTreeView::OnRButtonDown。同时在视图里添加了响应菜单命令的函数,并在其中弹出模式对话框。
但发现每次弹出的模式对话框居然都不能获得焦点,必须在那个treeview里点一下,才能对对话框进行操作。后来发现trackpopupmenu那个函数return后,还要执行一个CTreeView::OnRButtonDown,而这个函数被domodal给拦住了,domodal又被它给拦住了。然后我们把trackpopupmenu写到CTreeView::OnRButtonDown之后,也就是OnRButtonDown响应的最后,果然没问题了。
觉得这个问题比较搞笑,不知大家是否也遇到过,而我们的解决方法也不是很正常,不知大家有没有更好的方法。最后还想问看过这篇小东西的大哥们一句,这算是我们的问题么,还是ms。。。
然后就在那个视图里加了OnRButtonDown响应,由于系统自动生成,就在响应的最后调用了CTreeView::OnRButtonDown。同时在视图里添加了响应菜单命令的函数,并在其中弹出模式对话框。
但发现每次弹出的模式对话框居然都不能获得焦点,必须在那个treeview里点一下,才能对对话框进行操作。后来发现trackpopupmenu那个函数return后,还要执行一个CTreeView::OnRButtonDown,而这个函数被domodal给拦住了,domodal又被它给拦住了。然后我们把trackpopupmenu写到CTreeView::OnRButtonDown之后,也就是OnRButtonDown响应的最后,果然没问题了。
觉得这个问题比较搞笑,不知大家是否也遇到过,而我们的解决方法也不是很正常,不知大家有没有更好的方法。最后还想问看过这篇小东西的大哥们一句,这算是我们的问题么,还是ms。。。