0

我有一个 MFC 应用程序,它使用 Rogue Wave 的 Stingray Studio 目标网格来显示一个带有网格的对话框。在进行打印预览时,网格使用 MFC 打印预览机制来生成打印预览对话框。在对话框中,我看到了您期望的所有按钮,包括下一个和上一个,以及放大和缩小。我在网格中有超过一页的数据,所以我在右侧看到一个滚动条,启用了下一步按钮,禁用了上一个按钮。如果我单击下一个按钮,对话框会将预览推进到数据的下一页,并且我看到滚动条相应地向下移动,但上一个按钮未启用。我可以使用滚动条双向滚动,但是当我到达最后一页时,“上一个”按钮永远不会启用,而“下一个”按钮永远不会禁用。我看到缩放按钮也有类似的问题。我可以放大,但缩小按钮永远不会启用,所以我再也不能缩小了。

有没有人见过这种行为并知道是什么原因造成的?

4

1 回答 1

0

所以看起来我的问题归结为工具栏没有收到消息来刷新自己。每当预览使自己失效时,它应该会得到一个WM_IDLEUPDATECMDUI,但事实并非如此。我发现的一个示例应用程序工作正常,并且确实收到了这些消息。我认为在我的情况下发生的事情是,我的代码位于我无法控制的应用程序的 DLL 中,并且当应用程序捕获消息时,它会吞下某些消息,包括这个消息。我能够用kludge解决这个问题。我找到预览窗口并在 OnPrint 虚拟功能中将消息发送到它的工具栏。这工作得很好,但它不是很漂亮。

于 2013-10-22T21:10:19.067 回答