Показать сообщение отдельно
Старый 18.05.2006, 15:23     # 2
alexey_ma
Member
 
Регистрация: 10.03.2002
Адрес: Israel
Сообщения: 245

alexey_ma Нимб уже пробиваетсяalexey_ma Нимб уже пробивается
A как вы в потоке получаете (или передаете туда) HWND диалога?
Если вы пытаетесь получить указатель на диалог в другом потоке по его HWND то запросто можно получить указатель на временный объект вместо указателя на диалог.
Что- то вроде
CWnd* pWnd = CWnd::FromHandle(hwnd);
СMyDialog* pDlg = (СMyDialog*)(pWnd);
Если такой код выполнить в другом потоке ( не в потоке в котором был создан диалог) то вы можете получить указатель на временный объект.
В MFC есть понятие Thread State. Сделайте поиск по "Thread State" в MSDN, может найдете объяснение это проблеме.

Я бы сделал следующее : из потока посылал бы диалогу месседжи со стрингами которые нужно добавить в окно. То-есть в LPARM или WPRAM, помещал бы указатель на стриг. Причем лучше не пользоваться в этом случае CString-ом, а мессадж посылать SendMessageTimeout.
А в диалоге написал бы обработчик этого месседжа, в котором бы вынимал стринг из параметра и добавлял бы его в окно
__________________
Best Regards
alexey_ma вне форума