我有一个MFC应用程序,它使用Rogue Wave的Stingray Studio Objective Grid来显示一个带有网格的对话框。执行打印预览时,网格使用 MFC 打印预览机制生成打印预览对话框。在对话框中,我看到您期望的所有按钮,包括下一个和上一个按钮,以及放大和缩小。我在网格中有多个页面的数据,所以我在右侧看到一个滚动条,"下一步"按钮已启用,上一个按钮被禁用。如果我单击"下一步"按钮,对话框会将预览推进到数据的下一页,并且我看到滚动条相应地向下移动,但"上一个"按钮未启用。我可以使用滚动条向两个方向滚动,但是当我到达最后一页时,"上一个"按钮永远不会启用,下一个按钮永远不会禁用。我看到缩放按钮也有类似的问题。我可以放大,但缩小按钮永远不会启用,所以我再也无法缩小了。
以前有没有人见过这种行为并知道是什么原因造成的?
因此,我的问题似乎归结为工具栏无法刷新消息。每当预览使自身失效时,它都应该得到WM_IDLEUPDATECMDUI
,但事实并非如此。我发现的示例应用程序工作正常,并且确实会收到这些消息。我相信在我的情况下正在发生的事情是,我的代码位于一个不受我控制的应用程序的 DLL 中,当应用程序捕获消息时,它会吞下某些消息,包括这个消息。我能够用笨拙的方式解决问题。我找到预览窗口,在OnPrint虚拟功能中,我将消息发送到它的工具栏。这很好用,但不是很漂亮。