![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
формы, потоки и TWebBrowser [D7]
HikTronic © (2010-07-05 09:47:00)первый вопрос такой - пишу прогу консольную, создаю окно через winapi, инициализирую в нем огл, и мне надо в месте с параллельно отрисовкой окна и выполнением в ней вычислений отображать форму, которая не стопорила бы эту прогу.
пробовал через потоки делать
//основная программа
CreateWND(true); // Создание окна
GLInit; // Инициализация Ogl'a
Looker:=TLooker.Create(false);
Looker.FreeOnTerminate:=true;
Looker.Priority:=tpLowest;
while Done=FALSE do цикл программы...
//TLooker.Execute:
Application.Initialize;
Application.CreateForm(TForm1, Form1);
logWrite('CreateForm',3); Application.Run;
Form1.Visible:=true;
Form1.Visible:=false;
но зависает и приложение и форма, по логу видно, что доходит до Onshow и все, дальше никак. подскажите, как решить?
и еще такой вопрос - у TWebBrowser можно ли управлять полосой прокрутки?
например, чтобы полоса прокрутки в определённый момент вставала в крайнее нижнее положение
HikTronic (2010-07-06 22:54:00) [1]забавно, возьму на заметку
Leonid Troyanovsky (2010-07-06 22:44:00) [2]
> HikTronic © (06.07.10 22:39) [34]
> что за формула с танком?
Главное в танке - не обосраnmся (с)
--
Regards, LVT.
HikTronic (2010-07-06 22:39:00) [3]что за формула с танком?
Leonid Troyanovsky (2010-07-06 22:38:00) [4]
> HikTronic © (06.07.10 22:27) [31]
> на вкус и цвет..
Дада, фломастеры разные.
Но, формулу c танком я тоже припомнить могу.
--
Regards, LVT.
Leonid Troyanovsky (2010-07-06 22:32:00) [5]
> HikTronic © (06.07.10 22:27) [31]
> мне еще надо с формы передавать сообщения игре - консольные
> команды.
Его зовут клиент-сервер, forever.
--
Regards, LVT.
HikTronic (2010-07-06 22:27:00) [6]
> Лог можно открывать и другой программой, что не в себе.
мне еще надо с формы передавать сообщения игре - консольные команды.
> Оформление - фигня
на вкус и цвет..
Leonid Troyanovsky (2010-07-06 22:21:00) [7]
> HikTronic © (06.07.10 20:50) [28]
> вот на форме у меня tWebBrowser, который этот лог открывает
> в себе параллельно основной программе, т.е. в реальном времени
> видно, что там в логе находится.
Лог можно открывать и другой программой, что не в себе.
Хоть перпендикулярной, но реально видимой, издавна пользуемой.
> всякие фичи по оформлению - цвета,жирность шрифта, всплывающие
> пояснения - поэтому легче визуально
Оформление - фигня, главное в танке - результат.
--
Regards, LVT.
HikTronic (2010-07-06 20:51:00) [8]2Юрий Зотов
я уже получил. да и в 17 посте вроде все понятно, нет?
HikTronic (2010-07-06 20:50:00) [9]я тот еще извращенец. пишу игру на огл, физика box2d, лог пишется в html файл(почему не тхт как у всех? в html есть всякие фичи по оформлению - цвета,жирность шрифта, всплывающие пояснения - поэтому легче визуально воспринимается), так вот на форме у меня tWebBrowser, который этот лог открывает в себе параллельно основной программе, т.е. в реальном времени видно, что там в логе находится. +на форме Edit, куда вводятся консольные команды.
вот. теперь можно меня пинать за индусство и закидывать тапочками
Юрий Зотов (2010-07-06 20:50:00) [10]Бессмысленная каша какая-то. Вы можете на простом русском языке, без всяких терминов, объяснить, что же Вы в итоге хотите получить?
Плохиш (2010-07-06 19:57:00) [11]
> пишу прогу консольную, создаю окно через winapi, инициализирую
> в нем огл, и мне надо в месте с параллельно отрисовкой окна
> и выполнением в ней вычислений отображать форму
> формы, потоки и TWebBrowser
Консольная прога, с окнами на vcl и TWebBrowser. Интересно и какой великий смысл сиих извращений? Вам кто-то сказал, что консольные проги что-то быстрее считают?
HikTronic (2010-07-06 14:23:00) [12]а, точно, якори, совершенно забыл про них, благодарю
sniknik (2010-07-06 12:54:00) [13]> ей можно управлять из кода?
можно.
из кода javascript можно, а значит из дельфи тоже, т.к. из него можно выполнять "внедренные" "скриптики". можно и без яваскрипта "якорями", с ними простым вызовом навигации.
HikTronic (2010-07-06 12:26:00) [14]все работает, еще раз спасибо.
а насчет полосы прокрутки в TWebBrowser никто не знает? ей можно управлять из кода?
HikTronic (2010-07-06 12:18:00) [15]ок, спасибо за доходчивые объяснения, буду делать основной цикл программы в дополнительном потоке, а форму в главном
Deltas (2010-07-06 11:32:00) [16]Если кратко, то
> как в новом потоке правильно вывести форму?
Нельзя работать с VCL в дополнительных потоках.
Deltas (2010-07-06 11:26:00) [17]
> sniknik © (06.07.10 09:30) [19]
> в VCL нормально, это когда формы/визуальная часть располагаются
> в основном потоке
Это не просто нормально, а только так и можно. Концепция Borland такова, что все компоненты VCL работают только в главном потоке, так как они не потокобезопасны.
> при создании потока не с формой, а с вычислениями, например,
> все идет нормально. как пытаюсь засунуть туда форму - тормозит
Если так нужно окно не в главном потоке, то про VCL в этом потоке нужно забыть и работать на чистом Win API. Но это совершенно не обязательно, можно организовать межпоточный обмен сообщениями через PostMessage(), выполняя всю работу с VCL в главном потоке по уведомлениям (через PostMessage()) не главного потока.
sniknik (2010-07-06 09:30:00) [18]> при создании потока не с формой, а с вычислениями, например, все идет нормально. как пытаюсь засунуть туда форму - тормозит.
в VCL нормально, это когда формы/визуальная часть располагаются в основном потоке.
> не очень люблю низкоуровневое на уровне win api
кого это волнует при заявленном
> я окно инициализирую средствами winApi, хочу быть как можно меньше привязан к делфи.
понимаешь, что используя form1:= Tform1.Create(nil); ты уже "привязан" к дельфи и VCL? а значит и к его правилам.
> поэтому не смогу полностью написать замену VCL.
полностью, в одиночку это вряд ли кому дано, но не мешает одиночкам писать без него, реализуя только необходимое. (хотя это в 98% просто понты, в 1.8% учеба, и в остатке необходимость+"разное". ИМХО)
HikTronic (2010-07-06 07:08:00) [19]
> хочешь обойтись без VCL? пиши ему замену. в смысле изучи
> как работает, попробуй на нем, и пиши свое...
не очень люблю низкоуровневое на уровне win api, да и опыта маловато, поэтому не смогу полностью написать замену VCL. весь код, что есть сейчас - метод копипаста из разных источников, чуть переделанный по совету товарища моего, который в этом разбирается. сам я больше люблю алгоритмы, графику, физику и игровую механику.
HikTronic (2010-07-06 07:03:00) [20]давайте поставим вопрос по другому. меня в данный момент вполне устраивает реализация основного цикла. т.к. выдает вполне приличный результат. как в новом потоке правильно вывести форму? при создании потока не с формой, а с вычислениями, например, все идет нормально. как пытаюсь засунуть туда форму - тормозит