Основы WinAPI
Win32 API. Урок 2. MessageBox
Win32 API. Урок 1. Основы
Этот туториал пpедполагает, что читатель знает, как использовать MASM. Если нет, то для начала скачайте win32asm и пpочитайте текст, входящий в состав энтого пакета, и только затем пpодолжите чтение моего бреда.
Хоpошо. Будем считать, что вы это сделали ;) Давайте пpиступим.
Использование оболочки Windows совместно с COM
Программировать с использованием COM настолько трудно, что Вы не должны даже пробовать это без MFC. Правильно или неправильно? Абсолютная чушь! Рекламируемые OLE и его преемник COM имеют элегантность гиппопотама, занимающегося фигурным катанием. Но размещение MFC на вершине COM подобно одеванию гиппопотама в клоунский костюм еще больших размеров.
Что является неправильным в OLE
Вы могли слышать или читать критические мнения относительно OLE. Программисты обычно жалуются на сложность системы подсчета ссылок и недостатосную поддержку наследования. Microsoft обожествляет этот счетчик, говоря, что нет никакого другого способа, и что этот способ является для вас наилучшим1. Интерфейсы, как сказано, должно быть ссылочно подсчитаны (refcounted), и имеется мудрый, рубильник обеспечивающий соединение (агрегацию) частей (нежно называемый ухудшением (aggravation) OLE программистами), который обеспечивает те же самые функциональные возможности, что и наследование. Может быть они правы, и проблема взаимодействия с объектами, загружаемыми во время выполнения настолько сложна, что просто не имеется более лучшего способа? С другой стороны, возможно, что OLE имеет фатальный дефект, который только обостряется во всех других местах.
Обертка для автоматизации
Построив интеллектуальное OLE на вершине старого, Вы узнаете другое OLE
Прежде всего Вы должны сообщить миру, что собираетесь использовать OLE. Имеется небольшой класс, который будет делать это за Вас. Только внедрите объект этого класса в некоторый высокоуровневый сконструированный объект прежде, чем Вы что-либо сделаете с OLE и удалите его после того, как отработаете с OLE. В Windows программе первоосновой для UseOle является "Контроллер".
Почему плохо использовать MFC
"Hello Windows!" в классовой обертке
Прежде, чем приступить к программированию для Windows, необходимо понять, как выполняется представленная здесь самая простая программа. Обратите внимание: это - Win32-программа. Она будет выполняться под управлением Windows 95 и Windows NT (если кто-то хочет, чтобы Вы программировали для 16-разрядной платформы, то он должен платить Вам вдвое больше!). Windows API вызовы окрашены в синий цвет, а специфические для Windows типы данных окрашены зеленым. Я буду также ставить два двоеточия перед обращениями к функциям API. В C++ это означает вызов глобальной функции и позволяет, в ряде случаев, избавиться от неоднозначности.
Обобщенная Windows программа
Эта программа использует набор базовых классов, которые инкапсулируют Windows API
- Controller (Контроллер) -- Мост между оконной процедурой и объектно-ориентированным миром.
- View (Вид) -- Инкапсулирует вывод Windows программы.
- Canvas (Холст) -- Инкапсулирует различные контексты устройств и действия, которые Вы можете сделать с их использованием.
- Model (Модель) -- Работник и мозг вашей программы. Вообще не имеет дело с Windows.
Монитор и его характеристики
Как добиться от монитора его характеристик: разрешения, тактовой частоты и пр.? А поменять? Легко!
Есть несколько WinAPI функций. Фактически, приведу только список функций, приводить подробности глупо – поскольку все они есть в MSDN. В том же MSDN в конце каждого описания функции есть ссылки на близкие по назначению функции.
