Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Как сделать что б из потока выводились данные на листбокс - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Pomogite 7-omu klassu http://www.cyberforum.ru/cpp-beginners/thread31885.html
Uv experti pomogite mne postupit v LKSH-2009... Pomogite reshit zadachi http://lksh.ru/sis/2009/vstupit/b.pdf http://lksh.ru/sis/2009/vstupit/a.pdf
C++ Объясните,почему шаблоны написаны через struct? Пришлось залезть в файл limits,обратил внимание,что все шаблоны написаны через struct.Можете объяснить,почему?В смысле почему не классы?В шаблонах должен быть обязательно Cи?Или просто по мере... http://www.cyberforum.ru/cpp-beginners/thread31876.html
C++ Задача на 10-элементные вещественные вектора
помогите пожалуйста с задачей.....уже неизвестно сколько голову ломаю, вроде бы принцип расчета понятен а в программе реализовать не могу. Условие: Даны 10-элементные вещественные вектора x,y и z....
C++ Создать класс матрица
Такая задача: Определить класс матрица в классе предусмотреть следующие действия: -ввод и вывод матрицы -вычисление суммы элементов,расположенных выше главной диагонали. -поиск номера первой из...
C++ Делители... http://www.cyberforum.ru/cpp-beginners/thread31843.html
Помогите улучшить код, не проходит 23-ий тест.... Программа по количеству N делителей находит минимальное число Q,которое имеет N делителей... http://********/index.asp?main=task&id_task=289...
C++ Лабораторная на структуры/файлы/и.т.д. хлп Помогите написать компьютерний вариант телефонной-книги. Последняя лабораторная не могу никак доделать. Делаю с помощью структур. С вводом и виводом данных все написал, но нужно еще что бы тел.книга... подробнее

Показать сообщение отдельно
oxotnik
1590 / 1067 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
28.04.2009, 14:54
Цитата Сообщение от CheshireCat Посмотреть сообщение
Нельзя. Напрямую - никогда. Частая ошибка программистов на VC++/MFC, которая чревата появлением трудновоспроизводимых глюков.

А теперь подробности: CListBox является наследником CWnd, а к самому CWnd и ко всем его наследникам можно обращаться только и исключительно из того же самого потока, который их создал. Так уж устроена MFC. Она держит хэндлы всех окон в TLS потока.
Разумеется, обращаясь к окну из "чужого" потока, она попытается обратиться по "чужому" хэндлу. Что при этом произойдет - зависит от фазы луны. Может быть, в этот раз повезет и все сработает, как надо. Может быть, нет.

Что делать: из рабочего потока (ServiceThread) слать сообщения (PostMessage, но не SendMessage!) главному потоку приложения или главному окну, а там - их соответственно обрабатывать и писать что-то в Listbox.

Об этой особенности написано в литературе по MFC, только лень сейчас рыть.... Например, у Мешкова и Тихомирова в "Visual C++ и MFC".
Любой потомок от CWnd содержит в себе private m_hWnd - свой хендл, по которому с ним и работают.
При должной синхронизации проблем не должно возникать
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru