我要发帖 回复

中级会员

34

主题

461

积分

0

专家分

:

私信
发表时间 : 2008-10-21 20:02:02 | 浏览 : 2488    评论 : 9
我在做mfc键盘响应的时候,遇到了一下问题。我采用了论坛置顶贴里的框架,它的焦点(SetFocus)是在循环里设置的,这样其他窗口(在我的程序里是一个dialogbar)就不能获得焦点了,我尝试在OnSetFocus或OnActivateView里设置焦点,效果不错,都能够在dialogbar和vpView之间交换焦点,唯一不行的是程序一开始时vp窗口获不到焦点(键盘不反应),只有先点击控件或者最小化应用程序,在点击窗口获最大化应用程序时才能接受键盘反映。我想这可能是由于程序一开始并没有OnSetFocus或OnActivateView,我尝试在打开文件之后执行OnSetFocus,同样不能在程序一开始就将焦点设置在vp窗口。我的问题就是如何一开始就将焦点设置在vp窗口。

最近VR访客

xiangbalao 评论于2008-12-3 15:08:49
我也遇到类似的问题,请高手指点啊!
hongkang1983 评论于2009-3-20 09:39:10
同问  
henry0henry 评论于2009-3-23 10:29:51
这个问题有两点非常重要 ,一是一开始焦点在vp窗口,二是,MFC也要 获得焦点。
所以焦点设置不能在postframe里面。
解决方法:设置bool变量,首先在postframe里设置焦点,变量取反,postframe里就不设置焦点了,然后响应视图类的onsetfocus,在那里设置焦点。
问题解决 ,结贴 。
david_m 评论于2009-3-23 19:33:56
我的办法是直接将焦点交给框架,然后再由框架传消息给VP,这样VP就不需要专门管理焦点的事情了;
改写preTranslateMessage(para),把需要传给VP的传过去,其他传给MFC
hongkang1983 评论于2009-3-23 19:41:32
   能提供你的QQ吗?我想想你请教
henry0henry 评论于2009-3-23 21:19:13
qq:276466358
henry0henry 评论于2009-3-27 19:06:29
原帖由 david_m 于 2009-3-23 07:33 PM 发表
我的办法是直接将焦点交给框架,然后再由框架传消息给VP,这样VP就不需要专门管理焦点的事情了;
改写preTranslateMessage(para),把需要传给VP的传过去,其他传给MFC

这样能解决一开始焦点位于vp么,我的感觉是由于vp建立比视图类要晚,而此时视图已经完成了setfocus了,所以vp获不到焦点。
欢迎大家光临我的blog
http://henry0henry.blogspot.com/
wsh188881 评论于2009-7-10 22:55:13
感谢楼主,提出了问题,又自己将问题解决了。
xinyaner 评论于2009-8-8 16:03:12
楼主的方法不错

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-4-22 09:46 PM

返回顶部