2013-08-22 3 views
0

У меня есть диалог, в котором пользователь может ввести информацию, а затем нажать кнопку «Перейти». Когда они нажимают эту кнопку, я отключу элементы формы (кнопки и т. Д.) И создаю рабочий поток, используя AfxBeginThread(...). Как только рабочий поток завершен, я хочу, чтобы он отправил сообщение в поток пользовательского интерфейса, чтобы снова включить форму. Я использую ::PostMessage(...) для отправки сообщения, но я не могу найти, как перехватывать эти сообщения.Получать сообщения PostMessage для MFC Dialog

Я искал в Интернете (Link #1, Link #2, Link #3), но я не могу найти понятный пример кода для реализации моего собственного сообщения слушателя. В заголовке я вижу некоторые сумасшедшие инструкции определения (начатые с DECLARE_MESSAGE_MAP()), которые выглядят так, как будто это может быть связано с этим, но я не могу понять это.

Любая помощь очень ценится. Благодарю.

+1

Убедитесь, что вы используете сообщение от [ 'WM_APP'] (http://msdn.microsoft.com/en-us/library /windows/desktop/ms644930(v=vs.85).aspx). –

ответ

3

Карта сообщений - это таблица. Для каждого интересующего вас сообщения оно содержит сообщение и указатель на функцию обработчика сообщений. Чтобы добавить настраиваемое сообщение на карту, вы добавляете запись ON_MESSAGE в таблицу. Учебник пример делать это из рабочего потока здесь:

http://vcfaq.mvps.org/mfc/12.htm

+0

Я нашел http://msdn.microsoft.com/en-us/library/k35k2bfs.aspx, и в статье, с которой вы ссылались, есть ошибка. Он использует 'UINT' и' LONG', где он должен использовать 'WPARAM' и' LPARAM'. Статья MSDN, с которой я связан, работал. Спасибо за помощь. – Luke

Смежные вопросы