2013-06-25 6 views
0

Я перехожу из OWL. Я создал класс диалога с именем TDialog, наследующим от CDialog, и я переопределяю OnWndMsg, чтобы разрешить обработку событий OWL также рядом с MFC. OWL использует таблицу ответов (другая форма карты сообщений - спецификация OWL), в то же время я вызываю метод базы CWnd::OnWndMsg. Проблема в том, что все элементы управления в диалоговом окне не видны до тех пор, пока мышь не переместится над ними или не сведёт к минимуму диалог, а затем восстановит его, тогда все элементы управления будут перерисованы.MFC Controls on Dialog не отображаются до тех пор, пока мышь не переместится над ними.

Другая проблема заключается в том, что при нажатии кнопки OK [Id = IDOK] диалог закрывается, но генерируется исключение. Я думаю, это потому, что мы обработали сообщение дважды, чтобы дескриптор мог быть закрыт.

Каков наилучший способ обработки сообщения несколько раз в таком случае?

ответ

0

Проблема заключалась в том, что я обрабатывал сообщение в OWL и в то же время в MFC задавал фоновое цветное сообщение и стирал фон также вызывал проблему, когда я удалял OWL-обработку сообщения, проблема была решена, чтобы обработать сообщения в OWL у меня есть 2 решения в настоящее время

  1. переназначить OWL макросы как DEFINE_RESPONSE_TABLE1 ... и заменить определение с альтернативами MFC здесь прийти новая проблема разницы в сигнатуру методов, которые получают параметры события, как для пример OnSysCommand в MFC и EVSysCommand в OWL
  2. Чтобы переписать все таблицы ответов и заменить их на карты сообщений MFC [это решение очень дорого во времени и усилий, у меня есть около 1700 таблиц ответ]