0

我要离开 OWL。我创建了一个名为TDialog继承自的对话框类,CDialog并重写了它OnWndMsg以允许 OWL 事件处理也可以在 MFC 旁边工作。OWL 使用响应表(消息映射的另一种形式,它是 OWL 的规范),同时我调用 base 的方法CWnd::OnWndMsg。问题是对话框上的所有控件在鼠标移到它们上方或最小化对话框然后恢复它之前都不可见,然后所有控件都将被重绘。

另一个问题是,当我单击“确定”按钮 [Id = IDOK] 时,对话框关闭但抛出异常。我认为这是因为我们处理了两次消息,因此可能会关闭句柄。

在这种情况下,多次处理消息的最佳方法是什么?

4

1 回答 1

0

问题是我在 OWL 上处理消息,同时在 MFC 上设置背景颜色消息并擦除背景也导致了问题,当我删除消息的 OWL 处理时,问题已解决,在 OWL I 中处理消息现在有2个解决方案

  1. 要重新映射 OWL 宏,如 DEFINE_RESPONSE_TABLE1... 并用 MFC 的替代方法替换定义,这里出现了一个新问题,即接收事件参数的方法的签名不同,例如MFC中的OnSysCommand和 OWL中的EVSysCommand
  2. 重写所有响应表并用MFC消息映射替换它们[这个解决方案在时间和精力上非常昂贵我大约有1700个响应表]
于 2013-07-01T07:38:51.093 回答