Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.28;
Скачать: CL | DM;

Вниз

потоки   Найти похожие ветки 

 
Альберт ©   (2007-10-07 23:06) [0]

создаю окно. делаю 2 потока

procedure createMainWindow;
...
begin
...
Handle:=CreateWindowEx ( ... )
end;

procedure WaitMainWindow(Param: Integer); stdcall;
begin

 While GetMessage(Mesg,0,0,0) do
begin
 TranslateMessage(Mesg);
 DispatchMessage(Mesg);
 messagebox(0,0,0,0);
end;

end;

procedure WaitAnotherWindow(Param: Integer); stdcall;
begin

...

end;

var hThread: array [1..2] of THandle;
   dwThreadId: array [1..2] of Cardinal;

...
createMainWindow;

hThread[1]:= CreateThread(nil,0,@WaitMainWindow,0,0, dwThreadId[1]); .. НЕ работает
hThread[2]:= CreateThread(nil,0,@WaitAnotherWindow,0,0, dwThreadId[2]); // работает
WaitForMultipleObjects(MAX_THREADS,@hThread,FALSE,INFINITE);

CloseHandle(hThread[1]);
CloseHandle(hThread[2]);

подскажите, плз, почему сообщения не обрабатываются?


 
DVM ©   (2007-10-07 23:13) [1]

MessageBox убери


 
Альберт ©   (2007-10-07 23:17) [2]

там и без MessageBox"a не идет

WaitForMultipleObjects(MAX_THREADS,@hThread,FALSE,INFINITE); - вместо FALSE ставя TRUE, проблема не решается


 
DrPass ©   (2007-10-07 23:24) [3]

А почему они длжны обрабатываться, если окно ты создаешь в главном потоке, а GetMessage вызываешь из дополнительных?


 
DVM ©   (2007-10-07 23:26) [4]


> Альберт ©

stdcall зачем написал?


 
DVM ©   (2007-10-07 23:27) [5]


> DrPass ©   (07.10.07 23:24) [3]

кстати, да


> Альберт ©  

Зачем у тебя в потоковой функции цикл сообщений?


 
DrPass ©   (2007-10-07 23:30) [6]


> stdcall зачем написал?

stdcall там как раз к месту


 
DVM ©   (2007-10-07 23:33) [7]


> stdcall там как раз к месту

без него все будет работать


 
DrPass ©   (2007-10-07 23:37) [8]


> DVM ©   (07.10.07 23:33) [7]
>
> > stdcall там как раз к месту
>
> без него все будет работать

А еще без CloseHandle будет, да и деструкторы у объектов вызывать не надо - все равно все будет работать, так, по-твоему?


 
DVM ©   (2007-10-07 23:37) [9]


> > stdcall там как раз к месту
>
> без него все будет работать

А так у него там CreateThread. Я о BeginThread думал.


 
Альберт ©   (2007-10-07 23:37) [10]

Спасибо, ребят! там как раз и была ошибка в то, что я цикл сообщений в потоке обрабатывал.


 
DVM ©   (2007-10-07 23:42) [11]


> да и деструкторы у объектов вызывать не надо

Деструкторы у объектов вызывать конечно надо, но не в коде из вопроса :)


> так, по-твоему?

По-моему там вообще ерунда написана. Вопросы буквально к каждой строчке.


> Альберт ©

Раз уж ты стал применять CreateThread вместо BeginThread то не забудь флаг IsMultiThread := TRUE; выставить


 
Альберт ©   (2007-10-07 23:48) [12]


> По-моему там вообще ерунда написана. Вопросы буквально к
> каждой строчке.

а как вообще потоки-то оформлять?


 
DVM ©   (2007-10-07 23:51) [13]


> а как вообще потоки-то оформлять?

чего ты от потоков добиться хочешь в своей программе?


 
Альберт ©   (2007-10-08 00:02) [14]

программа типа сервера виджетов (или называйте miniApps).
она создает LayeredWindows. они позволяют запустить другие программы. в этих других программах предусмотрено и закрытие виджета.


 
DVM ©   (2007-10-08 10:36) [15]


> Альберт ©   (08.10.07 00:02) [14]

и зачем тут потоки?


 
Альберт ©   (2007-10-08 16:13) [16]

одно приложение создает несколько окон


 
MBo ©   (2007-10-08 16:19) [17]

>одно приложение создает несколько окон
Это не означает, что нужно несколько потоков


 
DVM ©   (2007-10-08 16:44) [18]


> одно приложение создает несколько окон

Настоятельно рекомендую создавать все окна в одном (первичном) потоке. Все будет прекрасно работать и с одним потоком и одним циклом сообщений.


 
Альберт ©   (2007-10-08 20:06) [19]

приведите плз пример.


 
MetalFan ©   (2007-10-08 20:33) [20]


> приведите плз пример.

интересно, додуматься до нескольких потоков смог, а в одном потоке сделать н-ко окон - нет.
http://msdn2.microsoft.com/en-us/library/ms644928.aspx


 
Альберт ©   (2007-10-08 20:38) [21]

ой да не говори!) за ссылку спасибо!



Страницы: 1 вся ветка

Текущий архив: 2007.10.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.041 c
15-1190783124
nikolay-gavrilov
2007-09-26 09:05
2007.10.28
TWSocket - SSL Effort


1-1187035237
timself
2007-08-14 00:00
2007.10.28
Приблема с RichEdit ...


15-1191134727
Lex123456
2007-09-30 10:45
2007.10.28
помогите решить задачу на Pascal.Срочно.


15-1190408875
Kostafey
2007-09-22 01:07
2007.10.28
С днем рождения ! 22 сентября


6-1172650257
Oleg_teacher
2007-02-28 11:10
2007.10.28
Помогите начинаещему с сокетами





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский