Что делает библиотека windows h
КАК быстро освоить API?
Чтобы понять что мы будем изучать, предлагаю вам на минутку перенестись в далёкие 80-ые годы теперь уже прошлого века! То были времена безраздельного правления злого волшебника DOSa. До появления доброй феи — оконной оболочки Windows труд угнетённых программистов был тяжёлым и рутинным. Подобно рудокопам, пробивающим себе дорогу в каменной породе железными молотками, писали они свои программы. Большинство программ — утилиты, базы данных, информационные системы — создавались тогда в текстовом режиме — унылом и беспросветном, где существует только 16 цветов и где экран — крохотное поле 80X25 символов. Те же смельчаки, которые решались предоставить пользователю графический интерфейс, были настоящими героями.
Почему? Ну, во-первых, никаких специальных функций для работы с графикой в DOS не было и в помине, и практически каждому разработчику приходилось либо писать свои собственные библиотеки или классы для работы с графикой, каждый раз изобретая велосипед, либо использвать те, что создали его коллеги. Это был тихий ужас! Писать графические функции приходилось чуть ли не не ассмеблере, генерируя 10-й вектор прерывания. И вот печальный итог — каждая фирма создавала свои библиотеки шрифтов, картинок и элементов управления. И каждый раз, проектируя новую программу, приходилось возвращаться к той самой печке и заново придумывать интерфейс пользователя. Представьте себе, что не было никаких стандартов, и каждый программист делал интерфейс, как Бог на душу пошлёт. Так это хорошо! — Скажете вы, — никто не зависел от стандартов, навязанных Microsoft, было простор для творчества. Так-то оно так, только программисты, которые пишут непонятные программы, отвечают, что они никакие не дизайнеры и проектировать интерфейс пользователя не их задача. В результате, очень часто программы ещё худо-бедно работали, но работать в них было сущим мучением.
Бедный пользователь был вынужден каждый раз тратить драгоценное время, чтобы понять — что же программист хотел этим сказать, когда сделал именно такие кнопки и, простите, как всё это работает?
Разработчикам игр было хуже всех. Для того, чтобы написать такую игру, как DOOM, надо было опускаться к самым низам и программировать уже не столько DOS, сколько железо, напрямую обращаясь к видеопамяти PCI видеокарты — иначе не будет быстродействия, ведь тормозит обычно графика. А если вспомнить, что в составе MS-DOS никогда не было никаких драйверов, то приходилось учитывать все популярные на тот момент видеокарты, программируя графику для каждого типа отдельно, чтобы потом игра вообще пошла! Может быть вы помните те времена, когда приходилось вручную указывать тип видеокарты, а для звуковой карты указывать IRQ, DMA и количество каналов? Какой пользователь может это знать?
С появлением Windows появилась прекрасная возможность сосредоточить свои силы не столько на внешнем обрамлении программы — кнопках, флажках и меню, сколько на её содержании, сути — том, что она реально делает. Это на самом деле важно, так как труд программистов занимает много времени, а значит, стоит больших затрат. Для разработчиков на языке СИ была написана обширная библиотека windows.h, включавшая в себя всю поднаготную Windows и позволявшая в значительной степени унифицировать процесс разработки. А следовательно, и снизить затраты на разработку ПО. Всю эту огромную спецификацию программирования под Windows назвали API (Application Programming Interface) — интерфейс прикладного программирования.
API покрывает собой всё — графику, элементы управления, системные функции, работу с устройствами и ещё многое другое. По сути, API функции это промежуточно звено между пользователем и ядром операционной системы. При работе программы API функции превращаются в системные вызовы и обрабатываются ядром ОС. Ядро в свою очередь позволяет скрыть от программиста всё железо, представляя всё hardware, как виртуальные устройства — виртуальную видеокарту, виртуальный монитор, виртуальный принтер.
Время шло, и компанией Microsoft была разработана библиотека классов MFC (Microsoft Foundation Classes), а компанией Borland OWL (Object Window Library), облачившие API в объектно-ориентированный вид. Теперь уже никто не программирует окна и графику на процедурном API с нуля, для этого есть другие, более универсальные средства. Но несмотря на это, до сих пор API поддерживается всеми библиотеками классов и очень широко используется. Ни одна библиотека классов не включает в себя всех API-функций. Очень часто разработчики решают за нас — что нам нужно, а без чего мы обойдёмся. Всегда, когда под рукой нет нужного средства, на помощь приходят API-функции. И если вы хотите, чтобы программа работала быстрее, а выполнимый файл занимал меньше места, не ленитесь использовать API-функции.
Ежегодно спецификация API пополняется новыми функциями, которые внедряются в систему с помощью патчей и сервисных пакетов. С каждой новой версией Windows, API разрастается в геометрической прогрессии, и выпускаемые по ней спецификации выглядят уже, как многотомные энциклопедии. Это основа-основ Windows. Используя нужные API-функции, вы всегда сможете сделать в всё, что захотите. Windows станет для вас ласковым ручным котёнком. Вы сможете рисовать на экране всё, что захотите, и самое удивительное — это будет работать!
В последнее время выходит великое множество литературы, посвящённой «интересным возможностям Windows», вроде «Windows глазами хаккера» или «Прикольные штучки для Windows», «Как напугать пользователя». Большинство исходных текстов в них написано именно на API.
Поскольку мы только начинаем изучение программирования для Windows, процедурный API-код подойдёт нам как нельзя лучше. Он поможет понять механизм программирования для Windows, даст нам базовые знания об этой операционной системе, её принципах и механизмах, подготовив в полной мере к изучению библиотек классов MFC и VCL. Изучив работу элементов управления, мы рассмотрим некоторые неочевидные на первый взгляд возможности Windows, заглянув за ту самую запретную черту, куда можно попасть только зная язык API.
КАК можно обойтись только windows.h?
Разработчики Windows в своё время явно погорячились, когда решили, что программист обойдётся одним единственным библиотечным файлом. Сначала было всё ничего, но он стал разрастаться и если бы вы его решили распечатать, вам пришлось бы сразу купить новый картридж для принтера и толстенную пачку бумаги. С каждой новой версией Windows число API функций всё прибывало, росло число структур, макросов и типов данных. На сегодняшний день windows.h включает в себя более 1000 одних только констант.
#define WM_QUIT 0x0012
А кроме того, прототипы ВСЕХ API-функций. Что было делать? Современный файл windows.h разделили на 3 составляющих по назначению: kernel, user и gdi. Теперь эти файлы носят такие названия:
winuser.h — объявления из модуля USER.EXE или ассоциированые с ним
wingdi.h — интерфейс графических устройств (GDI), работа с графикой
windef.h — определение фундаментальных типов данных
winnls.h — поддержка национального языка в локализованных версиях
wincon.h — консольный ввод-вывод, минующий интерфейс графических устройств
winbase.h — базовый программный интерфейс.
и другие.
В любом случае, к API-программе придётся подключать только windows.h. И это большой плюс. В программировании под DOS приходилось отдельно подключать библиотеку для работы со строками string.h, графическую библиотеку graphics.h, библиотеку ввода-вывода stdio.h. Windows.h «знает» не только все API-функции, но кроме того ещё и все функции языка СИ, которые мы использовали раньше. Многие библиотеки, которые в DOS актуальны, с началом программирования для Windows сразу отошли в мир иной это:: graphics.h, dir.h, stdio.h, conio.h, stdlib.h, process.h, dos.h. Не скоро теперь они встретятся нам на пути!
Файл windows.h существует до сих пор и пополняется новыми функциями и обновляется с каждой новой версией Visual Studio. При использовании библиотек классов MFC вы не будете его подключать, но только потому, что он уже подключён. В первых программах на API мы будем использовать именно его.
Что делает библиотека windows h
Зачем нужен и что делает windows.h ?
В какой-то библиотеке он включается следующим фрагментом:
#ifdef _WIN32
# include
# ifdef small
/* windows.h define small to char */
# undef small
И что за _WIN32, кем и в каком месте он определяется?
Если кто прокомментирует, буду премного благодарен.
| От: | Tazman |
Дата: | 21.07.05 09:44 | |
Оценка: |
Здравствуйте, Chelovek_, Вы писали:
C_> Зачем нужен и что делает windows.h ?
C_> В какой-то библиотеке он включается следующим фрагментом:
Windows.h нужен для того, что бы ты мог использовать в своей программе функционал, предоставляемый операционной системой (Windows 95, 98, NT, 2000, XP).
C_>#ifdef _WIN32
C_># include
C_># ifdef small
C_> /* windows.h define small to char */
C_># undef small
C_> И что за _WIN32, кем и в каком месте он определяется?
C_> Если кто прокомментирует, буду премного благодарен.
А макрос _WIN32 генерируется компилятором, и говорит о том какая версия операционной системы используется.
_WIN16 — 16-ти разрядная
_WIN32 — 32-х разрядная
и вообще макрос _WIN?? говорит о том что используются винды.
| От: | Chelovek_ |
Дата: | 21.07.05 10:02 | |
Оценка: |
C_>> Зачем нужен и что делает windows.h ?
C_>> В какой-то библиотеке он включается следующим фрагментом:
T>Windows.h нужен для того, что бы ты мог использовать в своей программе функционал, предоставляемый операционной системой (Windows 95, 98, NT, 2000, XP).
Спасибо. А не могли бы пояснить (пример какой-нибудь), что такое функционал, предоставляемый Windows ?
Например, если программа работет в консольном режиме и занимается вычислениями, она все равно использует какие-то услуги из Windows.h ?
C_>>#ifdef _WIN32
C_>># include
C_>># ifdef small
C_>> /* windows.h define small to char */
C_>># undef small
C_>> И что за _WIN32, кем и в каком месте он определяется?
C_>> Если кто прокомментирует, буду премного благодарен.
T>А макрос _WIN32 генерируется компилятором, и говорит о том какая версия операционной системы используется.
T>_WIN16 — 16-ти разрядная
T>_WIN32 — 32-х разрядная
T>и вообще макрос _WIN?? говорит о том что используются винды.
Еще раз спасибо. А можно сказать компилятору (в настройках каких-нибудь), чтобы он этот макрос не генерировал? (чисто теоретически, на практике понятно, что он много кому может быть нужен).
| От: | jazzer | Skype: enerjazzer |
Дата: | 21.07.05 10:32 | ||
Оценка: |
Здравствуйте, Chelovek_, Вы писали:
C_>>> Зачем нужен и что делает windows.h ?
C_>>> В какой-то библиотеке он включается следующим фрагментом:
T>>Windows.h нужен для того, что бы ты мог использовать в своей программе функционал, предоставляемый операционной системой (Windows 95, 98, NT, 2000, XP).
C_> Спасибо. А не могли бы пояснить (пример какой-нибудь), что такое функционал, предоставляемый Windows ?
C_> Например, если программа работет в консольном режиме и занимается вычислениями, она все равно использует какие-то услуги из Windows.h ?
имеется в виду явное использование. То, что его рантайм использует неявно, тебя не должно волновать.
C_> Еще раз спасибо. А можно сказать компилятору (в настройках каких-нибудь), чтобы он этот макрос не генерировал? (чисто теоретически, на практике понятно, что он много кому может быть нужен).
См. документацию к твоему компилятору.
| От: | EyeOfHell | eyeofhell.habr.ru |
Дата: | 21.07.05 17:04 | ||
Оценка: |
А не могли бы пояснить (пример какой-нибудь), что такое функционал, предоставляемый Windows ?
Например, если программа работет в консольном режиме и занимается вычислениями, она все равно использует какие-то услуги из Windows.h ?
Там содержаться типы, выходящие за рамки стандарта C++ и использующиеся в Windows: HANDLE, HWND, UMSG итд.
Так же там содержаться определения части системных функций и структур — CreateWindowA() и прочие.
Если программы ТОЛЬКО считает — тоесть не требует от ползователя ввода и ничего никуда не выводит, например:
То для такой программы Windows.h включать не обязательно. А вот как только нужно вывести на экран диалог с помошью MessageBox() — сразу же придется. Бо в стандарте C++ никакого MessageBox() не предусмотрено
где найти функции библиотеки windows.h и их описание
Где найти описание команд, свойств, методов библиотеки vtools.dll
Вот встретил в программе ЗагрузитьВнешнююКомпоненту(«VTools.dll»);.
Описание функции шаблонного класса библиотеки в отдельном cpp-файле
Есть библиотека. В файле ARRAYLIST.HPP описан шаблон template class ArrayList.
Найти описание библиотеки QR-code
Добрый день. Подскажите, пожалуйста, есть ли подробное описание библиотеки qrcode в python на.
Где взять описание Windows.Media.Ocr на русском?
подскажите где взять описние Windows.Media.Ocr на русском языке? на msdn я нашел только на.
Иногда полезно(быстрее) открыть библиотеку и посмотреть какие функции, какие структуры используются
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
Где найти описание IDE
Я знаю синтаксис языка C++, но никак не могу найти книгу в которой рассказалибы о различных.
Референсы, где найти описание
Есть куча библиотек в екселе, есть ли обяснение что к чему?
Где найти описание PDQTapi?
Kto stalkivalsj s etim controlom. gde ego mogno vzjt (estestvenno bazplatno) i est li na nego.
Где найти описание типа IHTMLWindow7?
Здравствуйте, у меня такая проблема — есть IWebBrowser2 и я могу подтягивать без проблем любые.
Где найти описание функций ABCObjects
Всем привет. Очень много просидел в интернете, но никакой информации не нашёл про модуль.
Где можно найти описание функций С++?
Подскажите , плиз, где можно найти самое подробное описание функций С++ (синтаксис, прототип.