在派生的CView类'方法中,我调用CWnd的MessageBox方法。这是一个停靠视图,而不是MDI子视图。从MessageBox返回后,焦点将转到Active MDI子级,而不是返回到停靠视图。
认为这是一个MFC行为“异常”,我尝试更改代码以使用Win32 :: MessageBox并将视图的GetSafeHwnd()传递给父HWND paraneter,并且视图STILL不会关注解雇MessageBox,但Active MDI子项获得焦点,就像MFC调用一样。
此外,我从视图中看到与基于CDialog的窗口类似的行为,而不仅仅是MessageBox的。
我通过从MessageBox返回后调用SetFocus()来做一个解决方法,这是有效的。但是,我不想以编程方式始终将焦点设置回我(在某些情况下,视图或其中一个孩子在对话框/消息框之前没有焦点,所以我实际上需要在对话框/消息框之前进行测试,然后只有在我调用DoModal / MessageBox之后才进行焦点恢复焦点。
这是MDI Windows行为错误吗?这不是一个错误,而是MDI应用程序的“所需功能”吗?难道我做错了什么?有人有任何想法或意见吗?