Аннотация:
Эта статья является введением в программирование на «чистом» Win32 API. Она предназначена для начинающих программистов, пишущих программы на Visual C++ 6 при помощи библиотеки MFC, но, я надеюсь, может пригодиться и более опытным людям.
Здравствуйте, Яковлев Игорь Сергеевич, Вы писали:
ЯИС>Эта статья является введением в программирование на «чистом» Win32 API. Она предназначена для начинающих программистов, пишущих программы на Visual C++ 6 при помощи библиотеки MFC, но, я надеюсь, может пригодиться и более опытным людям.
Здравствуйте, OLEGus1, Вы писали:
ЯИС>>Эта статья является введением в программирование на «чистом» Win32 API. Она предназначена для начинающих программистов, пишущих программы на Visual C++ 6 при помощи библиотеки MFC, но, я надеюсь, может пригодиться и более опытным людям. OLE>Ну и как ее обсуждать, если она недоступна?
ЯИС>Авторы: ЯИС> Яковлев Игорь Сергеевич
ЯИС>Аннотация: ЯИС>Эта статья является введением в программирование на «чистом» Win32 API. Она предназначена для начинающих программистов, пишущих программы на Visual C++ 6 при помощи библиотеки MFC, но, я надеюсь, может пригодиться и более опытным людям.
Ну хоть два слова о том, что делается в TranslateMessage(…) можно было бы сказать… А то GetMessage и DispatchMessage расписаны, а вот с Translate неясно!
В целом, спасибо!
Help will always be given at Hogwarts to those who ask for it.
_FR>Ну хоть два слова о том, что делается в TranslateMessage(…) можно было бы сказать… А то GetMessage и DispatchMessage расписаны, а вот с Translate неясно!
да, знаю, тема с TranclateMessage не раскрыта, вроде как специально хотя думаю что зря, тк описаны все, кроме нее! =)
кому интересно:
TranslateMessage переводит комбинации сообщений WM_KEYDOWN, WM_KEYUP в WM_CHAR или WM_DEADCHAR и комбинации WM_SYSKEYDOWN, WM_SYSKEYUP в WM_SYSCHAR или WM_SYSDEADCHAR и добавляет их в очередь.
_FR>В целом, спасибо!
пжалуста, хотя я и не думал что ее будут печатать =))
Здравствуйте, Kubyshev Andrey, Вы писали:
KA>Не понимаю актуальности этой статьи в 21 веке. Статья тем более неполная как признает автор. KA>А почему не написать полную ?
Она не то чтобы не полная.... Просто то что в ней описано вряд ли имеет какую-то пользу. К примеру книга Рихтера по Win32 как раз и описывает Win32API. Но там это сделано структурировано и грамотно. А здесь просто обрывки знаний...
Здравствуйте, Яковлев Игорь Сергеевич, Вы писали:
ЯИС>Аннотация: ЯИС>Эта статья является введением в программирование на «чистом» Win32 API. Она предназначена для начинающих программистов, пишущих программы на Visual C++ 6 при помощи библиотеки MFC, но, я надеюсь, может пригодиться и более опытным людям.
Особенно понравилось "Только твоя лень помешала тебе сделать это самому" [кусь]
ТАК, ЛЕНТЯИ! АНУ БЫСТРО ВЫКИНУЛИ РЕДАКТОР РЕСУРСОВ И МАРШ СОЗДАВАТЬ ДИАЛОГИ ПРЯМО В ТЕКСТЕ ПРОГРАММЫ!!!
Дайош разработку ПО только в текстовом редакторе и в компиляторе вызываемом исключительно из командной строки!!!
Здравствуйте, Kubyshev Andrey, Вы писали:
KA>Не понимаю актуальности этой статьи в 21 веке. Статья тем более неполная как признает автор. KA>А почему не написать полную ?
Да вот поэтому в 21 веке полно программистов, пишуших под MFC, VTL, framework, и не понимающих что же происходит на самом деле за всеми обертками и библиоттеками классов, а статья, действительно, для новичков. Тем кого это заинтересовала — читайте Рихтера.
ЯИС>Авторы: ЯИС> Яковлев Игорь Сергеевич
ЯИС>Аннотация: ЯИС>Эта статья является введением в программирование на «чистом» Win32 API. Она предназначена для начинающих программистов, пишущих программы на Visual C++ 6 при помощи библиотеки MFC, но, я надеюсь, может пригодиться и более опытным людям.
"HINSTANCE hPrevInstance – дескриптор предыдущего экземпляра приложения. Этот дескриптор остался от старых версий Windows — скорее всего, вам он никогда не пригодится."
Этот параметер был не валиден начиная с Windows98. Сейчас он не используется вообще и всегда равен NULL.
V>"HINSTANCE hPrevInstance – дескриптор предыдущего экземпляра приложения. Этот дескриптор остался от старых версий Windows — скорее всего, вам он никогда не пригодится."
V>Этот параметер был не валиден начиная с Windows98. Сейчас он не используется вообще и всегда равен NULL.
Этот параметр невалиден для всех win32, т.е. начиная с вин95. Более того, настоящий энтри поинт в исполняемом модуле вообще не получает никаких параметров.
А в целом — статья имхо уровня значительно ниже rsdn. Мое мнение, что максимум место этому — в FAQ. Я, конечно, понимаю, что есть проблема нехватки материалов для журнала, но если публиковать такие вещи, то, имхо, доверие к самому журналу как источнику интересной, полезной и, главное, новой информации значительно упадет. Без обид, я просто высказываю свое мнение о прочитанном.
Здравствуйте, Andrew S, Вы писали:
AS>А в целом — статья имхо уровня значительно ниже rsdn. Мое мнение, что максимум место этому — в FAQ. Я, конечно, понимаю, что есть проблема нехватки материалов для журнала, но если публиковать такие вещи, то, имхо, доверие к самому журналу как источнику интересной, полезной и, главное, новой информации значительно упадет. Без обид, я просто высказываю свое мнение о прочитанном.
Я тоже так думаю. Ничего личного к автору, но статья никуда не годится.
Во-первых, она опоздала лет на 10-15. Учить в 2006 году работе с окошками и оконными сообщениями на WinAPI — это напрасная трата времени и сил. Если так уж хочется изучать WinAPI, то гораздо полезнее будут функции из kernel32.lib. Вот они уж точно устареют только вместе с Windows
Во-вторых, не раскрывает даже той темы, которую пытается описывать. Мне припоминается пара статей из журнала "Мир ПК" (? или что-то типа того, уже не помню) за 1991 год, где то же самое изложено гораздо лучше. Но, опять же, обратите внимание на год
Здравствуйте, Andrew S, Вы писали:
AS>А в целом — статья имхо уровня значительно ниже rsdn. Мое мнение, что максимум место этому — в FAQ. Я, конечно, понимаю, что есть проблема нехватки материалов для журнала, но если публиковать такие вещи, то, имхо, доверие к самому журналу как источнику интересной, полезной и, главное, новой информации значительно упадет. Без обид, я просто высказываю свое мнение о прочитанном.
Полностью согласен. Оправдыватся ориентированностью на новичнков глупо — есть аудитория, а есть уровень. В целом я бы говорил не о конкретной статье, а о тенденции публикации статей сомнительного уровня. Причём моё мнение, что в нехватке нормального материала виноваты не только температура и влажность, но и другие факторы. В частности меня крайне удивило, что 3я часть статьи
"Технологии построения распределенных приложений в .NET. Часть 3. Пространство имен System.EnterpriceServices"
опубликована в журнале алгоритм, в то время как первые две
"Технологии построения распределенных приложений в .NET Часть 1. Пространство имен System.Net"
"Технологии построения распределенных приложений в .NET Часть 2. Пространство имен System.Messaging"
В RSDN Magazine #2-2004 и #3-2004 соответсвенно. Подобный уход авторов, тем более хороших авторов, коим Мика Сухов несомненно является, ни о чём хорошем не говорит.
Статьи разные нужны, статьи разные важны Так или иначе, РСДН посещает
значительное количество начинающих, которые высказываются за то, чтобы на РСДН
были статьи самого различного уровня. Эта статья, очевидно, ориентирована на
начинающих. Если она окажется кому-нибудь полезной — замечательно; если нет —
ничего страшного. Таким образом, в худшем случае данная статья может остаться
невостребованной. А в лучшем — поможет какому-нибудь новичку разобраться со
строками. Что же в этом плохого?
A>(обоим) Не надо путать уровень с аудиторией
Не очень понял фразу в контексте. Можешь раскрыть идею подробнее?
Спасибо я по ссылке был учавствовал в том топике и с ПК в принципе согласен.
FM>Не очень понял фразу в контексте. Можешь раскрыть идею подробнее?
Есть аудитория, то есть те, для кого написана статья. Причём это как правило достаточно узкая категория людей, не просто новички/профи, а пользователи каких-то конкретных технологий, программ, библиотек. А есть уровень.
Чем же хорошая статья отличается от плохой? Очевидно литературной составляющей, степенью удобочитаемости. Тем что её прочтут не только непосредственно заинтересованные, но и другие. Возьмём случайно выбранную статью, благо первая страница сайта нам в этом поможет. Хмм вышло вот это http://www.rsdn.ru/article/mag/200301/WindowsDreams.xml
О, уже лучше. Хорошая ли это статья? Ответ прост — я прямо сейчас её перечитал. Я никогда не писал на MC++ чего-либо серьёзного ( в отличие от Си++ ) и не собираюсь. Я считаю, что если уж вляпался в дерьмо с managed кодом, то спохватыватся и гнатся за производительностью поздно — довольствуйся тем, что имеешь. В целом, по большому счёту, лично для меня статья абсолютно бесполезная, но... она классно написана. Мне всё время было интересно её читать: и в начале и в конце и в середине. Я не специалист по анализу текстов, я не могу назвать признаков по которым некоторая статья хорошая, а другая плохая. Просто одни я дочитываю, а другие нет. Точно так же я знаю какие пирожные вкусные, а какие фигня, но не могу этого объяснить на словах, просто одни ем, а другие нет
Суть моей мысли в том, что плохая статья совсем не является причиной называть плохим автора. Автор вполне мог просто поленится, потратить мало времени, отнестись недостаточно ответсвенно. Безусловно даже то, что есть кому-то может быть полезно, но это не уровень журнала. И вот тут мы начинаем упрекать уже не автора ( автор своё черное дело уже сделал ) а редакцию. ИМХО если нет материала лучше по-честному выходить реже, чем наполнять журнал всякой туфтой.
Здравствуйте, adontz, Вы писали:
A>Есть аудитория, то есть те, для кого написана статья. Причём это как правило достаточно узкая категория людей, не просто новички/профи, а пользователи каких-то конкретных технологий, программ, библиотек. А есть уровень. A>Чем же хорошая статья отличается от плохой? ... Точно так же я знаю какие пирожные вкусные, а какие фигня, но не могу этого объяснить на словах, просто одни ем, а другие нет
+1
A>Суть моей мысли в том, что плохая статья совсем не является причиной называть плохим автора. Автор вполне мог просто поленится, потратить мало времени, отнестись недостаточно ответсвенно. Безусловно даже то, что есть кому-то может быть полезно, но это не уровень журнала. И вот тут мы начинаем упрекать уже не автора ( автор своё черное дело уже сделал ) а редакцию. ИМХО если нет материала лучше по-честному выходить реже, чем наполнять журнал всякой туфтой.
Спасибо за развернутый ответ
Насколько понимаю, статья опубликована на сайте, но не в журнале, так что поводов переживать нет
Мой же комментрарий касался только замечания KA>Не понимаю актуальности этой статьи в 21 веке.
Здравствуйте, Kubyshev Andrey, Вы писали:
KA>Не понимаю актуальности этой статьи в 21 веке. Статья тем более неполная как признает автор.
Мне кажется, что данная статья была бы полезна тем, кто хочет делать игры например.
Другое дело, что материалов на эту тему много. Почти в каждой статье начального уровня про Direct3D это все есть.
KA>А почему не написать полную ?
Здесь я согласен, можно было бы и подробнее и полнее описать.
Этот дескриптор остался от старых версий Windows — скорее всего, вам он никогда не пригодится.
Этот дескриптор однозначно никогда не пригодится.
This parameter is always NULL.
(MSDN)
Вообще, на мой взгляд, все что передается в параметрах WinMain — абсолютно не востребовано.
Возьмем, к примеру, первый HINSTANCE. Он достаточно часто используется при работе с API, но доступ к нему нам нужно иметь чаще всего не из WinMain, а из оконных процедур и других функций. Во всех примерах нас упорно приучают хранить этот хэндл в глобальной переменной с именем вроде g_hInst. Хотя на деле его всегда можно определить "на лету" с помощью вызова ::GetModuleHandle(NULL). (Надо сказать, что для DLL этот способ может не сгодиться; но речь сейчас идет не о DllMain, а о WinMain и модулях EXE).
Командная строка доступна через функцию ::GetCommandLine(). Кстати, если поступать именно таким способом, то мы получим также самый первый параметр — полный путь и имя приложения, что бывает полезно для определения папки, в которой лежит EXE-файл. Скажем, чтобы заменить "exe" на "ini" и считать/записать настройки, хранящиеся в одной директории с программой.
Ну и наконец, последний параметр nCmdShow не выдерживает никакой критики! Это значение извлекается из структуры STARTUPINFO процесса, также доступной из любой точки. Однако нет никакой необходимости самостоятельно копаться в этой структуре. Параметр должен быть использован приложением для задания состояния главного окна (в хороших программах таковое имеется и, как правило, одно). После успешного создания окна с помошью ::CreateWindow просто показываем его с вызовом ::ShowWindow(SW_SHOWDEFAULT). Значение SW_SHOWDEFAULT указывает как раз на то, что будет использовано состояние окна, переданное в STARTUPINFO.
Ну, и в качестве резюме: давайте перестанем писать под Win16 API. Это уже не актуально. Нужны новые подходы, новые статьи, новые примеры.
Здравствуйте, ArickS, Вы писали:
KA>>Не понимаю актуальности этой статьи в 21 веке. Статья тем более неполная как признает автор. KA>>А почему не написать полную ? AS>Да вот поэтому в 21 веке полно программистов, пишуших под MFC, VTL, framework, и не понимающих что же происходит на самом деле за всеми обертками и библиоттеками классов, а статья, действительно, для новичков. Тем кого это заинтересовала — читайте Рихтера.
Тогда уж — Петцольда. Если по теме статьи
А Рихтер — это совсем другая песня.
Здравствуйте, Kubyshev Andrey, Вы писали:
KA>Не понимаю актуальности этой статьи в 21 веке. Статья тем более неполная как признает автор. KA>А почему не написать полную ?
Статья — это в своём роде заметки, а не полноценный документ для работы.
Книга — это полноценный механизм передачи агрегированных знаний для чего угодно.
В данном случаи -- это статья. В вне зависимости о том, какой сегодня век XXI или XXII, актуальности они ни когда не потеряют.
К примеру, сейчас мои коллеги пишут спец. custom GINA без WinAPI там не обойтись.
Тема IT очень обширная, и высказывать мнения можно какие угодно.
Я живу с мыслей о том, что я за сутки изучаю (возможно не совсем точно подобрал слово) 1-2 новые технологии, а пока я сплю 10-20 новый появляется, т.ч. всем места под солнцем хватит)
Здравствуйте, Vovik1982, Вы писали:
V>Здравствуйте, Kubyshev Andrey, Вы писали:
KA>>Не понимаю актуальности этой статьи в 21 веке. Статья тем более неполная как признает автор. KA>>А почему не написать полную ?
V>Она не то чтобы не полная.... Просто то что в ней описано вряд ли имеет какую-то пользу. К примеру книга Рихтера по Win32 как раз и описывает Win32API. Но там это сделано структурировано и грамотно. А здесь просто обрывки знаний...
см. мой ответ: "Что есть статья, а что есть книга"
Уменьшать заслуги Рихтера ни кто не собирался, но он книгу писал.
А кто-то читал его статьи вообще?
во первых извиняюсь что был в командировке и не уделил внимания этим сообщениям!
вообще я согласен со многим, что здесь написано
во вторых актуальности статья не потеряет…
я не стал писать о создании приложения, например в MFC…это, по моему мнению, устарело…об оконных сообщениях должен знать каждый =) хотя сама статья написана в другом контексте…даже если мы все когда-нибудь будем пользоваться только событиями в .net
дело не в том, что HINSTANCE в main() не пригодится, дело в том, что и расчета нет, что читатель знает что такое HINSTANCE или HMODULE…(я говорю о читателях, на которых рассчитывается статья которые при чтении трудов тов. Рихтера, выпадут в осадок увидев схему «Алгоритм выборки сообщений из очереди потока»
статьи писать надо, любые, но дело в том, что rsdn не предупреждал и не спрашивал моего мнения по поводу размещения статьи в печать…(об этом я узнал практически только после выхода ее в продажу) и был этим удивлен…я не считаю эту статью тем контентом за которое можно заплатить деньги…таких статей много в инете…
согласен, необходимы статьи которые идут «в ногу» со временем...
если есть время и желание поделиться своими знаниями напишите их…
буду очень рад почитать…=)
Здравствуйте, igorekkk, Вы писали:
I>rsdn не предупреждал и не спрашивал моего мнения по поводу размещения статьи в печать…
Ты сам-то понимаешь, что сейчас сказал? Это ИМХО очень серьёзное обвинение.
Я не к тому, что ты врёшь, а все остальные белые и пушистые, но просто если подобные факты имеют место быть, то мне ой-ой-ой как страшно.
I>>rsdn не предупреждал и не спрашивал моего мнения по поводу размещения статьи в печать…
A>Ты сам-то понимаешь, что сейчас сказал? Это ИМХО очень серьёзное обвинение. A>Я не к тому, что ты врёшь, а все остальные белые и пушистые, но просто если подобные факты имеют место быть, то мне ой-ой-ой как страшно.
AS>Так что ничего удивительного AS>Мне, например, за мою статью номер журнала, где ее опубликовали, так и не прислали Впрочем, я и не настаивал.
Мне вообще два раза прислали один и тот же номер Рассылка это отдельный разговор.
Просто последнее время много воплей про авторские права, а тут такие ляпы со стороны редакции. Причём прямо подставляющие автора.
Например, статья может быть напечатана одновременно в двух журналах из-за того что РСДН молчал как рыба, а потом вдруг самопроизвольно разродился. Это и описывается в приведённой тобой ссылке. С другой стороны, насколько мне известно, напечатать одну и ту же статью в двух разных научных журналах (Я знаю, что многие думают про Хакер, но не об этом речь) считается крайне неэтичным и может привести к тому, что автора вообще перестанут печатать. А это, знаете ли, репутация, а не УК. Это суд можно обмануть, а у людей неприятный осадок надолго остаётся.
A>Ты сам-то понимаешь, что сейчас сказал? Это ИМХО очень серьёзное обвинение.
Обвинение — сильно сказано ... я не обвиняю журнал или кого-либо в чем-либо,
меня конечно, это несколько удивило, но не более...
возможно редакторы rsdn просто не сомневались что статья для любого вида публикации, так оно и есть!
я не имею к ним никаких претензий...
то что было сказано мною выше по ветке скорее в контексте ее присутствия в печатном издании как факт...
мне конечно не по себе судить так о "своём детище"...за меня судит читатель...=)
моя статья была скорее "попыткой" написать статью, насколько она удалась судить Вам...
мне былоб интересно написать еще (учитывая мнение публики), а возможно, бросить это занятие, и наконец заняться разговором с начальством по поводу летнего отпуска =)
судить опять Вам =)
конечно, признаком хорошего тона со стороны rsdn была бы присланная копия журнала...
чтож...я купил его и так...