<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[QUIK -> DDE &mdash; Библиотеки визуальных элементов GUI в QLua]]></title>
	<link rel="self" href="https://quik2dde.ru/extern.php?action=feed&amp;tid=21&amp;type=atom" />
	<updated>2012-12-25T17:23:32Z</updated>
	<generator>PunBB</generator>
	<id>https://quik2dde.ru/viewtopic.php?id=21</id>
		<entry>
			<title type="html"><![CDATA[Re: Библиотеки визуальных элементов GUI в QLua]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=38#p38" />
			<content type="html"><![CDATA[<p><strong>boris</strong>,<br />но тогда скрипт никогда корректно не завершит работу, верно?</p><p>Собственно проблема как раз в том, чтобы скрипт корректно запускался повторно. Т.к. одн раз он запусакается без проблем, а вот повторно - уже увы.</p><p>[url=http://forum-archive.quik.ru/forum/lua/97061/97171/#m97171]Вот здесь[/url] я задал вопрос разработчикам с описанием простейшего примера работы с wxLua, где точно создается 1 поток в QUIK для LUA-обработчиков, и сравнил с выполнением того же скрипта вызовом LUA из стандартной поставки.<br />На мой взгляд описанный эксперимент красноречиво говорит&nbsp; о том, что при подключении сторонних dll-файлов к QLUA наблюдаются какие-то проблемы, которые явно связаны с самим QLUA-плагином к Quik, а не со сторонней библиотекой.<br />Подождем ответ.</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2012-12-25T17:23:32Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=38#p38</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Библиотеки визуальных элементов GUI в QLua]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=37#p37" />
			<content type="html"><![CDATA[<p>Я делал бесконечный цикл с задержкой в теле main()</p><p>while 1 do <br />sleep(100)<br />end</p>]]></content>
			<author>
				<name><![CDATA[boris]]></name>
				<uri>https://quik2dde.ru/profile.php?id=77</uri>
			</author>
			<updated>2012-12-25T14:02:57Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=37#p37</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Библиотеки визуальных элементов GUI в QLua]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=36#p36" />
			<content type="html"><![CDATA[<p>Есть предложение поделиться наработками по поводу подключения и использования библиотек визуальных элементов в QLUA.</p><p>Начну с себя.<br />Как известно, разработчики приводят в документации пример таблички, говорят, что сделана на <strong>wxLua</strong>.<br />Я пробовал подключить ее и использовать, но пока это не особо увенчалось успехом.</p><p>Например, возьмем простейший пример из поставки wxLua под названием <strong>veryminimal.wx.lua</strong>. Замечу, что в нем содержится функция <strong>main()</strong>, которая в QLUA является обработчиком события с предопределенным названием, поэтому весь полезный код вынесем за пределы этой функции пока, вставим лишь пустую main() чтобы QLUA не ругался. В итоге выкинув все лишнее (комментарии вначале и заполнение package.cpath) получаем:</p><div class="codebox"><pre><code>require(&quot;wx&quot;)

message(&quot;Start&quot;, 1)

frame = wx.wxFrame( wx.NULL, wx.wxID_ANY, &quot;wxLua Very Minimal Demo&quot;,
                    wx.wxDefaultPosition, wx.wxSize(450, 450),
                    wx.wxDEFAULT_FRAME_STYLE )

frame:Show(true)

wx.wxGetApp():MainLoop()

message(&quot;End&quot;, 1)

--------
function main()
end</code></pre></div><p>Если этот текст сохранить в файл и запустить, то получим открывшееся окно, созданное средствами wxLua! Вроде все здорово, и терминал Quik даже работает. Однако, если посмотреть внимательнее, по выясняется:<br />а) Сообщения &quot;End&quot; нет, выведено только &quot;Start&quot;<br />б) Напротив скрипта стоит признак &quot;остановлен&quot; (красный квадрат), хотя наше окно открыто и функционирует.<br />в) Ни один обработчик скрипта LUA не работает (если его дописать, например, onAllTrade).</p><p>Если окно закрыть - увидим сообщение &quot;End&quot;. Выходит, скрипт наш стоял на строке<br /></p><div class="codebox"><pre><code>wx.wxGetApp():MainLoop()</code></pre></div><p>и дальше не шел, что очень грустно.</p><p>Как же работал при этом терминал QUIK?? очевидно, внутри MainLoop() содержится цикл обработки сообщений, который вполне устраивает QUIK (во всяком случае я не нашел проблем).</p><p>Если убрать строку<br /></p><div class="codebox"><pre><code>wx.wxGetApp():MainLoop()</code></pre></div><p>и дополнить функцию main() стандартным ожиданием остановки скрипта - терминал QUIK и вовсе зависает или что-нибудь в этом роде. Т.е. стандартный QUIK&#039;овский обрабтчик сообщений почему-то для wxLua не подходит.</p><p>Хорошо, а что если всю эту фтуковину убрать в main(), где она вроде мешать не будет? просто скопировать в нее весь код да и все, раз уж выхода из него не происходит, пока окно не закроешь?</p><div class="codebox"><pre><code>require(&quot;wx&quot;)

function main()
  message(&quot;Start&quot;, 1)

  frame = wx.wxFrame( wx.NULL, wx.wxID_ANY, &quot;wxLua Very Minimal Demo&quot;,
                      wx.wxDefaultPosition, wx.wxSize(450, 450),
                      wx.wxDEFAULT_FRAME_STYLE )

  frame:Show(true)

  wx.wxGetApp():MainLoop()

  message(&quot;End&quot;, 1)
end</code></pre></div><p>На первый взгляд все хорошо: окно появляется, скрипт во состоянии &quot;работает&quot;, терминал живет. Закрываем окно, скрипт останавливается. Вроде все замечательно, но при повторном запуске скрипта терминал QUIK весь падает с Internal error.</p><p>Что еще придумать - не знаю. Есть ли у кого-нибудь идеи?</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2012-12-23T21:00:27Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=36#p36</id>
		</entry>
</feed>
