<?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=381113&amp;view=findpost&amp;p=3357449</guid>
        <pubDate>Thu, 19 Sep 2013 12:53:15 +0000</pubDate>
        <title>много вопросов по Win32API</title>
        <link>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3357449</link>
        <description><![CDATA[ALXR: Про HWND тоже было: <a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=299218' target='_blank'>Список окон</a>]]></description>
        <author>ALXR</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3357058</guid>
        <pubDate>Wed, 18 Sep 2013 06:33:19 +0000</pubDate>
        <title>много вопросов по Win32API</title>
        <link>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3357058</link>
        <description><![CDATA[leo: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=381113&view=findpost&p=3357033'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>grat1 &#064; <time class="tag-quote__quoted-time" datetime="2013-09-17T22:34:38+00:00">17.09.13, 22:34</time></span><div class='quote '>№4 <br>
HINSTANCE hPrevInstance//дескриптор предыдущего экземпляра приложения<br>
читал -это атрофия было прошолого</div></div><br>
Да, это пережитки времен Win16 (как и само понятие HINSTANCE), поэтому в Win32 hPrevInstance всегда = NULL, а HINSTANCE по смыслу и значению совпадает с HMODULE (хэндл исполняемого модуля = базовому адресу его загрузки&#092;маппинга в память)<br>
См.популярное чтиво - <a class='tag-url' href='http://www.transl-gunsmoker.ru/2009/04/hprevinstance-winmain.html' target='_blank'>тыц</a>, <a class='tag-url' href='http://www.transl-gunsmoker.ru/2009/04/hinstance-hmodule.html' target='_blank'>тыц</a>]]></description>
        <author>leo</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3357036</guid>
        <pubDate>Wed, 18 Sep 2013 00:10:48 +0000</pubDate>
        <title>много вопросов по Win32API</title>
        <link>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3357036</link>
        <description><![CDATA[Славян: №1: система так может понимать какую версию её функционала вы используете. Пишут, что сие часто.<br>№2: в среде задаются тип сборки (win32/win64) и всё делает сам компилятор/компоновщик.<br>№3: вопрос непонятно в чём. Но если что, то бесспорно пора на уникод переходить. Всё-таки 21 век...<br>№4: да, используется. Есть редкие функции, коим надо. Скажем, создание окна вручную.]]></description>
        <author>Славян</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3357033</guid>
        <pubDate>Tue, 17 Sep 2013 22:34:38 +0000</pubDate>
        <title>много вопросов по Win32API</title>
        <link>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3357033</link>
        <description><![CDATA[grat1: Cпасибо всем&#33;&#33;&#33;<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">wc.cbSize &nbsp; &nbsp; = sizeof(WNDCLASSEX)////размер структуры в байтах;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
?№1 зачем измерять, подчитывать размер класса, для чего и какая от него польза?<br>
?№2 как создаются 64bit-ные окна, я так понял в моем примере они 32bit-ные, и есть ли смысл создавать<br>
и создвать для моего блокнота(в дальнейшем переделаю под ide, но это пока мечты),заранее правельно спроектированный проект залог меньшего гемора.<br>
?№3 у меня будет мульти язычная прога. ASCII  или сразу на unicode(читал много гемора с ASCII ) размер проги играет роль вот поэтому перешел на Си(асм - не потяну 8-) ) (у меня философия такая, чем меньше прога-чем быстрее она работает и меньше &quot;глюков&quot;-противоположность дотнетов и им подобным)<br>
//Чтение много язычного интерфейса через *.ini, когда весь проект будет переведен -&gt; *.dll <br>
?№4 <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">HINSTANCE hPrevInstance//дескриптор предыдущего экземпляра приложения</div></ol></div></div></div></div>читал -это атрофия было прошолого, в реалии кто-нибудь пользуется и где(кто) нибудь использует её и как её можно использовать(назначение его)<br>
?№5 генератор кода под Win32api Cи, нашел только <strong class='tag-b'>VISG: visual and smart GUI builder v.095</strong>, <br>
если ещё подобные без редакторов ресурсов.]]></description>
        <author>grat1</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356205</guid>
        <pubDate>Sun, 15 Sep 2013 12:34:07 +0000</pubDate>
        <title>много вопросов по Win32API</title>
        <link>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356205</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=381113&view=findpost&p=3356129'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>grat1 &#064; <time class="tag-quote__quoted-time" datetime="2013-09-15T00:39:33+00:00">15.09.13, 00:39</time></span><div class='quote '>HINSTANCE и HWND чем они отличаются?<br>
HWND- это, как понял индивидуальный номер(ID) окна,фрейма,кнопки и т.д.<br>
HINSTANCE -это описание созданного обьекта-...</div></div><br>
Это типы производные от указателя. Также как и самые разнообразные другие &quot;хэндлы&quot;.<br>
Отличаются по их назначению и применению.<br>
Чтобы не путать различные указатели между собой, определены различные типы.<br>
После этого их применение может контролировать компилятор, который сразу указывает на возможные ошибки.<br>
Кстати, HINSTANCE - это фактически адрес загрузки модуля в память. Обычно равен 0x400000.]]></description>
        <author>ЫукпШ</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356169</guid>
        <pubDate>Sun, 15 Sep 2013 09:16:49 +0000</pubDate>
        <title>много вопросов по Win32API</title>
        <link>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356169</link>
        <description><![CDATA[leo: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=381113&view=findpost&p=3356129'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>grat1 &#064; <time class="tag-quote__quoted-time" datetime="2013-09-15T00:39:33+00:00">15.09.13, 00:39</time></span><div class='quote '>1? HINSTANCE и HWND чем они отличаются?<br>
... почему они все видут к одному определению<br>
... не русские слова тяжело врезается в голову и с чем это ассоциировать?</div></div><br>
В переводе на русский Handle - это &quot;ручка&#092;рычаг управления&quot; чем либо. Обычному пользователю незачем знать все потроха внутреннего устройства сложных объектов, будь то бытовая техника, автомобиль, самолет или объект операционной системы - везде рулит принцип инкапсуляции, когда все внутренние потроха скрываются за капотом &quot;черного ящика&quot;, а наружу для пользователя выводятся только &quot;хэндлы&quot; - ручки&#092;кнопки&#092;рули управления.<br>
 <br>
Да, в винде для простоты и унификации практически все хэндлы сводятся к типу PVOID, но это ни о чем не говорит, т.к. из соображений &quot;безопасности&quot; только приватным данным процесса даются хэндлы, представляющие собой прямой указатель на структуру данных (HINSTANCE, HMODULE, HGLOBAL, хэндл кучи и т.п.). А  хэндлы общесистемных объектов обычно представляют собой индексы различных таблиц. Например,  HWND, HMENU и т.п. это индексы таблицы описателей объектов оконной подсистемы win32, которая мапится&#092;проецируется в user32.dll. Но все это &quot;внутренние потроха&quot; ОС, которые обычным юзерам (не &quot;кулхацкерам&quot; ;)) знать вовсе не обязательно<br>
<br>
PS: Иногда вместо слова &quot;хэндл&quot; используется слово &quot;дескриптор&quot;. Но логически это не совсем верно, т.к. под дескриптором (описателем) обычно понимается некая структура, описывающая объект. А хэндл это просто некое число (указатель, индекс, ID), по которому можно получить доступ к этой структуре]]></description>
        <author>leo</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356155</guid>
        <pubDate>Sun, 15 Sep 2013 07:51:03 +0000</pubDate>
        <title>много вопросов по Win32API</title>
        <link>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356155</link>
        <description><![CDATA[leo: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=381113&view=findpost&p=3356129'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>grat1 &#064; <time class="tag-quote__quoted-time" datetime="2013-09-15T00:39:33+00:00">15.09.13, 00:39</time></span><div class='quote '>?5 что лучше в плане скорости приложения</div></div><br>
В плане скорости - без разницы. Но приведенный вариант кода с PeekMessage никуда не годится, т.к. при отсутствии сообщений этот цикл будет работать в холостую, попусту занимая&#092;раскаляя процессор и не давая работать другим потокам&#092;процессам (включая фоновые системные потоки обнуления страниц памяти, записи на диск и т.п.). Поэтому циклы с PeekMessage обычно используются с веткой if .. else - когда больше нет сообщений в очереди выполняется некая функция фоновой обработки (типа OnIdle - действия при простое) и затем вызывается ф-я WaitMessage для усыпления потока до прихода нового сообщения. В итоге связка PeekMessage + WaitMessage работает также как и GetMessage, но при этом позволяет выполнить некие действия перед тем, как поток уснет в ожидании нового сообщения.]]></description>
        <author>leo</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356150</guid>
        <pubDate>Sun, 15 Sep 2013 07:30:24 +0000</pubDate>
        <title>много вопросов по Win32API</title>
        <link>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356150</link>
        <description><![CDATA[Славян: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=381113&view=findpost&p=3356143'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Dem_max &#064; <time class="tag-quote__quoted-time" datetime="2013-09-15T05:33:28+00:00">15.09.13, 05:33</time></span><div class='quote '>Какая там внутри структура не известно, известно взять хотя бы исходники Win2000<br>
но в итоге какой нить HWND это указатель на структуру в недрах винды</div></div>Согласен. Раньше лучше было: неизвестно и всё, а сейчас так и тянет сунуться и узнать чему же равно это значение unused ?.. ;-) <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="2013-09-15T07:38:28+00:00">15.09.13, 07:38</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=381113&view=findpost&p=3356129'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>grat1 &#064; <time class="tag-quote__quoted-time" datetime="2013-09-15T00:39:33+00:00">15.09.13, 00:39</time></span><div class='quote '>HINSTANCE hInst(дурацкий вопрос&#33;&#33;&#33;); ели глобальные переменные зло, как от нее избавиться</div></div>Не дурацкий, а нормальный вопрос. И она ничуть не глобальная, а локальная для WinMain&#39;а.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=381113&view=findpost&p=3356129'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>grat1 &#064; <time class="tag-quote__quoted-time" datetime="2013-09-15T00:39:33+00:00">15.09.13, 00:39</time></span><div class='quote '>любознательность это порог? или любо знать</div></div>Если б вы учились в кулинарном техникуме, то это была бы любознательность; а так - вам же для дела надо (для блокнота++).]]></description>
        <author>Славян</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356143</guid>
        <pubDate>Sun, 15 Sep 2013 05:33:28 +0000</pubDate>
        <title>много вопросов по Win32API</title>
        <link>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356143</link>
        <description><![CDATA[Dem_max: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Сейчас все сводятся к этакому формальному отсыланию к структуре</div></div><br>
Какая там внутри структура не известно, известно взять хотя бы исходники Win2000<br>
<br>
но в итоге какой нить HWND это указатель на структуру в недрах винды]]></description>
        <author>Dem_max</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356135</guid>
        <pubDate>Sun, 15 Sep 2013 03:17:48 +0000</pubDate>
        <title>много вопросов по Win32API</title>
        <link>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356135</link>
        <description><![CDATA[Славян: №5: для проги типа &quot;notepad++&quot; лучше (без гемора) писать с GetMessage. <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="2013-09-15T03:20:26+00:00">15.09.13, 03:20</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=381113&view=findpost&p=3356134'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Dem_max &#064; <time class="tag-quote__quoted-time" datetime="2013-09-15T03:16:16+00:00">15.09.13, 03:16</time></span><div class='quote '>В итоге они там все сведутся к типу PVOID</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">struct</div><div class="code_line">{</div><div class="code_line">int unused;</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=381113&amp;view=findpost&amp;p=3356134</guid>
        <pubDate>Sun, 15 Sep 2013 03:16:16 +0000</pubDate>
        <title>много вопросов по Win32API</title>
        <link>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356134</link>
        <description><![CDATA[Dem_max: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>1? HINSTANCE и HWND чем они отличаются?</div></div><br>
В итоге они там все сведутся к типу PVOID]]></description>
        <author>Dem_max</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356133</guid>
        <pubDate>Sun, 15 Sep 2013 03:11:21 +0000</pubDate>
        <title>много вопросов по Win32API</title>
        <link>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356133</link>
        <description><![CDATA[Славян: №2: hInstance бывает нужна дабы загрузить себе картинку курсора, иконку, ... из такого-то приложения. Но её, переменную, в принципе всегда можно и откопать, а не хранить и молиться на неё.<br><br>№3 - вопрос не по API, а по среде. Вкратце: компиляция - создание OBJ-ей, а Build-строит, т.е. компилирует и компонует:compile+link.]]></description>
        <author>Славян</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356132</guid>
        <pubDate>Sun, 15 Sep 2013 03:10:58 +0000</pubDate>
        <title>много вопросов по Win32API</title>
        <link>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356132</link>
        <description><![CDATA[Dem_max: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>?3 чем отличается Compile(ctrl +F7) и build(F7)</div></div><br>
Compile - это компиляция одной единицы<br>
build - это компиляция всего проекта<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>?5 что лучше в плане скорости приложения</div></div><br>
???&#33;&#33;&#33;&#33;&#33;&#33;&#33;&#33;?????????&#33;&#33;&#33;&#33;&#33;<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>?6 typedef -нужен для того, чтобы дать другое имя, для чего? </div></div><br>
Не дать другое имя а переопределить объект.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>понаставить int, short, __stdcall, то нормально работает или есть какое-то соглашение(условие) для стабильности проги и компиляции?</div></div><br>
Соглашения об вызовал можно и не ставить у каждого компилятора уже в настройках проставлено, нужно если твой модуль будет общаться с другими модулями.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>UINT message,//это код сообщения или идентификатор сообщения</div></div><br>
Да без разницы. Ты привел синонимы.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>?8в vs6 сам добавляется файл basetsd.h <br>
 для чего он образуется ? почему он сам ставиться? для чего он нужен?<br>
 его нету в проекте dev и codeblock&#33;</div></div><br>
Чтобы тебе не нужно было ручками добавлять. Во всех IDE по разному.]]></description>
        <author>Dem_max</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356131</guid>
        <pubDate>Sun, 15 Sep 2013 03:05:14 +0000</pubDate>
        <title>много вопросов по Win32API</title>
        <link>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356131</link>
        <description><![CDATA[Славян: №1. Грубо говоря, HWND - Одно из ваших окон, а HINNSTANCE - ваше приложение=программа. А ведут они &quot;к одному&quot; потому, что и то и другое - скрытые(=скрываемые разработчиками Винды) от пользователя структуры.]]></description>
        <author>Славян</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356129</guid>
        <pubDate>Sun, 15 Sep 2013 00:39:33 +0000</pubDate>
        <title>много вопросов по Win32API</title>
        <link>https://forum.sources.ru/index.php?showtopic=381113&amp;view=findpost&amp;p=3356129</link>
        <description><![CDATA[grat1: сперва сам код vs6, dev<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">#include &#60;windows.h&#62; </div><div class="code_line">&nbsp;</div><div class="code_line">HINSTANCE hInst; </div><div class="code_line">ATOM &nbsp; &nbsp; MainWindowClass(HINSTANCE hInstance);</div><div class="code_line">int &nbsp; &nbsp; &nbsp;MasterWindow(HINSTANCE, int);</div><div class="code_line">LRESULT CALLBACK &nbsp; &nbsp;WndProc(HWND, UINT, WPARAM, LPARAM);</div><div class="code_line">&nbsp;</div><div class="code_line">LRESULT CALLBACK WndProc(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;HWND hWnd,//ДЕСКРИПТОР ОКНА</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UINT message,//код сообщения</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WPARAM wParam,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LPARAM lParam//32 bit</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;switch (message)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;case WM_DESTROY:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PostQuitMessage(0);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;default:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return DefWindowProc(hWnd, message, wParam, lParam);</div><div class="code_line">&nbsp;&nbsp; }</div><div class="code_line">&nbsp;&nbsp;return 0;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;MSG msg;// Объявление структуры типа MSG, для работы с сообщениями// код текущего сообщения</div><div class="code_line">&nbsp;&nbsp; &nbsp;MainWindowClass(hInstance);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (!MasterWindow (hInstance, nCmdShow))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return FALSE;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;while (GetMessage(&amp;msg, NULL, 0, 0))</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TranslateMessage(&amp;msg);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DispatchMessage(&amp;msg);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;return msg.wParam;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;ATOM MainWindowClass(HINSTANCE hInstance)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;WNDCLASSEX wc;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// memset(&amp;wc,0,sizeof(wc)); &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;wc.cbSize &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= sizeof(WNDCLASSEX);</div><div class="code_line">&nbsp;&nbsp; &nbsp;wc.style &nbsp;= CS_HREDRAW | CS_VREDRAW; </div><div class="code_line">&nbsp;&nbsp; &nbsp;wc.lpfnWndProc &nbsp; &nbsp; = (WNDPROC)WndProc;//функция обратного вызова</div><div class="code_line">&nbsp;&nbsp; &nbsp;wc.lpszClassName &nbsp; = &quot;aaaaWndClass&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;wc.hInstance &nbsp; &nbsp; &nbsp; = hInstance;</div><div class="code_line">&nbsp;&nbsp; &nbsp;wc.cbClsExtra &nbsp; &nbsp; &nbsp;= 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;wc.cbWndExtra &nbsp; &nbsp; &nbsp;= 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;wc.hIcon &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = LoadIcon(NULL,IDI_APPLICATION);</div><div class="code_line">&nbsp;&nbsp; &nbsp;wc.hCursor &nbsp; &nbsp; &nbsp; &nbsp; = LoadCursor(NULL, IDC_ARROW);</div><div class="code_line">&nbsp;&nbsp; &nbsp;wc.hbrBackground= (HBRUSH)COLOR_APPWORKSPACE;//ТЕМНЫЙ</div><div class="code_line">&nbsp;&nbsp; &nbsp;wc.lpszMenuName &nbsp; &nbsp;= NULL;</div><div class="code_line">&nbsp;&nbsp; &nbsp;wc.hIconSm &nbsp; &nbsp; &nbsp; &nbsp; = NULL;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return RegisterClassEx(&amp;wc);// Создаем и регистрируем оконный класс</div><div class="code_line">}</div><div class="code_line">&nbsp;int MasterWindow(HINSTANCE hInstance, int nCmdShow)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;HWND MainHWND;// Уникальный идентификатор главного окна приложения(handle)</div><div class="code_line">&nbsp;&nbsp; &nbsp;hInst = hInstance; /* Сохраняем идентификатор приложения*/</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Преверяем, не было ли это приложение запущено ранее</div><div class="code_line">&nbsp;&nbsp; &nbsp;MainHWND = FindWindow &nbsp; (</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&quot;aaaaWndClass&quot;, &nbsp;/* указатель на имя класса*/</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NULL/*указатель на имя окна*/);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(MainHWND) &nbsp; &nbsp;{ // Если окно приложения было свернуто в пиктограмму, восстанавливаем его</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if(IsIconic(MainHWND))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;ShowWindow(MainHWND, SW_RESTORE);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;SetForegroundWindow(MainHWND);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return FALSE;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;MainHWND = &nbsp;CreateWindow(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&quot;aaaaWndClass&quot;,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&quot;NULL&quot;,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;WS_OVERLAPPEDWINDOW,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CW_USEDEFAULT,//координаты по вертмкали</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CW_USEDEFAULT,//координаты по горищонатли</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CW_USEDEFAULT,//гирина</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CW_USEDEFAULT,//высота</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MainHWND, /* дескриптор родительского окна */</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;(HMENU)NULL,//дескриптор меню</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;(HINSTANCE)hInstance, // Идентификатор приложения</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;NULL);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (!MainHWND)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; return FALSE;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;ShowWindow(MainHWND, SW_SHOWMAXIMIZED);</div><div class="code_line">&nbsp;&nbsp; &nbsp;UpdateWindow(MainHWND);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; return TRUE;</div><div class="code_line">}</div></ol></div></div></div></div><br>
<strong class='tag-b'>1?</strong> HINSTANCE и HWND чем они отличаются?<br>
HWND- это, как понял индивидуальный номер(ID) окна,фрейма,кнопки и т.д.<br>
HINSTANCE -это описание созданного обьекта-дескриптор(окна,фрейма,кнопки)-всё что входит CreateWindow и ATOM(класс окна), тогда почему они все видут к одному определению (идти к определению HINSTANCE)-&gt;DECLARE_HANDLE(HINSTANCE);-&gt;<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">#ifdef STRICT</div><div class="code_line">typedef void *HANDLE;</div><div class="code_line">[B]#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name[/B]</div><div class="code_line">#else</div><div class="code_line">typedef PVOID HANDLE;</div><div class="code_line">#define DECLARE_HANDLE(name) typedef HANDLE name</div><div class="code_line">#endif</div></ol></div></div></div></div><br>
///////////////////////////////////////<br>
HWND (идти к определению HWND)<strong class='tag-b'>-&gt;</strong><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">#ifndef WIN_INTERNAL</div><div class="code_line">[B]DECLARE_HANDLE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(HWND)[/B];</div><div class="code_line">DECLARE_HANDLE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(HHOOK);</div><div class="code_line">#ifdef WINABLE</div><div class="code_line">DECLARE_HANDLE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(HEVENT);</div><div class="code_line">#endif</div><div class="code_line">#endif</div></ol></div></div></div></div><br>
<strong class='tag-b'>-&gt;</strong><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">#ifdef STRICT</div><div class="code_line">typedef void *HANDLE;</div><div class="code_line">[B]#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name[/B]</div><div class="code_line">#else</div><div class="code_line">typedef PVOID HANDLE;</div><div class="code_line">#define DECLARE_HANDLE(name) typedef HANDLE name</div><div class="code_line">#endif</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'>?1б</strong><br>
дескриптор-это HINSTANCE,<br>
хендл(HANDLE) - это HWND<br>
не русские слова тяжело врезается в голову и с чем это ассоциировать? :wall: <br>
<strong class='tag-b'>из разных книг</strong><br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
1)Этот дескриптор содержит адрес начала кода программы в ее адресном пространстве.<br>
2)Дескриптор hInstance чаще всего требуется функциям, работающим с ресурсами программы.<br>
3)...дескриптор модуля — то это указатель. Дескриптор файла — это индекс...<br>
</div></div><br>
1)  в ее адресном пространстве -чего? памяти<br>
2) работающим с ресурсами программы -если я не использую ресурсы -то не нужно- как на это реагировать :blink: <br>
3)...дескриптор модуля — то это указатель.Дескриптор файла — это индекс... наверное имеется ввиду это <br>
<strong class='tag-b'>#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name</strong> вот эту строчку мне надо поподробней и понять (разжевать)на простых примерах, как это работает<br>
<br>
 ?№2 для чего нужна глобальная переменная HINSTANCE hInst(дурацкий вопрос&#33;&#33;&#33;); ели глобальные переменные зло, как от нее избавиться(я с ней помучался)я сейчас сам на него отвечу.Но не понимаю почему это работает (во многих книгах,руководств по созданию главного окна)<strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red"> что она нужна</span></strong>...<br>
убрать глобальную переменную и убрать реализацию в //hInst = hInstance; /* Сохраняем идентификатор приложения*/<br>
<br>
<strong class='tag-b'>?3</strong> чем отличается Compile(ctrl +F7) и build(F7)<br>
<strong class='tag-b'>?4</strong> если разбить как здесь <a class='tag-url' href='http://forum.sources.ru/index.php?act=ST&f=74&t=380225' target='_blank'><strong class='tag-b'>разбивка исходника на 2 файла</strong></a> то ошибки не появляются типа:<br>
I:&#092;VS 6&#092;a&#092;aaaaaaaa&#092;main.c(27) : warning C4100: &#39;lpCmdLine&#39; : unreferenced formal parameter<br>
I:&#092;VS 6&#092;a&#092;aaaaaaaa&#092;main.c(27) : warning C4100: &#39;hPrevInstance&#39; : unreferenced formal parameter<br>
I:&#092;VS 6&#092;a&#092;aaaaaaaa&#092;main.c(69) : warning C4100: &#39;nCmdShow&#39; : unreferenced formal parameter<br>
это глюк VS6 (Warning level -Level 4-уровень проверок на ошибки)<br>
<br>
<strong class='tag-b'>?5 </strong>что лучше в плане скорости приложения<br>
 ваше мнение и личный опыт<br>
я делаю прогу подобее notepad++(зачем для себя)<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">&nbsp;&nbsp; &nbsp;while (GetMessage(&amp;msg, NULL, 0, 0))</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TranslateMessage(&amp;msg);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DispatchMessage(&amp;msg);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">// или</div><div class="code_line">while (TRUE)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (PeekMessage(&amp;msg,NULL,0,0, PM_REMOVE) ==TRUE)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (msg.message == WM_QUIT) break;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TranslateMessage(&amp;msg);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;DispatchMessage(&amp;msg);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div><br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>	Если функция GetMessage() обнаруживает в очереди сообщение <br>
WM_QUIT (код 0x12),  то  она  завершается  с  возвратом  значения  FALSE, <br>
что приводит к завершению цикла и переходу на предложение return Msg.wParam;<br>
т.е.  к  завершению  главной функции  и  всего  приложения. <br>
   Если функция GetMessage() не обнаруживает сообщений в очереди потока,<br>
   система останавливает  выполнение  данного потока и переводит<br>
его  в «спящее»  состояние. Такое  состояние  потока  не  потребляет<br>
процессорного времени и не тормозит работу системы. Поток возобновит<br>
свою работу, как только в очереди появится сообщение. <br>
//GetMessage ждет сообщение и выходит только, если окно получило сообщение.<br>
// PeekMessage выходит сразу в не зависимости от того есть сообщение или нетВместо  функции  GetMessage()  часто  используют  функцию   <br>
PeekMessage(), которая имеет следующий прототип: <br>
	BOOL PeekMessage<br>
		(<br>
			LPMSG lpMsg, //адрес структурной переменной с сообщением <br>
			HWND hWnd,  //дескриптор окна <br>
			UINT wMsgFilterMin, //Min номер выбираемого сообщения <br>
			UINT wMsgFilterMax, //Max номер выбираемого сообщения <br>
			UINT wRemoveMsg   //флаг удаления сообщения <br>
		); <br>
	Первые четыре параметра функции PeekMessage() совпадают с параметрами функции GetMessage(). <br>
	Пятый  параметр  wRemoveMsg  определяет,  как  должно  быть  выбрано сообщение из очереди, а именно: <br>
	•  PM_NOREMOV – сообщение выбирается и не удаляется из очереди; <br>
	•  PM_REMOV – сообщение выбирается и удаляется из очереди. <br>
<br>
•    Функция PeekMessage()не ждет,когда сообщение поступит в очередь сообщений,а сразу возвращает управление.  Если  сообщения в очереди нет,то функция возвращает нуль, а если сообщение находится в очереди, оно помещается в структурную переменную типа MSG и удаляется из очереди сообщений (флаг  PM_REMOV) или не удаляется (флаг PM_NOREMOV).<br>
•    Функция  PeekMessage()  часто  используется  для  оптимизации работы программы. Если сообщение не находится в очереди сообщений, то в свободное время можно выполнять какую-либо другую работу. Этот прием часто встречается в программах, выполняющих графическую анимацию, и более эффективен, чем использование сообщений от таймера. </div></div><br>
<br>
<strong class='tag-b'>?6 </strong>typedef -нужен для того, чтобы дать другое имя, для чего? что легче читать, что сам написал или зарезервированы для того чтобы не произошел бзод, если везде понаставить int, short, __stdcall, то нормально работает или есть какое-то соглашение(условие) для стабильности проги и компиляции?<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 WORD &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ATOM;</div><div class="code_line">typedef unsigned short &nbsp; &nbsp; &nbsp;WORD;</div><div class="code_line">#define WINAPI &nbsp; &nbsp; &nbsp;__stdcall</div><div class="code_line">typedef unsigned int &nbsp; &nbsp; &nbsp; &nbsp;UINT;</div><div class="code_line">typedef UINT WPARAM;</div><div class="code_line">typedef LONG LPARAM;</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'>?7</strong><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">&nbsp;LRESULT CALLBACK WndProc(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;HWND hWnd,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UINT message,//код сообщения</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WPARAM wParam,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LPARAM lParam//32 bit</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;)</div></ol></div></div></div></div><br>
UINT message,//это код сообщения или идентификатор сообщения<br>
<strong class='tag-b'>?8</strong>в vs6 сам добавляется файл basetsd.h <br>
для чего он образуется ? почему он сам ставиться? для чего он нужен?<br>
его нету в проекте dev и codeblock&#33;<br>
<span class="tag-color tag-color-named" data-value="red" style="color: red"><strong class='tag-b'>спасибо всем кто ответит наболевшие вопросы</strong></span><br>
любознательность это порог? или любо знать]]></description>
        <author>grat1</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      </channel>
      </rss>
	