|
A как вы в потоке получаете (или передаете туда) HWND диалога?
Если вы пытаетесь получить указатель на диалог в другом потоке по его HWND то запросто можно получить указатель на временный объект вместо указателя на диалог.
Что- то вроде
CWnd* pWnd = CWnd::FromHandle(hwnd);
СMyDialog* pDlg = (СMyDialog*)(pWnd);
Если такой код выполнить в другом потоке ( не в потоке в котором был создан диалог) то вы можете получить указатель на временный объект.
В MFC есть понятие Thread State. Сделайте поиск по "Thread State" в MSDN, может найдете объяснение это проблеме.
Я бы сделал следующее : из потока посылал бы диалогу месседжи со стрингами которые нужно добавить в окно. То-есть в LPARM или WPRAM, помещал бы указатель на стриг. Причем лучше не пользоваться в этом случае CString-ом, а мессадж посылать SendMessageTimeout.
А в диалоге написал бы обработчик этого месседжа, в котором бы вынимал стринг из параметра и добавлял бы его в окно
__________________
Best Regards
|