<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2722905</guid>
        <pubDate>Mon, 11 Oct 2010 10:19:05 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2722905</link>
        <description><![CDATA[B.V.: Раз возражений нет, добавил описание wxWidgets от MinLexx]]></description>
        <author>B.V.</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2715587</guid>
        <pubDate>Mon, 04 Oct 2010 07:52:00 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2715587</link>
        <description><![CDATA[MinLexx: Подправил <a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2714519' target='_blank'>свой пост</a> ) :blush:<br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Сообщения были разделены в тему &quot;<a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=314863' target='_blank'>как сделать чтобы кансоль не исчезала сразу после выдачи результатов</a>&quot;</span></span>]]></description>
        <author>MinLexx</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2714647</guid>
        <pubDate>Sun, 03 Oct 2010 09:52:29 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2714647</link>
        <description><![CDATA[B.V.: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2714519'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MinLexx &#064; <time class="tag-quote__quoted-time" datetime="2010-10-03T05:17:27+00:00">03.10.10, 05:17</time></span><div class='quote '>достаточно быстрая (нет такого механизма сигналов/слотов, metacall&#39;ов, как в Qt)</div></div><br>
Ну, это довольно расплывчатое преимущество<br>
Можешь его как-нибудь раскрыть? Например, &quot;библиотека проявляет себя быстрее таких-то и таких-то в таких-то задачах (за счет ..)&quot;]]></description>
        <author>B.V.</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2714519</guid>
        <pubDate>Sun, 03 Oct 2010 05:17:27 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2714519</link>
        <description><![CDATA[MinLexx: <strong class='tag-b'>wxWidgets</strong><br>
Кроссплатформенная библиотека, в основном, для GUI, хотя и консольные приложения делать есть возможность. Позволяет создавать приложения для Windows, OS X, Linux/Unix, также для Win Mobile, iPhone SDK. Очень похожа на WinAPI (названия функций, констант, легко привыкаешь после WinAPI). Также есть классы для работы с сетью, файловой системой, итд. Билдится в 2х вариантах - с поддержкой Unicode и без (это кроме вариантов с Debug/Release). Легко строится из сырцов. Имеются сторонние дизайнеры UI (мне нравится wxFormBuilder, например). Как утверждают разработчики, wxWidgets приложения выглядят как родные на каждой платформе, потому что используют нативные элементы управления, а не занимаются эмуляцией GUI (отсюда, в частности, следует минус, что не все элементы ведут себя одинаково на разных платформах).<br>
<br>
<span class="tag-color tag-color-named" data-value="green" style="color: green"><strong class='tag-b'>Плюсы</strong></span><ul class="tag-list"><li>достаточно маленькая (таки меньше Qt)</li><li>соединения событий и обработчиков напоминает систему из MFC со статической таблицей (BEGIN_MESSAGE_MAP / DECLARE_MESSAGE_MAP), равно как и есть возможность динамических соединений</li><li>есть возможность создавать собственные элементы управления</li><li>есть возможность локализации</li><li>Свободное распространение с исходными кодами</li></ul><br>
<span class="tag-color tag-color-named" data-value="red" style="color: red"><strong class='tag-b'>Минусы</strong></span><ul class="tag-list"><li>все-таки недостаточно кроссплатформенная - некоторые функции не работают под Lin/Mac, или наоборот, под Win, или работают по-разному - это надо будет учесть</li><li>документация не всегда внятная - иногда приходится лезть курить примеры или даже ковырять сырцы wxWidgets =)</li><li>LGPL таки не совсем свободная лицензия</li><li>статически слинкованные с либой бинарники, все-таки, маленькими не назовешь</li></ul><br>
 :blush: чего бы ещё такое вспомнить, с ходу...]]></description>
        <author>MinLexx</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2697649</guid>
        <pubDate>Wed, 15 Sep 2010 15:58:28 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2697649</link>
        <description><![CDATA[B.V.: Мне есть чем заняться. Повстанець<br>Но я бы с удовольствием почитал твой спор с каким-нибудь &quot;функциональщиком&quot; на тему полезности WTL, в Холиварах]]></description>
        <author>B.V.</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2697487</guid>
        <pubDate>Wed, 15 Sep 2010 12:55:55 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2697487</link>
        <description><![CDATA[Повстанець: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2697398'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2010-09-15T11:45:23+00:00">15.09.10, 11:45</time></span><div class='quote '>Ничто не мешает выписать в небольшой namespace набор перегруженных функций OnCtlColor и использовать их по всему проекту, если говорить по практической части. Выйдет короче и удобнее</div></div>Никто не мешает. И может даже это будет короче. Но никак не удобнее. Это программирование свалкой. Тебе всегда необходимо будет помнить как работает эта система. В то время, как у меня будет просто контрол colored_static, у которого есть два расширяющих обычный статик метода. Как он работает я могу забыть сразу же, как только написал. Тем более дальнейшее расширение системы только усугубит свалку, в то время, как в WTL ничего особо и придумывать не придётся:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">class next_generation_static : public CWindowImpl&#60;next_generation_static, colored_static&#62;,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;public some_other_ext_1&#60;next_generation_static&#62;,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;public some_other_ext_2&#60;next_generation_static&#62;,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;public some_other_ext_3&#60;next_generation_static&#62;</div><div class="code_line">{</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;BEGIN_MSG_MAP(next_generation_static)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CHAIN_MSG_MAP(some_other_ext_1&#60;next_generation_static&#62;)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CHAIN_MSG_MAP(some_other_ext_2&#60;next_generation_static&#62;)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CHAIN_MSG_MAP(some_other_ext_3&#60;next_generation_static&#62;)</div><div class="code_line">&nbsp;&nbsp; &nbsp;END_MSG_MAP()</div><div class="code_line">};</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2697398'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2010-09-15T11:45:23+00:00">15.09.10, 11:45</time></span><div class='quote '>А меня устраивает. Еще раз: все преимущества по удобству в WTL нивелируются необходимостью прописывания ООП-конструкций. Ты посмотри, сколько ООП-каши в твоем коде. Если подсчитать буковки на WinAPI и твоего кода, боюсь, на WinAPI может выйти даже меньше.</div></div>Ну... количество буковок не показатель простоты системы. Но хорошие ООП-конструкции (хорошая архитектура) может и приводят к бОльшему количеству работы и Большей писанины в начале проекта, но уже ближе к середине и даже раньше идут чистые бонусы, как в удобстве работы с ней, так и в количестве буковок.<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2697398'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2010-09-15T11:45:23+00:00">15.09.10, 11:45</time></span><div class='quote '>Быть может, в масштабах очень большого проекта все эти мелочи действительно помогут избежать написания лишних нескольких десятков строк кода, но если брать каждую отдельно взятую задачу (из приведенных, по крайней мере), то WTL или не перекрывает, или крайне незначительно перекрывает WinAPI-код в плане упрощения</div></div>Крайне несогласен. Уверен, даже на маленьких проектах использование ООП (в частности WTL) сделает код много проще и лаконичнее. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2010-09-15T13:01:42+00:00">15.09.10, 13:01</time></span></span><br>
Кстати, ведь последнее утверждение всегда можно и проверить. Как на счёт реализации тех же самых цветных контролов на винапи ну и немного погонять их в действии. Скажем один эдит, два радио баттона, немного текста и кнопка. В эдите набираешь цвет, в радиобатонами выбираешь цвет фона, или текста менять, а баттоном собственно меняешь эти показатели у всех контролов. Простенько и со вкусом.]]></description>
        <author>Повстанець</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2697398</guid>
        <pubDate>Wed, 15 Sep 2010 11:45:23 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2697398</link>
        <description><![CDATA[B.V.: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2697368'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Повстанець &#064; <time class="tag-quote__quoted-time" datetime="2010-09-15T11:14:57+00:00">15.09.10, 11:14</time></span><div class='quote '>Не. Совместимых. Хотя, как с MFC я не знаю, не особо то владею этой библиотекой. Может она и юзает ATL где-то в своих недрах.</div></div><br>
Ты хоть не поленись почитать MSDN по моей ссылке<br>
Классы ATL используются в MFC<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2697368'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Повстанець &#064; <time class="tag-quote__quoted-time" datetime="2010-09-15T11:14:57+00:00">15.09.10, 11:14</time></span><div class='quote '>Но вот то, что у ATL точно никаких зависимостей от MFC нет, это 100%.</div></div><br>
Кто-то где-то с этим спорил?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2697368'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Повстанець &#064; <time class="tag-quote__quoted-time" datetime="2010-09-15T11:14:57+00:00">15.09.10, 11:14</time></span><div class='quote '>В корне не устраивает нас (меня, во всяком случае) такое положение вещей</div></div><br>
А меня устраивает. Еще раз: все преимущества по удобству в WTL нивелируются необходимостью прописывания ООП-конструкций. Ты посмотри, сколько ООП-каши в твоем коде. Если подсчитать буковки на WinAPI и твоего кода, боюсь, на WinAPI может выйти даже меньше.<br>
У WTL в этом отношении только одно преимущество: более элегантный код за счет применения ООП. И это преимущество я упомянул<br>
Быть может, в масштабах очень большого проекта все эти мелочи действительно помогут избежать написания лишних нескольких десятков строк кода, но если брать каждую отдельно взятую задачу (из приведенных, по крайней мере), то WTL или не перекрывает, или крайне незначительно перекрывает WinAPI-код в плане упрощения<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2697368'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Повстанець &#064; <time class="tag-quote__quoted-time" datetime="2010-09-15T11:14:57+00:00">15.09.10, 11:14</time></span><div class='quote '>А на винапи как это сделать?</div></div><br>
Ничто не мешает выписать в небольшой namespace набор перегруженных функций OnCtlColor и использовать их по всему проекту, если говорить по практической части. Выйдет короче и удобнее]]></description>
        <author>B.V.</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2697368</guid>
        <pubDate>Wed, 15 Sep 2010 11:14:57 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2697368</link>
        <description><![CDATA[Повстанець: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696748'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2010-09-14T13:36:16+00:00">14.09.10, 13:36</time></span><div class='quote '>Не совместимых, а совместных</div></div>Не. Совместимых. Хотя, как с MFC я не знаю, не особо то владею этой библиотекой. Может она и юзает ATL где-то в своих недрах. Но вот то, что у ATL точно никаких зависимостей от MFC нет, это 100%.<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696748'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2010-09-14T13:36:16+00:00">14.09.10, 13:36</time></span><div class='quote '>Положим, создание окна сводится не к 10 строчкам, как в случае с WinAPI, а к двум-трем. Но, во-первых, окна в проекте не так уж и часто приходится создавать. Во-вторых, все это упрощение нивелируется необходимостью прописывать рутинные конструкции для ООП. Два остальных примера не убедили. Сабклассинг в WinAPI выполняется в две строчки, а OD, в зависимости от э.у., представляет собой или простую обработку двух сообщений, или обработку WM_PAINT в сабклассинге</div></div>Ты просто не понимаешь, как это всё можно использовать. Вот к примеру, возьмём такое свойство некоторых контролов, как смена расцветки. На винапи это у нас сообщения от WM_CTLCOLORMSGBOX до WM_CTLCOLORSTATIC. В корне не устраивает нас (меня, во всяком случае) такое положение вещей и мы принялись писать генерализацию. И вот я тут на скорую руку налобал:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">template &#60;typename wnd_class&#62;</div><div class="code_line">class color_control</div><div class="code_line">{</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;BEGIN_MSG_MAP(color_control&#60;wnd_class&#62;)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MESSAGE_RANGE_HANDLER(OCM_CTLCOLORMSGBOX, OCM_CTLCOLORSTATIC, _on_ctlcolor_xxx)</div><div class="code_line">&nbsp;&nbsp; &nbsp;END_MSG_MAP()</div><div class="code_line">&nbsp;</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;LRESULT _on_ctlcolor_xxx(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &amp;bHandled)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CDCHandle dc((HDC)wParam);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;dc.SetBkMode(TRANSPARENT);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;dc.SetTextColor(_text_color);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return (LRESULT)(HBRUSH)_bckgnd_brush;</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;WTL::CBrush _bckgnd_brush;</div><div class="code_line">&nbsp;&nbsp; &nbsp;COLORREF _text_color;</div><div class="code_line">&nbsp;</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp; &nbsp;color_control()</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;_bckgnd_brush.CreateSolidBrush(RGB(255, 255, 255));</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;_text_color = RGB(0, 0, 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;COLORREF set_bckground_color(COLORREF color)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;LOGBRUSH lbrush;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;_bckgnd_brush.GetLogBrush(&amp;lbrush);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;_bckgnd_brush.DeleteObject();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;_bckgnd_brush.CreateSolidBrush(color);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;static_cast&#60;wnd_class*&#62;(this)-&#62;RedrawWindow();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return lbrush.lbColor;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;COLORREF set_text_color(COLORREF color)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;COLORREF old = _text_color;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;_text_color = color;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;static_cast&#60;wnd_class*&#62;(this)-&#62;RedrawWindow();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return old;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">template&#60;typename base_control_class&#62;</div><div class="code_line">class color_common_control : public CWindowImpl&#60;color_common_control&#60;base_control_class&#62;, base_control_class&#62;,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public color_control&#60;color_common_control&#60;base_control_class&#62;&#62;</div><div class="code_line">{</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;BEGIN_MSG_MAP(color_common_control&#60;base_control_class&#62;)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CHAIN_MSG_MAP(color_control&#60;color_common_control&#60;base_control_class&#62;&#62;)</div><div class="code_line">&nbsp;&nbsp; &nbsp;END_MSG_MAP()</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">typedef color_common_control&#60;CStatic&#62; colored_static;</div><div class="code_line">typedef color_common_control&#60;CEdit&#62; colored_edit;</div><div class="code_line">typedef color_common_control&#60;CButton&#62; colored_button;</div><div class="code_line">//ну и так далее</div></ol></div></div></div></div>А на винапи как это сделать? :)]]></description>
        <author>Повстанець</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2696748</guid>
        <pubDate>Tue, 14 Sep 2010 13:36:16 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2696748</link>
        <description><![CDATA[B.V.: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696732'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Повстанець &#064; <time class="tag-quote__quoted-time" datetime="2010-09-14T13:13:17+00:00">14.09.10, 13:13</time></span><div class='quote '>Нет, не идёт. Даже не является официальным продуктом майкрософт. </div></div><br>
Надо же. Выходит, я WTL совсем не знаю<br>
До сих пор думал, что она ставится при полной установке студии. Сейчас сходил на сайт проекта, и почитал о положении вещей<br>
Однако :) Что ж, буду знать.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696732'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Повстанець &#064; <time class="tag-quote__quoted-time" datetime="2010-09-14T13:13:17+00:00">14.09.10, 13:13</time></span><div class='quote '>Там только список совместимых классов.</div></div><br>
Не совместимых, а совместных<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696732'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Повстанець &#064; <time class="tag-quote__quoted-time" datetime="2010-09-14T13:13:17+00:00">14.09.10, 13:13</time></span><div class='quote '>Создание пользовательского окна, с регистрацией класса:</div></div><br>
Положим, создание окна сводится не к 10 строчкам, как в случае с WinAPI, а к двум-трем. Но, во-первых, окна в проекте не так уж и часто приходится создавать. Во-вторых, все это упрощение нивелируется необходимостью прописывать рутинные конструкции для ООП. Два остальных примера не убедили. Сабклассинг в WinAPI выполняется в две строчки, а OD, в зависимости от э.у., представляет собой или простую обработку двух сообщений, или обработку WM_PAINT в сабклассинге]]></description>
        <author>B.V.</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2696732</guid>
        <pubDate>Tue, 14 Sep 2010 13:13:17 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2696732</link>
        <description><![CDATA[Повстанець: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696702'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2010-09-14T12:20:36+00:00">14.09.10, 12:20</time></span><div class='quote '>Только ведь WTL идет в комплекте со студией</div></div>Нет, не идёт. Даже не является официальным продуктом майкрософт. :) <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696702'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2010-09-14T12:20:36+00:00">14.09.10, 12:20</time></span><div class='quote '>Да ладно?</div></div>Там только список совместимых классов.<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696702'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2010-09-14T12:20:36+00:00">14.09.10, 12:20</time></span><div class='quote '>Ну, приведи несколько конкретных примеров, где было бы заметно существенное упрощение кода? А то, так мы говорим ни о чем</div></div>Создание пользовательского окна, с регистрацией класса:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">class CCustomWindow : public CWindowImpl&#60;CCustomWindow, CWindow&#62;</div><div class="code_line">{</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;DECLARE_WND_CLASS_EX(&quot;CCustomWindow&quot;, CS_HREDRAW | CS_VREDRAW, COLOR_WINDOW)</div><div class="code_line">&nbsp;</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;BEGIN_MSG_MAP(CCustomWindow)</div><div class="code_line">&nbsp;&nbsp; &nbsp;END_MSG_MAP()</div><div class="code_line">};</div></ol></div></div></div></div><br>
<br>
Сабклассинг:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">class CCustomButton : public CWindowImpl&#60;CCustomButton, CButton&#62;</div><div class="code_line">{</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;BEGIN_MSG_MAP(CCustomButton)</div><div class="code_line">&nbsp;&nbsp; &nbsp;END_MSG_MAP()</div><div class="code_line">};</div></ol></div></div></div></div><br>
<br>
Овнердрав:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">class CCustomWindow : public CWindowImpl&#60;CCustomWindow, CWindow&#62;,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public COwnerDraw&#60;CCustomWindow&#62;</div><div class="code_line">{</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;DECLARE_WND_CLASS_EX(&quot;CCustomWindow&quot;, CS_HREDRAW | CS_VREDRAW, COLOR_WINDOW)</div><div class="code_line">&nbsp;</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;BEGIN_MSG_MAP(CCustomButton)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CHAIN_MSG_MAP(COwnerDraw&#60;CCustomWindow&#62;)</div><div class="code_line">&nbsp;&nbsp; &nbsp;END_MSG_MAP()</div><div class="code_line">&nbsp;</div><div class="code_line">private:</div><div class="code_line">&nbsp;&nbsp; &nbsp;void DrawItem(LPDRAWITEMSTRUCT pDIS)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">};</div></ol></div></div></div></div>Но я так овнердрав не юзал никогда, ибо этот способ диктуется кривизной апи. Я обычно сабклассил кнопку, подключал к ней COwnerDraw, реализовывал его прямо в обработчике сообщений кнопки. Потом вставлял в карту сообщений родительского окна кнопки REFLECT_NOTIFICATIONS(), так чтобы овнердрав-сообщение возвращалось обратно к кнопке и получал абсолютно самодостаточную пользовательскую кнопку. Для переноса и повторного использования которой не приходилось бы методом копипаста выдирать код из портянки-функции обработки сообщений родительского окна, как в винапи.]]></description>
        <author>Повстанець</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2696702</guid>
        <pubDate>Tue, 14 Sep 2010 12:20:36 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2696702</link>
        <description><![CDATA[B.V.: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696375'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Повстанець &#064; <time class="tag-quote__quoted-time" datetime="2010-09-13T20:39:24+00:00">13.09.10, 20:39</time></span><div class='quote '>Если начинающий пользователь ставит на студию стороннюю GUI библиотеку, то он наверняка прочтёт инструкцию к установке и заинсталлит шаблоны проектов из пакета.</div></div><br>
Только ведь WTL идет в комплекте со студией<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696375'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Повстанець &#064; <time class="tag-quote__quoted-time" datetime="2010-09-13T20:39:24+00:00">13.09.10, 20:39</time></span><div class='quote '>ATL к MFC вообще никакого отношения не имеет. Это полностью самостоятельная библиотека.</div></div><br>
<a class='tag-url' href='http://msdn.microsoft.com/en-us/library/ekdt199a.aspx' target='_blank'>Да ладно?</a><br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696375'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Повстанець &#064; <time class="tag-quote__quoted-time" datetime="2010-09-13T20:39:24+00:00">13.09.10, 20:39</time></span><div class='quote '>Во первых на рутине. Очень много в винапи рутины. И очень много из неё берёт на себя WTL.</div></div><br>
Ну, приведи несколько конкретных примеров, где было бы заметно существенное упрощение кода? А то, так мы говорим ни о чем<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696375'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Повстанець &#064; <time class="tag-quote__quoted-time" datetime="2010-09-13T20:39:24+00:00">13.09.10, 20:39</time></span><div class='quote '>Напротив, WTL написан на основе ATL. Во первых, в WTLе ATLная архитектура. Во вторых, все базовые классы WTL есть базовыми классами ATL, что делает эти библиотеки совместимыми.</div></div><br>
Об архитектуре знал, а вот о том, что классы WTL наследуются от базовых ATL, каюсь, не знал. Сказывается малый опыт работы с библиотекой. Ок, этот момент я поправлю, спасибо за подсказку :)]]></description>
        <author>B.V.</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2696400</guid>
        <pubDate>Mon, 13 Sep 2010 23:43:42 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2696400</link>
        <description><![CDATA[Повстанець: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696398'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2010-09-13T23:34:04+00:00">13.09.10, 23:34</time></span><div class='quote '>А мне Win32 нравится. На нём и пишу, родимом. Гибче не встречал.</div></div>Если нравится Win32, то должен понравится и WTL. :rolleyes: Если, конечно, на нём уже не пишешь.]]></description>
        <author>Повстанець</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2696398</guid>
        <pubDate>Mon, 13 Sep 2010 23:34:04 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2696398</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696375'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Повстанець &#064; <time class="tag-quote__quoted-time" datetime="2010-09-13T20:39:24+00:00">13.09.10, 20:39</time></span><div class='quote '>Единственное, что омрачает использование WTL -- так это то, что она не абстрагирует тебя от корявости и тупости архитектуры самого WinApi.</div></div>А мне Win32 нравится. На нём и пишу, родимом. Гибче не встречал.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2696375</guid>
        <pubDate>Mon, 13 Sep 2010 20:39:24 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2696375</link>
        <description><![CDATA[Повстанець: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696370'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2010-09-13T20:20:40+00:00">13.09.10, 20:20</time></span><div class='quote '>Начнем с того, что в студии не предусмотрено шаблонов проектов WTL. А именно на это будет смотреть любой начинающий пользователь</div></div>Если начинающий пользователь ставит на студию стороннюю GUI библиотеку, то он наверняка прочтёт инструкцию к установке и заинсталлит шаблоны проектов из пакета.<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696370'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2010-09-13T20:20:40+00:00">13.09.10, 20:20</time></span><div class='quote '>Сэкономить на чем?</div></div>Во первых на рутине. Очень много в винапи рутины. И очень много из неё берёт на себя WTL. Во вторых сам по себе WTL можно сказать в чём то гениален, как сферическая библиотека в вакууме, я имею в виду. До примитивного простая архитектура, но при этом она очень гибка и очень удобна. Расширяемость делается в два счёта. Реюзабельность расширений полная. Гибкость тех же расширений на высоте. Единственное, что омрачает использование WTL -- так это то, что она не абстрагирует тебя от корявости и тупости архитектуры самого WinApi.<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696370'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2010-09-13T20:20:40+00:00">13.09.10, 20:20</time></span><div class='quote '>COM&#39;ом занимается ATL, библиотека, являющаяся неотъемлемой частью MFC</div></div>ATL к MFC вообще никакого отношения не имеет. Это полностью самостоятельная библиотека. Напротив, WTL написан на основе ATL. Во первых, в WTLе ATLная архитектура. Во вторых, все базовые классы WTL есть базовыми классами ATL, что делает эти библиотеки совместимыми. Ну и в третьих WTL собственно и делали легковесной надстройкой над ATL специально, чтобы при работе с СОМ, при необходимости использовать GUI не заморачиватся с WinApi и не подтягивать такую лошадь, как MFC.]]></description>
        <author>Повстанець</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2696370</guid>
        <pubDate>Mon, 13 Sep 2010 20:20:40 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2696370</link>
        <description><![CDATA[B.V.: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696253'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Повстанець &#064; <time class="tag-quote__quoted-time" datetime="2010-09-13T18:12:52+00:00">13.09.10, 18:12</time></span><div class='quote '>Не знаю, что подразумевается под словом &quot;собственный&quot;, но он такой же не &quot;собственный&quot; как и у MFC.</div></div><br>
Начнем с того, что в студии не предусмотрено шаблонов проектов WTL. А именно на это будет смотреть любой начинающий пользователь<br>
И шаблоны MFC непосредственно перед созданием проекта предоставляют настройки для GUI, на базе шаблонов диалогов. В случае с WTL, все диалоги придется настраивать вручную. Второй момент -- я в статье подчеркнул, что конструктор диалогов не относится к MFC и IDE вообще, его функции выполняет редактор ресурсов<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696253'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Повстанець &#064; <time class="tag-quote__quoted-time" datetime="2010-09-13T18:12:52+00:00">13.09.10, 18:12</time></span><div class='quote '>А если взять в сыром виде WTL vs WinApi, то WTL способен экономить десятки человекочасов</div></div><br>
Сэкономить на чем? Он не оборачивает окна уровнем выше MFC, он не предоставляет даже классов для рисования, и он не упрощает работу с COM. COM&#39;ом занимается ATL, библиотека, являющаяся неотъемлемой частью MFC <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2010-09-13T20:21:48+00:00">13.09.10, 20:21</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2696253'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Повстанець &#064; <time class="tag-quote__quoted-time" datetime="2010-09-13T18:12:52+00:00">13.09.10, 18:12</time></span><div class='quote '>Ну это так... не холивара ради, а просто к слову. </div></div><br>
Конструктивная критика приветствуется, только в меру :) А то, сколько людей, столько и мнений<br>
<br>
По Qt как, возражений более нет?]]></description>
        <author>B.V.</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2696253</guid>
        <pubDate>Mon, 13 Sep 2010 18:12:52 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2696253</link>
        <description><![CDATA[Повстанець: 2 слова на счёт WTL. Во первых там таки есть конструктор форм. Не знаю, что подразумевается под словом &quot;собственный&quot;, но он такой же не &quot;собственный&quot; как и у MFC. И функционал предоставляет такой же. И вообще это конструктор не MFC, а встроенный в студию. И адаптируется он под конкретную либу посредством набора скриптов и шаблонов кода. Так что либо в MFC надо убрать из плюсов, либо в WTL убрать из минусов. Ну это ИМХО. Так же смутила строка<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2681528'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2010-08-28T09:21:28+00:00">28.08.10, 09:21</time></span><div class='quote '>Весьма незначительно упрощает работу, по сравнению с &quot;голым&quot; Win32 API</div></div>Тут как бы всё относительно. Если брать относительно мощности хотя бы MFC, то таки да. Незначительно. А если взять в сыром виде WTL vs WinApi, то WTL способен экономить десятки человекочасов. А если брать связку WTL+ATL для работы с СОМ (собственно для чего это всё и затеивалось), то тут вообще сплошная прибыль идёт. Так что в корне не согласен я с такой постоновкой. Ну это так... не холивара ради, а просто к слову.]]></description>
        <author>Повстанець</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685665</guid>
        <pubDate>Thu, 02 Sep 2010 09:47:32 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685665</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685603'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2010-09-02T09:05:49+00:00">02.09.10, 09:05</time></span><div class='quote '>D_KEY, чем спорить, предложи свое видение плюсов и минусов :)<br>
Если несогласных не будет, его и добавим</div></div><br>
Хорошо, но не раньше выходных. И я не спорю, просто высказал свое мнение по одному отдельновзятому минусу :)]]></description>
        <author>D_KEY</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685603</guid>
        <pubDate>Thu, 02 Sep 2010 09:05:49 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685603</link>
        <description><![CDATA[B.V.: D_KEY, чем спорить, предложи свое видение плюсов и минусов :)<br>Если несогласных не будет, его и добавим<br><br>smalcom, к тебе то же самое&#33; Критика-критикой, но лучше всего, изложи свое видение Qt. Быть может, оно получится более объективным]]></description>
        <author>B.V.</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685438</guid>
        <pubDate>Thu, 02 Sep 2010 07:06:48 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685438</link>
        <description><![CDATA[smalcom: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>сли вы можете предоставить юзеру &quot;ability to relink&quot;</div></div><br>
вобщем с вами все ясно.<br>
<br>
-a на -p заменить? жгите дальше, умничка.]]></description>
        <author>smalcom</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685437</guid>
        <pubDate>Thu, 02 Sep 2010 07:05:49 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685437</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685269'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Adil &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T21:22:36+00:00">01.09.10, 21:22</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685252'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T20:33:39+00:00">01.09.10, 20:33</time></span><div class='quote '>Цитата (Adil @ 29.08.10, 17:36)<br>
Не совсем интуитивно понятная,<strong class='tag-b'> особенно для новичка</strong>, система обработки событий SIGNAL-SLOT<br>
<br>
Хм... По-моему наоборот все просто. </div></div>Ты считаешь себя новичком?</div></div><br>
А ты ;) ?<br>
С чего ты решил, что новичкам это интуитивно не понятно? Вполне логичная и простая концепция.<br>
В общем, как мне кажется, это зависит от человека, поэтому заносить это в недостатки Qt считаю неверным решением.]]></description>
        <author>D_KEY</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685430</guid>
        <pubDate>Thu, 02 Sep 2010 06:57:27 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685430</link>
        <description><![CDATA[mitrich: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685299'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Adil &#064; <time class="tag-quote__quoted-time" datetime="2010-09-02T01:10:27+00:00">02.09.10, 01:10</time></span><div class='quote '>Если вы можете предоставить юзеру &quot;ability to relink&quot;, дав ему только свой исполняемый файл (и кучу длл в придачу), то вы просто обязаны осчастливить мир своим открытием. :blush:</div></div><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685299'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Adil &#064; <time class="tag-quote__quoted-time" datetime="2010-09-02T01:10:27+00:00">02.09.10, 01:10</time></span><div class='quote '>The LGPL carries some restrictions regarding the ability for users to relink <strong class='tag-b'>libraries</strong></div></div><br>
Вот эти самые <strong class='tag-b'>libraries</strong> можно взять, поковыряться в исходниках, пересобрать и заменить одну dll-ку на другую. Главное - API оставить таким же.]]></description>
        <author>mitrich</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685299</guid>
        <pubDate>Thu, 02 Sep 2010 01:10:27 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685299</link>
        <description><![CDATA[Adil: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685286'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T22:54:05+00:00">01.09.10, 22:54</time></span><div class='quote '>до вас видимо совсем не доходит значение русских слов. если вы иностранец и значения слов вам непонятны, то так и скажите - исправимся и будем иными путями доносить информацию</div></div>Ну, расскажите по русски, какая связь между emerge и win7<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685286'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T22:54:05+00:00">01.09.10, 22:54</time></span><div class='quote '>пардон, протупил. но, название раздела &quot;Системное программирование и WinAPI&quot;. Что, только под винду бывает системное программирование или вы больше ничего не знаете кроме Windows и VCL?</div></div>И продолжаете тупить, переходя на хамство, не соображая что этот раздел - именно для системного программирования под виндоуз. Не верите - запостите вопрос по системному программированию по *nix.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685286'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T22:54:05+00:00">01.09.10, 22:54</time></span><div class='quote '>sudo emerge -uDNav world</div></div>И что - обновление мира - и динамически завязанные пакеты вдруг не будут пересобираться? Вы брякаете с умным видом фразы невпопад, думая, что я буду в шоке от величия вашего гения? Кстати, -a - лишнее, лучшее -p<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685286'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T22:54:05+00:00">01.09.10, 22:54</time></span><div class='quote '>Холиварить я и не пытаюсь. Если уж возникло такое двойственное впечатление, то давайте все разложим по полочкам</div></div>Не двойственное, вполне чёткое. <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685286'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T22:54:05+00:00">01.09.10, 22:54</time></span><div class='quote '>П... пардон за выражение. С вами все ясно: &quot;нууу кутэ я щупал, слышал&quot;. Наверняка вы лепите гуишечки при помощи билдера и вам просто надо оправдать перед обществом свою ошибку.</div></div>Э-э, какую ошибку? И не гадайте на кофейной гуще - я начал писать c Qt-embedded, когда вы еще только учились делать make install для ядра, попутно матеря дающих вам добрые советы. И потом еще извинялись. Как бы опять не пришлось - за эти годы благоразумия вы не поднакопили.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685286'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T22:54:05+00:00">01.09.10, 22:54</time></span><div class='quote '>Одна копия исполняемого кода библиотеки находится в оперативной памяти. Только одна копия и эта цифра независит от количества приложений, которые ее используют.</div></div>Ну вы остановились в полшаге от озарения, что если при поставке динамически слинкованного приложения придется еще и запихивать в дистрибутив всю библиотеку целиком, или заставлять юзера её качать - речь идёт о винде, не забывайте, там, как я уже упоминал, Qt с системой не поставляется. Или вы будете спорить с тем, что при статической линковке далеко не весь код библиотеки линкуется в исполняемый файл. <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685286'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T22:54:05+00:00">01.09.10, 22:54</time></span><div class='quote '>Пока человек новичок события и привязки сами создаются?</div></div>Открою великую тайну - да&#33; Довольно много начинающих пользователей событий VCL понятия не имеют, что скрывается под &quot;TNotifyEvent&quot;.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685286'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T22:54:05+00:00">01.09.10, 22:54</time></span><div class='quote '>Вы рассуждаете о дистрибуции приложения под LGPL лицензией(причем неверно), а также BSD и MIT. Это не говорит о лицензиях, но о вашей компетенции в данном вопросе.</div></div> Так это ваша цель - указать собеседнику на его некомпетентность, да еще просто заявляя, что &quot;да вы и ни писали ни чего&quot;. Хороший подход для хорошего тролля. Я тогда покажу вашу некомпетентность более убедительным способом <br>
<a class='tag-url' href='http://qt.nokia.com/about/licensing/frequently-asked-questions#what-is-the-lgpl' target='_blank'>http://qt.nokia.com/about/licensing/freque...hat-is-the-lgpl</a><div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>...The LGPL carries some restrictions regarding the<strong class='tag-b'> ability for users to relink libraries</strong> and other restrictions that may impose architectural requirements that some organizations might not be comfortable with...</div></div>Если вы можете предоставить юзеру &quot;ability to relink&quot;, дав ему только свой исполняемый файл (и кучу длл в придачу), то вы просто обязаны осчастливить мир своим открытием. :blush:]]></description>
        <author>Adil</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685286</guid>
        <pubDate>Wed, 01 Sep 2010 22:54:05 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685286</link>
        <description><![CDATA[smalcom: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>В семерке есть emerge?</div></div><br>
до вас видимо совсем не доходит значение русских слов. если вы иностранец и значения слов вам непонятны, то так и скажите - исправимся и будем иными путями доносить информацию<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Раздела? Вы всегда так внимательны? </div></div><br>
пардон, протупил. но, название раздела &quot;Системное программирование и WinAPI&quot;. Что, только под винду бывает системное программирование или вы больше ничего не знаете кроме Windows и VCL?<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Доказательства быстроты я тоже не увидел. Если &quot;брехня&quot; - это доказательство, тогда я тоже привёл.</div></div><br>
Извиняюсь(как говорил слонёнок) но вы первым обосрали Qt так что извольте и предоставить доказательство, иначе это считается пусканием пузырей в луже посредством пропускания биогазов через собственую прямую кишку.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Расскажите это тем кто перешел с тройки на четверку.</div></div><br>
П... пардон за выражение. С вами все ясно: &quot;нууу кутэ я щупал, слышал&quot;. Наверняка вы лепите гуишечки при помощи билдера и вам просто надо оправдать перед обществом свою ошибку.<br>
Если вы иностранец и не поняли(ааа, у вас же только виндовс в голове), то смена мажорного релиза это все равно что поменять Win98 на WinXP.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '> А еще лучше вспомните, раз уж такой знаток emerge, о пересборке всего, что только попадёт под руку, при смене релиза Qt. Даже с только динамической зависимостью от последней.</div></div><br>
sudo emerge -uDNav world<br>
<br>
Холиварить я и не пытаюсь. Если уж возникло такое двойственное впечатление, то давайте все разложим по полочкам<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Да еще не помните, что сами написали &quot;статически слинкованной&quot;. Покажите исходник c QMainWindow, который со статической линковкой Qt даст</div></div><br>
Мерять объём библиотеки используя статическую линковку некорректно. О чем я и намекнул объёмом приложения, который даёт даже простейший HelloWorld. Суть библиотеки в том что она разделяемая и все приложения ее использующие не будут весить по 4-5 мегабайт. Верно ведь?<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>И куда, кстати, &quot;вес&quot; библиотеки деётся при динамической линковке вы похоже тоже не знаете</div></div><br>
Одна копия исполняемого кода библиотеки находится в оперативной памяти. Только одна копия и эта цифра независит от количества приложений, которые ее используют.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Наличие или отсутствие моих продуктов под той или иной лицензией как то влияет на разницу в ограничениях лицензий LGPL, BSD или MIT?</div></div><br>
Вы рассуждаете о дистрибуции приложения под LGPL лицензией(причем неверно), а также BSD и MIT. Это не говорит о лицензиях, но о вашей компетенции в данном вопросе.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>И причем тут это объявление типа? Новичок когда его увидит - уже не новичок.</div></div><br>
Пока человек новичок события и привязки сами создаются?<br>
<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Ты считаешь себя новичком?</div></div><br>
Это я холиварю? На лицо моральное давление на чужое мнение. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2010-09-01T23:01:55+00:00">01.09.10, 23:01</time></span></span><br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '> только про минусы не забудьте</div></div><br>
конечно я знаю минусы Qt: layout&#39;ы для новичка, загрязненность QObject, нюансы при работе с сигналами и таймерами, неочевидные и ненастравиваемые моменты есть и в QtCreator. Вот видите сколько недостатков(объективных) сходу, а не &quot;медлительна и прожорлива&quot;.]]></description>
        <author>smalcom</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685269</guid>
        <pubDate>Wed, 01 Sep 2010 21:22:36 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685269</link>
        <description><![CDATA[Adil: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685223'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T19:59:23+00:00">01.09.10, 19:59</time></span><div class='quote '>как пример приведён гуй семёрки.</div></div>В семерке есть emerge? O_o.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685223'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T19:59:23+00:00">01.09.10, 19:59</time></span><div class='quote '>Графический интерфейс пользователя в приложениях на языке C++</div></div>Раздела? Вы всегда так внимательны? :no-sad: <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685223'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T19:59:23+00:00">01.09.10, 19:59</time></span><div class='quote '>но доказательств медлительности так и не предоставлено</div></div>Доказательства быстроты я тоже не увидел. Если &quot;брехня&quot; - это доказательство, тогда я тоже привёл. :ph34r: <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685223'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T19:59:23+00:00">01.09.10, 19:59</time></span><div class='quote '>Для разработчика приложений на Qt требуется только динамическая библиотека и заголовочный файл, для пользователя - только библиотека. При выходе новой версии библиотеки ничего пересобирать не надо, тк апи у кутэ довольно стабилен.</div></div>Расскажите это тем кто перешел с тройки на четверку. А еще лучше вспомните, раз уж такой знаток emerge, о пересборке всего, что только попадёт под руку, при смене релиза Qt. Даже с только динамической зависимостью от последней.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685223'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T19:59:23+00:00">01.09.10, 19:59</time></span><div class='quote '><div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
Довольно тяжеловесна - исполняемый файл win32 со <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">статически прилинкованной библиотекой </span></strong> весит от 4-5 МБт</div></div><br>
<br>
изначально говорит о незнании других способов линковки и содержимого лицензий </div></div>Изначально говорит о том, что вы читать совсем не умеете. Да еще не помните, что сами написали &quot;статически слинкованной&quot;. Покажите исходник c QMainWindow, который со статической линковкой Qt даст, как вы сказали, 500 Кб на win32. Вы не знаете разницу между консолью и ГУИ? Вы просто ни разу не линковали статически Qt. И куда, кстати, &quot;вес&quot; библиотеки деётся при динамической линковке вы похоже тоже не знаете. Просто исчезает. И думаете, что просто так сравнивается &quot;вес&quot; именно статически слинкованных приложений.<br>
И причем тут &quot;вес&quot; и лицензия? :wacko: В огороде бузина, в Киеве дядька.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685223'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T19:59:23+00:00">01.09.10, 19:59</time></span><div class='quote '>можно ли в VCL подключать источники событий к другим источникам, порождая цепочки событий, или несколько источников к одному приемнику?</div></div>Вы, извиняюсь, в какой класс ходите? Логика то где - ваши слова о цепочках и нескольких источниках очень убедительно подтверждают &quot;интуитивную простоту для новичка сигналов и слотов&quot;?  :lol: Вы уже спорите о гибкости и возможностях, хотя я об этом ни слова не сказал. Вам не с кем похоливарить, я гляжу.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685223'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T19:59:23+00:00">01.09.10, 19:59</time></span><div class='quote '>лицензия LGPL не запрещает использование Qt в комерческих разработках</div></div>Я где то говорил обратное? :-? <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685223'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T19:59:23+00:00">01.09.10, 19:59</time></span><div class='quote '>я просто заинтересовался какие вы продукты выпустили под BSD или MIT лицензией, а еще больше какой из ваших продуктов стал производным от программных продуктов имеющих лицензию MIT или BSD? </div></div>Ппц. Наличие или отсутствие моих продуктов под той или иной лицензией как то влияет на разницу в ограничениях лицензий LGPL, BSD или MIT? Это просто переход на личности фанатика Qt, не видящего в ней ни единого недостатка.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685223'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T19:59:23+00:00">01.09.10, 19:59</time></span><div class='quote '>нашел объявление типа события<br>
ExpandCollapseWrap onWrap offLine numbersLine numbers<br>
<br>
      typedef void __fastcall (__closure *TNotifyEvent)(System::TObject *Sender);<br>
<br>
<br>
великолепно, и интуитивно понятно. Builder и его VCL мертвы и имеют смысл к изучению только для поддержки старых продуктов писать новый продукт с основой VCL - моветон.<br>
</div></div>И причем тут это объявление типа? Новичок когда его увидит - уже не новичок.<br>
Ну а последняя фраза явно свидетельствует, что вы ошиблись разделом, вам  в Холивар. Отвечать тут не нужно, мои вопросы риторические. <br>
Или просто пишите своё описание - только про минусы не забудьте, - или создавайте в холиварах тему Qt vs VCL и холиварьте на здоровье. Или пусть лучше <strong class='tag-b'>B.V.</strong> отрежет этот пустой флейм и перенесёт в соответсвующий раздел. Резвитесь там в своё удовольствие, у вас явные способности к этому. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2010-09-01T21:23:11+00:00">01.09.10, 21:23</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2685252'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2010-09-01T20:33:39+00:00">01.09.10, 20:33</time></span><div class='quote '>Цитата (Adil @ 29.08.10, 17:36)<br>
Не совсем интуитивно понятная,<strong class='tag-b'> особенно для новичка</strong>, система обработки событий SIGNAL-SLOT<br>
<br>
Хм... По-моему наоборот все просто. </div></div>Ты считаешь себя новичком?]]></description>
        <author>Adil</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685252</guid>
        <pubDate>Wed, 01 Sep 2010 20:33:39 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685252</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2682277'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Adil &#064; <time class="tag-quote__quoted-time" datetime="2010-08-29T13:36:12+00:00">29.08.10, 13:36</time></span><div class='quote '>Не совсем интуитивно понятная, особенно для новичка, система обработки событий SIGNAL-SLOT</div></div><br>
Хм... По-моему наоборот все просто.]]></description>
        <author>D_KEY</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685223</guid>
        <pubDate>Wed, 01 Sep 2010 19:59:23 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2685223</link>
        <description><![CDATA[smalcom: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Под виндой? Почитайте хоть название раздела.</div></div><br>
&gt;&gt;Графический интерфейс пользователя в приложениях на языке C++<br>
как пример приведён гуй семёрки.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>собака брешет</div></div><br>
но доказательств медлительности так и не предоставлено<br>
<br>
Лицензии не читаем? Тогда задам наводящие вопросы.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>LGPL - всё-таки не самая свободная лицензия. В данном случае разработчик приложения с Qt должен обеспечить возможность переcборки своего приложения конечным пользователем с другой версией Qt</div></div><br>
Зачем пользователю пересобирать приложение если вызовы одни и теже?<br>
Для разработчика приложений на Qt требуется только динамическая библиотека и заголовочный файл, для пользователя - только библиотека. При выходе новой версии библиотеки ничего пересобирать не надо, тк апи у кутэ довольно стабилен.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Причем тут статическая линковка?</div></div><br>
это намек на пересборку и исходники. лицензия LGPL не запрещает использование Qt  в комерческих разработках, а исходники требует только при получении производного продукта, а это статическая линковка и внесение изменений в исходный код самой библиотеки. Так что не пугайте народ. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2010-09-01T20:06:23+00:00">01.09.10, 20:06</time></span></span><br>
BSD и MIT вообще пользователю побоку ибо выбор лицензии изначально делает разработчик и за неверное распространение продукта иметь будут его, а не пользователя программного продукта.<br>
MOC не является недостатком Qt, а является вполне оправданным решением в силу ограниченности самого C++<br>
<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Причем тут статическая линковка?</div></div><br>
при том что ваша непонятная боязнь изза угла и, собственно попытка опустить Qt<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Довольно тяжеловесна - исполняемый файл win32 со статически прилинкованной библиотекой весит от 4-5 МБт</div></div><br>
изначально говорит о незнании других способов линковки и содержимого лицензий <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2010-09-01T20:08:12+00:00">01.09.10, 20:08</time></span></span><br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Наличие или отсутствие у меня жадности не делает из лицензии LGPL лицензию, например, BSD или MIT.</div></div><br>
я просто заинтересовался какие вы продукты выпустили под BSD или MIT лицензией, а еще больше какой из ваших продуктов стал производным от программных продуктов имеющих лицензию MIT или BSD? <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2010-09-01T20:29:29+00:00">01.09.10, 20:29</time></span></span><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">connect(src, SIGNAL(srcsignal), dst, SLOT(dstslot)); //Qt</div><div class="code_line">dst-&#62;OnEvent = src-&#62;event; //VCL</div></ol></div></div></div></div><br>
<br>
или<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">dst.connect(src, SIGNAL(srcsignal), SLOT(dstslot))</div></ol></div></div></div></div><br>
можно ли в VCL подключать источники событий к другим источникам, порождая цепочки событий, или несколько источников к одному приемнику?<br>
немаловажный вопрос о том как описываются данные источники и приемник в VCL и как они вызываются.<br>
<br>
нашел объявление типа события<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">typedef void __fastcall (__closure *TNotifyEvent)(System::TObject *Sender);</div></ol></div></div></div></div><br>
великолепно, и интуитивно понятно. Builder и его VCL мертвы и имеют смысл к изучению только для поддержки старых продуктов писать новый продукт с основой VCL - моветон.]]></description>
        <author>smalcom</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2682579</guid>
        <pubDate>Mon, 30 Aug 2010 05:32:52 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2682579</link>
        <description><![CDATA[Adil: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2682550'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-08-30T02:58:44+00:00">30.08.10, 02:58</time></span><div class='quote '>набрать emerge чертовски сложно.</div></div>Под виндой? Почитайте хоть название раздела.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2682550'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-08-30T02:58:44+00:00">30.08.10, 02:58</time></span><div class='quote '>не согласен. проще наверное и не придумаешь. а вот шарповый прикол с евентами и делегатами для новичка та еще проблема.</div></div>Сравните:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">connect(src, SIGNAL(srcsignal), dst, SLOT(dstslot)); //Qt</div><div class="code_line">dst-&#62;OnEvent = src-&#62;event; //VCL</div></ol></div></div></div></div>И никакого moc-компилятора<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2682550'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-08-30T02:58:44+00:00">30.08.10, 02:58</time></span><div class='quote '>ну брехня же</div></div>собака брешет<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2682550'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-08-30T02:58:44+00:00">30.08.10, 02:58</time></span><div class='quote '>статически слинкованный хеловорд на Си занимает 624кБ(недавно проверял). Обычно ставят динамическую библиотеку и имеют счастие...</div></div>Причем тут Си? Qt - это C++. А динамическую библиотеку надо таскать с приложением - те же винды далеко не все из коробки имеют эти библиотеки, как это не удивительно. Да и в вашем хелловорде небось одна консоль была? Прочитайте хоть название темы.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2682550'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-08-30T02:58:44+00:00">30.08.10, 02:58</time></span><div class='quote '>Шо? Кроме статической линковки ничего не знаем?</div></div>Ни шо. Причем тут статическая линковка? Или Вы открыли способ сборки приложения без исходников или объектников при динамической линковке?<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2682550'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>smalcom &#064; <time class="tag-quote__quoted-time" datetime="2010-08-30T02:58:44+00:00">30.08.10, 02:58</time></span><div class='quote '>LGPL - это одна отличная лицензия, а хотим сколотить состояние вне рамок LGPL - не жадничаем и покупаем комерческую лицензию. </div></div>Наличие или отсутствие у меня жадности не делает из лицензии LGPL лицензию, например, BSD или MIT.]]></description>
        <author>Adil</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2682550</guid>
        <pubDate>Mon, 30 Aug 2010 02:58:44 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2682550</link>
        <description><![CDATA[smalcom: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Сборка библиотеки из исходников - весьма нетривиальное занятие и приносит удовольствие только истинному гентушнику.</div></div><br>
набрать emerge чертовски сложно.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Не совсем интуитивно понятная, особенно для новичка, система обработки событий SIGNAL-SLOT</div></div><br>
не согласен. проще наверное и не придумаешь. а вот шарповый прикол с евентами и делегатами для новичка та еще проблема.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Довольно медлительна</div></div><br>
ну брехня же<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Довольно тяжеловесна - исполняемый файл win32 со статически прилинкованной библиотекой весит от 4-5 МБт</div></div><br>
статически слинкованный хеловорд на Си занимает 624кБ(недавно проверял). Обычно ставят динамическую библиотеку и имеют счастие...<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>LGPL - всё-таки не самая свободная лицензия. В данном случае разработчик приложения с Qt должен обеспечить возможность переcборки своего приложения конечным пользователем с другой версией Qt, что означает, что приложение должно поставляться с исходными кодами или, как минимум, - с объектными файлами.</div></div><br>
Шо? Кроме статической линковки ничего не знаем? LGPL - это одна отличная лицензия, а хотим сколотить состояние вне рамок LGPL - не жадничаем и покупаем комерческую лицензию.]]></description>
        <author>smalcom</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2682304</guid>
        <pubDate>Sun, 29 Aug 2010 14:48:34 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2682304</link>
        <description><![CDATA[B.V.: Супер&#33; :) Только одно небольшое замечание <br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=311938&view=findpost&p=2682277'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Adil &#064; <time class="tag-quote__quoted-time" datetime="2010-08-29T13:36:12+00:00">29.08.10, 13:36</time></span><div class='quote '>Сборка библиотеки из исходников - весьма нетривиальное занятие и приносит удовольствие только истинному гентушнику.</div></div><br>
Присутствуют и готовые сборки, которые собирать не надо.]]></description>
        <author>B.V.</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2682277</guid>
        <pubDate>Sun, 29 Aug 2010 13:36:12 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2682277</link>
        <description><![CDATA[Adil: <strong class='tag-b'>Qt </strong><br>
Кроссплатформенная библиотека, не только для GUI, но и практически на все случаи жизни: состоит из раздельно подключаемых модулей - QtCore, QtGui, QtNetwork, QtSql и т.д. <br>
Имеется набор приложений для разработчика - <br>
QtDesigner - WYSIWYG редактор форм<br>
QtLinguist - средство локализации<br>
QtAssistant - справка в стиле MSDN<br>
На данный момент вышла вторая версия специализированной IDE QtCreator, где встроены QtDesigner, QtAssistant и редактор кода со многими современными фишками, редактор ресурсов, есть поддержка отладчика. Среда использует внешние компиляторы и отладчики.<br>
Так же существуют расширения для поддержки разработки в Qt в других IDE - MSVS, Eclipse.<br>
<br>
Распространяется под двумя вариантами лицензирования - свободной (LGPL) и коммерческой.<br>
<br>
Плюсы:<br>
Широкая кроссплатформенность. Есть реализация даже для встраиваемых решений - Qt Embedded<br>
WYSIWYG редактор форм, не уступающий VCL и .NET<br>
Возможность создавать собственные элементы управления<br>
Сравнительная лёгкость при локализации приложения.<br>
Свободное распространение с исходными кодами<br>
Весьма приличная документация.<br>
<br>
Минусы:<br>
Довольно тяжеловесна - исполняемый файл win32 со статически прилинкованной библиотекой весит от 4-5 МБт<br>
Довольно медлительна.<br>
Не совсем интуитивно понятная, особенно для новичка, система обработки событий SIGNAL-SLOT<br>
LGPL - всё-таки не самая свободная лицензия. В данном случае разработчик приложения с Qt должен обеспечить возможность переcборки своего приложения конечным пользователем с другой версией Qt, что означает, что приложение должно поставляться с исходными кодами или, как минимум, - с объектными файлами.<br>
Сборка библиотеки из исходников - весьма нетривиальное занятие и приносит удовольствие только истинному гентушнику.]]></description>
        <author>Adil</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2681532</guid>
        <pubDate>Sat, 28 Aug 2010 09:28:57 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2681532</link>
        <description><![CDATA[B.V.: С кроссплатформенными GUI-библиотеками, увы, работать не довелось. Поэтому просьба к знатокам Qt, Gtk+ и WxWidgets дополнить данную статью. Все, что нужно, это короткое описание устройства (по примеру описания WTL, например) и перечень плюсов и минусов, самых основных<br><br>Все дополнения можно оставлять прямо в этой теме, позже я их перенесу в статью]]></description>
        <author>B.V.</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2681528</guid>
        <pubDate>Sat, 28 Aug 2010 09:21:28 +0000</pubDate>
        <title>Графический интерфейс пользователя в приложениях на языке C++</title>
        <link>https://forum.sources.ru/index.php?showtopic=311938&amp;view=findpost&amp;p=2681528</link>
        <description><![CDATA[B.V.: Сначала небольшое &quot;лирическое отступление&quot;<br>
<br>
<span class="b-attach" data-size="28405" data-hits="3431" data-attach-id="974" data-attach-post-id="2681528">
			<span class="b-attach__title">GUI в Windows 7</span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=2681528&amp;attach_id=974' title='Скачать файл' target='_blank'>GUI.png</a> (, : 3431)
		</span><br>
<br>
Графический интерфейс пользователя, или Graphical User Interface (сокр. GUI) представляет собой всю совокупность элементов, с которыми взаимодействует пользователь для работы с программой. Программы могут работать и без GUI, например, в фоне, выполняя какие-то системные задачи, а могут взаимодействовать через текстовый терминал –- консоль. Но у таких программ, как правило, ограниченная область применения, и их довольно немного. Большинство программ отображают GUI, в виде окон или изображений (скинов). Данная мини-статья как раз о том, какими средствами можно реализовать GUI в приложении на C++<br>
<br>
C++ является языком, описанным <a class='tag-url' href='http://www.open-std.org/JTC1/SC22/WG21/' target='_blank'>стандартом</a>, и когда мы говорим C++, мы имеем ввиду не среду (IDE), не компилятор, а стандарт. И стандарт C++ не предусматривает работы с GUI, по крайней мере, на данный момент. Следовательно, любая высокоуровневая работа с GUI выходит за рамки стандарта, и за рамки языка, и является либо частью какой-либо IDE/ОС, либо отдельной кроссплатформенной/кросс-IDE библиотекой<br>
Рассмотрим сначала C++ IDE с поддержкой GUI<br>
<br>
<strong class='tag-b'>CodeGear C++ Builder</strong><br>
Данная IDE базируется на библиотеке Visual Components Library (VCL), написанной на паскале. Это значит, что любое приложение, созданное в этой IDE (без особых настроек), так или иначе, использует часть VCL для выполнения рутинных задач. VCL отвечает не только за GUI, это высокоуровневая обертка над Win32 API. Но, тем не менее, существенная её часть отведена под работу GUI, и избавляет программиста от нужды использовать непосредственно Win32API для построения GUI и управления оным.<br>
<br>
<span class="tag-color tag-color-named" data-value="green" style="color: green">Плюсы:</span><br>
Очень удобный конструктор форм, работающий по принципу <a class='tag-url' href='http://ru.wikipedia.org/wiki/WYSIWYG' target='_blank'>WYSIWYG</a>.<br>
Возможность создавать собственные элементы управления, совмещая существующие, или используя собственную отрисовку и логику<br>
Каждый элемент представлен объектом (C++ классом)<br>
Легкая и интуитивно понятная обработка событий<br>
<br>
<span class="tag-color tag-color-named" data-value="red" style="color: red">Минусы:</span><br>
Как и любая высокоуровневая обертка, вносит дополнительный код и замедляет работу приложения<br>
В связи с тем, что VCL написана на паскале, работа с ней из C++ довольно медленна<br>
<br>
<strong class='tag-b'>Microsoft Visual C++</strong><br>
Поддержка GUI в этой IDE зависит от выбранной технологии и типа проекта. Начнем с простого, Win32 Project. С этим типом проекта программисту доступны следующие технологии: Windows Template Library (WTL) и Dialog Templates.<br>
<br>
<em class='tag-i'>WTL</em> представляет собой набор шаблонных классов, оборачивающих стандартные элементы управления Windows. Весьма незначительно упрощает работу, по сравнению с &quot;голым&quot; Win32 API, но позволяет писать объектный код, и упрощает некоторые манипуляции с GUI.<br>
<br>
<span class="tag-color tag-color-named" data-value="green" style="color: green">Плюсы:</span><br>
Стандартные элементы управления представлены объектами<br>
<br>
<span class="tag-color tag-color-named" data-value="red" style="color: red">Минусы:</span><br>
Имеет весьма ограниченный набор классов<br>
Неудобная работа с событиями<br>
Нет собственного конструктора форм<br>
<br>
<em class='tag-i'>Dialog Templates</em> является технологией ОС Windows, и она не привязана к языку или IDE. Основной задачей DT является упрощение построения диалоговых окон. Поскольку DT представляют собой тип ресурсов Windows, конструктор DT является частью функционала редактора ресурсов. Редактор ресурсов VC++ содержит конструктор DT, но таким же конструктором может обладать любой редактор ресурсов Windows, ив качестве примера можно привести Restorator или ResHack (Замечание: в Express-версии VC++ нет редактора ресурсов, и, как следствие, конструктора DT. С этой версией следует использовать сторонние редакторы ресурсов).<br>
<br>
<span class="tag-color tag-color-named" data-value="green" style="color: green">Плюсы:</span><br>
Поддерживается конструктор форм (*зависит от редактора ресурсов)<br>
Нет привязки к языку или IDE<br>
<br>
<span class="tag-color tag-color-named" data-value="red" style="color: red">Минусы:</span><br>
Вся работа с DT осуществляется посредством Win32 API<br>
Конструктор форм ограничен только стандартными элементами управления<br>
<br>
Перейдем теперь к MFC. По сути, MFC является некоторой помесью WTL и DT, незначительно расширяя возможности DT и предоставляя объекты под э.у. а так же систему обработки событий<br>
Итак, MFC состоит из двух частей: DT с дополнительными MFC-функциями и библиотека классов, обеспечивающая взаимодействие с GUI. Библиотека классов MFC, в отличие от WTL, лишь частично базируется на шаблонах (ATL), использует иерархию классов, и незначительно упрощает взаимодействие с GUI. Основной особенностью библиотеки MFC является тесная интеграция с Win32 API, методы классов повторяют Win32 API функции, оттого работать с этой библиотекой достаточно трудно.<br>
<br>
<span class="tag-color tag-color-named" data-value="green" style="color: green">Плюсы:</span><br>
Поддерживает конструктор форм (на базе DT, см. выше)<br>
Поддерживает работу с ActiveX<br>
Стандартные элементы управления представлены объектами<br>
<br>
<span class="tag-color tag-color-named" data-value="red" style="color: red">Минусы:</span><br>
Относительная низкоуровневость классов, требующая знание Win32 API<br>
Неудобная работа с событиями<br>
<br>
Остался еще один тип проекта, который представляет собой Win32 Project с задействованием возможностей .NET Framework, как на уровне языка, так и на уровне классов, а, следовательно, и GUI. Называется он C++/CLI WindowsForms Project. Первая часть названия указывает на дополнения в языке C++, вторая на тип .NET проекта. C++/CLI проект, помимо стандартных библиотек, использует .NET Framework, в том числе и для работы с GUI. Технология WindowsForms поддерживается на уровне IDE, и имеет весьма удобный, не уступающий по качеству конструктору VCL, WYSIWYG-конструктор форм. .NET FW полностью избавляет программиста от необходимости работы с Win32 API для взаимодействия с GUI, а так же обеспечивает кроссплатформенность<br>
<br>
<span class="tag-color tag-color-named" data-value="green" style="color: green">Плюсы:</span><br>
Очень удобный конструктор форм<br>
Возможность создавать собственные элементы управления<br>
Удобная работа с событиями<br>
Кроссплатформенность (ограниченная)<br>
<br>
<span class="tag-color tag-color-named" data-value="red" style="color: red">Минусы:</span><br>
Зависимость от тяжелого (до нескольких сотен МБ).NET FW, который может отсутствовать в системе<br>
Привязка кода к IDE VC++<br>
<br>
На данный момент более нет IDE для C++, со встроенной поддержкой GUI. Посему, переходим к библиотекам. Наиболее распространены следующие сторонние библиотеки для GUI: Qt, Gtk+, WxWidgets. Все они кроссплатформенны, но не все объектно-ориентированы<br>
<br>
<strong class='tag-b'>Qt</strong> ( <a class='tag-url' href='http://forum.sources.ru/index.php?showuser=1660' target='_blank'>Adil</a> )<br>
Кроссплатформенная библиотека, не только для GUI, но и практически на все случаи жизни: состоит из раздельно подключаемых модулей - QtCore, QtGui, QtNetwork, QtSql и т.д.<br>
Имеется набор приложений для разработчика -<br>
QtDesigner - WYSIWYG редактор форм<br>
QtLinguist - средство локализации<br>
QtAssistant - справка в стиле MSDN<br>
На данный момент вышла вторая версия специализированной IDE QtCreator, где встроены QtDesigner, QtAssistant и редактор кода со многими современными фишками, редактор ресурсов, есть поддержка отладчика. Среда использует внешние компиляторы и отладчики.<br>
Так же существуют расширения для поддержки разработки в Qt в других IDE - MSVS, Eclipse.<br>
<br>
Распространяется под двумя вариантами лицензирования - свободной (LGPL) и коммерческой.<br>
<br>
<span class="tag-color tag-color-named" data-value="green" style="color: green">Плюсы:</span><br>
Широкая кроссплатформенность. Есть реализация даже для встраиваемых решений - Qt Embedded<br>
WYSIWYG редактор форм, не уступающий VCL и .NET<br>
Возможность создавать собственные элементы управления<br>
Сравнительная лёгкость при локализации приложения.<br>
Свободное распространение с исходными кодами<br>
Весьма приличная документация.<br>
<br>
<span class="tag-color tag-color-named" data-value="red" style="color: red">Минусы:</span><br>
Довольно тяжеловесна - исполняемый файл win32 со статически прилинкованной библиотекой весит от 4-5 МБт<br>
Довольно медлительна.<br>
Не совсем интуитивно понятная, особенно для новичка, система обработки событий SIGNAL-SLOT<br>
LGPL - всё-таки не самая свободная лицензия. В данном случае разработчик приложения с Qt должен обеспечить возможность переcборки своего приложения конечным пользователем с другой версией Qt, что означает, что приложение должно поставляться с исходными кодами или, как минимум, - с объектными файлами.<br>
Сборка библиотеки из исходников - весьма нетривиальное занятие (правда, имеются так же и готовые сборки, не требующие компиляции)<br>
<br>
<strong class='tag-b'>wxWidgets</strong> ( <a class='tag-url' href='http://forum.sources.ru/index.php?showuser=24946' target='_blank'>MinLexx</a> )<br>
Кроссплатформенная библиотека, в основном, для GUI, хотя и консольные приложения делать есть возможность. Позволяет создавать приложения для Windows, OS X, Linux/Unix, также для Win Mobile, iPhone SDK. Очень похожа на WinAPI (названия функций, констант, легко привыкаешь после WinAPI). Также есть классы для работы с сетью, файловой системой, итд. Билдится в 2х вариантах - с поддержкой Unicode и без (это кроме вариантов с Debug/Release). Легко строится из сырцов. Имеются сторонние дизайнеры UI (мне нравится wxFormBuilder, например). Как утверждают разработчики, wxWidgets приложения выглядят как родные на каждой платформе, потому что используют нативные элементы управления, а не занимаются эмуляцией GUI (отсюда, в частности, следует минус, что не все элементы ведут себя одинаково на разных платформах).<br>
<br>
<span class="tag-color tag-color-named" data-value="green" style="color: green">Плюсы</span><br>
Достаточно маленькая (таки меньше Qt)<br>
Соединения событий и обработчиков напоминает систему из MFC со статической таблицей (BEGIN_MESSAGE_MAP / DECLARE_MESSAGE_MAP), равно как и есть возможность динамических соединений<br>
Есть возможность создавать собственные элементы управления<br>
Есть возможность локализации<br>
Свободное распространение с исходными кодами<br>
<br>
<span class="tag-color tag-color-named" data-value="red" style="color: red">Минусы</span><br>
Все-таки недостаточно кроссплатформенная - некоторые функции не работают под Lin/Mac, или наоборот, под Win, или работают по-разному - это надо будет учесть<br>
Слабая документированность<br>
LGPL таки не совсем свободная лицензия<br>
Статически слинкованные с либой бинарники, все-таки, маленькими не назовешь<br>
<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Эта часть статьи требует дополнения</div><div class="body"><br>
<em class='tag-i'>Gtk+</em><br>
[описание]<br>
<br>
<span class="tag-color tag-color-named" data-value="green" style="color: green">Плюсы:</span><br>
<span class="tag-color tag-color-named" data-value="red" style="color: red">Минусы:</span><br>
<br>
</div></div><br>
<br>
В заключение, хотел бы напомнить, что нет понятия &quot;лучшая GUI-технология&quot;, есть понятие &quot;подходящая для данной задачи GUI-технология&quot;. Для каждой конкретной задачи взвешивайте все плюсы и минусы, и сами решайте, что будет наиболее удобно]]></description>
        <author>B.V.</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      </channel>
      </rss>
	