[英]Capture windows messages generated by an MFC app in plain C++ dll
[英]How is the Windows menu in a MFC C++ app populated
Windows菜单是MFC下提供给Document / View应用程序的标准菜单之一。 它提供了平铺和层叠窗口之类的功能,并在菜单末尾附加了当前可用视图的枚举列表。 问题是,有时候没有,我想知道为什么。 更具体地说,我想知道如何刷新此列表,因为我想在GUI自动化工具下使用它。 通常列表在那儿,有时候却不在,有人知道为什么吗? 我的猜测是CFrameWnd类中有一个函数可以照看这个,但是我似乎找不到它。
编辑:我也正在使用Stingray库的GUI,这很可能与问题有关。
菜单和窗口标题的更新是通过两种方法分别处理的。
CFrameWnd::OnUpdateFrameMenu(..)
仅实现框架菜单, CFrameWnd::OnUpdateFrameTitle(..)
仅刷新框架的名称。 我认为某个地方有错误的呼叫顺序,并且更新标题要晚于更新菜单。 毕竟,“窗口”菜单中的所有标题有时仍为空字符串。
最简单的修复方法是使用GetActiveFrame()->ActivateFrame()
方法调用。 它将立即刷新实际的框架窗口和拥有的“窗口”菜单。 创建CDocument和CView之后可以使用它。 最好的调用方法是在应用程序(CWin)App类的OnFileNew
, OnFileOpen
重写方法的末尾。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.