![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
у меня есть интерфейсный поток, который открывает окно, мне необходимо при определненном событие уничтожить окно, и уничтожить поток. у меня пока окно только сворачивается, а поток вообще уничтожить не могу.
Резюм не помогает -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Как поток создаеться?
Средствами API или бибилиотеки MFC/BORLAND? |
|||
|
||||
| Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: 2 Всего: 22 |
ExitThread(0); если из самого потока
|
|||
|
||||
| [auxx] |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 2.2.2003 Репутация: нет Всего: нет |
Все смешал. Борланд сделал много библиотек. OWL, VCL, TurboVision, может что забыл. |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Как-то невнятно задан вопрос...
Уничтожить окно? ничего проще: BOOL DestroyWindow( HWND hWnd // handle to window to destroy ); поток кильнуть? тож легко: BOOL TerminateThread( HANDLE hThread, // handle to the thread DWORD dwExitCode // exit code for the thread ); Не пойму, в чем проблема? опиши конкретнее, как ты уничтожаешь поток/окно? и как создаешь поток/окно? -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
Спасибо всем, а поток создаю с помощью афхбегинтреад.
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
MFC все таки.....
Если AfxBeginThread, то в MSDN рекомендуеться уничтожать поток только AfxEndThread А AfxEndThread если я все правильно помню можно вызвать только внутри потока. |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Чтобы завершить поток, созданный AfxBeginThread, из другого потока надо использовать средства синхронизации... сигналы например... подругому никак... всмысле не никак, а майкрософт не советуют по-другому.
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
вот это меня и не_устраивает -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| dim |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 24.12.2002 Репутация: нет Всего: нет |
Вообще-то если поток интерфейсный то в потоке должен быть цикл обработки сообщений. Следовательно закрывать поток можно посылкой какого-нибудь сообщения (напр WM_CLOSE или свое какое-то) с помощью PostThreadMessage или PostMessage из другого потока (это уже зависит от внутренней логики). Естессно что сообщение надо обрабатывать внутри закрываемого потока.
--------------------
that's all |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
afxendthread вызванный из интерфесного потока, закрывает мне общий. а интерфейсный какимто макаром остается...
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| DENNN |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Меня честно говоря тоже.
Хотелось бы иметь общее решение для закрытия из главного потока других, созданных этим потоком. Но MS не рекомендует уж очень настоятельно, придеться все-таки пользоваться _beginthread |
||||
|
|||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
у меня все время закрывается основной поток.
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Lion |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 25.3.2002 Репутация: нет Всего: 2 |
Ну а я делаю так:
1. Посылаю собственное сообщение потоку. m_pThreade->PostThreadMessage(WM_EXIT,0,0); 2. В потоке стоит обработчик, который получая сообщение просто вызывает ExitInstance(), в котором и зыкрываются все окна (у меня был поток, в котором динамически создавалось несколько диалогов). После вызова ExitInstance() поток автоматически завершается. 3. Ожидаю события о завершении потока DWORD dRes=::WaitForSingleObject(m_Event, 1000); Если поток не откликается (типа он занят), что-ж сам виноват. Kill, Kill!!! как пелось в одной из песен группы Helloween.
Это сообщение отредактировал(а) Lion - 13.2.2003, 15:35 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |