Re[3]: CDialog и потоки
От: rus-k  
Дата: 11.05.09 13:22
Оценка: 3 (1)
Здравствуйте, ZZmiy, Вы писали:
ZZ>И именно поэтому я не очень понимаю как можно здесь использовать предлагаемое в описании ассерта решение — передавать только HWND (Очень хочется, чтобы "общение" между плагинами ограничилось передачей одного объекта).

Каждый диалог — это своя очередь сообщений, отдельная задача. У тебя таких задач несколько. Как тебеих связать?
1. Диалог 1 посылает Дилогу 2 сообщение через SendMessage. Большинство методов CDialog в конечном итоге превращаются в вызов различных SendMessage. Вызов SendMessage чреват блокировкой (deadlock), т.к. вызывающий диалог блокируется до завершения обработки сообщения.
2. Диалог 1 посылает Дилогу 2 сообщение через PostMessage. Это сообщение будет обработано когда-нибудь и Диалог 1 не будет ждать этого момента. Если тебе нужна ответная реакция — пусть Диалог 2 делает PostMessage Диалогу 1. Можно использовать пользовательские сообщения (см. WM_USER).
3. Диалог 1 вызывает методы обертки Диалога 2, т.к. он знает, что это не просто диалог, а обертка. Тут уже все зависит от методов обертки: блокируются ли они, как они обеспечивают синхронизацию достуа к данным и т.п.

Я бы выбрал метод 2 и 3.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.