Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
Альберт ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.07 c
15-1190704588
Некто
2007-09-25 11:16
2007.10.28
Сообщение: "Автономные файлы - Автономная работа"


1-1186990648
MultIfleX
2007-08-13 11:37
2007.10.28
Неактивируемое окно


15-1190830349
Вася Правильный
2007-09-26 22:12
2007.10.28
Как в Опере скопировать содержимое страницы


2-1191398821
Кевларвестов Семен
2007-10-03 12:07
2007.10.28
Про TStringList.DelimitedText


15-1190892322
Ega23
2007-09-27 15:25
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский