对话框上的MFC控件在鼠标移过它们之前不会出现

时间:2013-06-25 07:59:39

标签: c++ mfc event-handling

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

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

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

1 个答案:

答案 0 :(得分:0)

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

  1. 要重新映射OWL宏,如DEFINE_RESPONSE_TABLE1 ...并将此定义替换为MFC的替代,这里出现了一个新问题,即接收事件参数的方法的签名差异,例如 OnSysCommand >在OWL中 EVSysCommand
  2. 要重写所有响应表并用MFC消息映射替换它们[这个解决方案非常昂贵,而且我有大约1700响应表的努力]