Под термином WINDOWS-программирование можно подразумевать все, что угодно, но в большинстве своем это означает "событийное" программирование. Именно эта концепция используется в Windows. Она кардинально отличается от того, как писались программы для DOS. Если в DOS программа представлялась единым целым и опрашивала в цикле клавиатуру, мышь, порты и пр. и в зависимости от того, нажата ли клавиша, передвинулась мышь, выполняла определенные действия. В Windows этот процесс опроса берет на себя сама система и если произошло какое-то действие (событие), то сообщает (посылает вашей программе сообщение) об этом. А программа фактически состоит из отдельных функций, каждая из которых обрабатывает определенные (клавиатура, мышь) сообщения и соответствующим образом реагирует на них (т.е. реагирует на событие). Очевидно, что события могут быть разными - это не только клавиатура и мышь, а например закрытие окна, изменение его размеров, завершение работы Windows, появление новых данных в буфере обмена и пр. Причем программа может реагировать только на определенные сообщения, а остальные, будут обработаны системой.
Наиболее важным моментом при программировании для Windows является интерфейс прикладного программирования - (Application Programming Interface,API) - это набор самых различных функций, с помощью которых приложение может взаимодействовать с Windows.
API содержит около 2000 функций! Кроме этого в него входит несколько сотен сообщений, макросов и предопределенных констант. С одной стороны все это облегчает работу программиста, а с другой требует изучения многих томов литературы. Но здесь же следует вспомнить, что из десятков тысяч слов русского языка средний человек использует от силы пять тысяч.
Win32 API реализован на следующих платформах: Win32s (интерфейс Win32s # свободно распространяемое подмножество API Win32, работающее под ОС Windows 3.x на процессорах 80386 и старше), Windows 95/98/NT/2000/XP/2003, Windows CE.
Все Win32-платформы содержат Win32-функции, а значит, можно вызывать любую из функций интерфейса Win32 API независимо от того на какой платформе компилируется приложение. Но реализация реализации рознь.
Все Win32-функции существовуют на каждой платформе, но поддерживаются на некоторых из них только частично.
Win32 API в основном состоит из трех компонентов: Kernel, User и GDI, которые обеспечивают интерфейс с базовой OS, управление окнами и приложениями и предоставляет поддержку графики.
Знание WinAPI очень полезно, но в случае использования соответсвующих систем программирования не является обязательным. Если использовать Borlan Pascal или Borland С++, то знание API просто необходимо. В случае использования т.н. RAD-систем (системы быстрой разработки приложений), таких как Delphi, С++ Builder, Visual Basic, Visual C++ и им подобных знание WinAPI особо не требуется (но приветствуется). Все вышеперечисленные системы (а также множество других) являются ответом на вопрос "И где это делают?".
Программирование с применением API, представляет непростую задачу. Особенно трудоемким является процесс отладки таких программ. Поэтому все современные интегрированные средства программирования позволяют в значительной степени автоматизировать, написание таких программ. Но и здесь имеются свои проблемы. Для того чтобы разобраться, как написать самостоятельно программу с использованием API, достаточно изучить коды программ написанных другими программистами.