Главная » Win32 API

Логические шрифты. Функции вывода текста и измене­ния цветовых характеристик

Добавлено Дата: 6 August, 2012 категория: Win32 API

Приложения работают не с физическими, а с логическими шрифта­ми. Логический шрифт это объект GDI, содержащий требования к шрифту со стороны приложения. Эти требования анализируются под­системой GDI, и с помощью драйверов шрифтов подбираются подхо­дящие зарегистрированные в системе физические шрифты. Логиче­ский шрифт имеет дескриптор. По умолчанию в контекст устройства загружен растровый шрифт с символами переменной ширины SYSTEMFONT с кодировкой ANSI. Существует набор встроенных шрифтов, которые дескрипторы которых запрашиваются для загрузки в контекст функцией GetStockObject.

Читать »

Обработка сообщений от мыши

Добавлено Дата: 4 August, 2012 категория: Win32 API

Определить наличие мыши в системе можно с помощью функции
GetSystemMetrics, передав ей в качестве параметра значение
SM_MOUSEPRESENT. Если мышь есть, эта функция возвращает не­
нулевое значение. Для определения количества кнопок мыши можно

Читать »

Пример 2.

Добавлено Дата: 2 August, 2012 категория: Win32 API

Пусть даны три числа. Напишем функции для расчета среднего арифметического, произведения, суммы квадратов чисел, а также для проверки, являются ли 2 и 3 числа делителями первого. Все действия с числами оформим в виде меню, которое опишем в файле ресурсов:

Читать »

Технология отображения растров

Добавлено Дата: 30 July, 2012 категория: Win32 API

Для вывода DIB-растров используются функции StretchDIBits и SetDIBitsToDevice. Функция StretchDIBits имеет следующие пара­метры:

-  дескриптор контекста устройства;

-  х и у координаты, ширина и высота области-приемника изобра­жения (в логических единицах);

Читать »

Функция входа/выхода DLL

Добавлено Дата: 25 July, 2012 категория: Win32 API

Предположим, что вашей библиотеке динамической компоновки требуется некоторая инициализация и деинициализация. Например, если в DLL при ее загрузке вьщеляются какие-то ресурсы, то при ее освобождении эти ресурсы также должны освобождаться.

Особое значение имеет деинициализация: поскольку при отключе­нии DLL от адресного пространства процесса вьщеленная ею память сама собой не освобождается, а открытые файлы не закрываются, DLL должна самостоятельно обеспечивать «уборку мусора».

Читать »

Вызов функций из DLL

Добавлено Дата: 24 July, 2012 категория: Win32 API

Существует три способа загрузки DLL:

а) неявная;

б)  явная;

в) отложенная.

Рассмотрим неявную загрузку DLL. Для построения приложения, рассчитанного на неявную загрузку DLL, необходимо иметь:

•            Библиотечный включаемый файл с описаниями используемых объектов из DLL (прототипы функций, объявления классов и типов). Этот файл используется компилятором.

Читать »

Установка и удаление шрифтов в системе

Добавлено Дата: 23 July, 2012 категория: Win32 API

Чтобы приложение смогло выводить текст, используя глифы некое­го конкретного шрифта, он должен либо быть установлен в системной таблице шрифтов,  либо быть встроенным шрифтом используемого

графического устройства. Имена шрифтов, установленных на графиче­ском устройстве и хранящихся во внутренней системной таблице, можно получить при помощи функции EnumFontFamilies или ChooseFont.

Читать »

Назначение и типы контекстов

Добавлено Дата: 21 July, 2012 категория: Win32 API

Основой механизма взаимодействия приложений Windows с гра­фическими устройствами (экран и принтер) является интерфейс гра­фических устройств GDI (Graphics Device Interface). GDI это сово­купность программных средств Windows, организующих вывод на эк­ран или принтер графических объектов текстовых строк, геометри­ческих фигур, изображений и т.п. Windows-приложение не имеет не­посредственного доступа к аппаратуре. Вместо этого оно вызывает функции GDI, которые работают с драйверами физических устройств. Иначе говоря, приложения, обращаясь к функциям GDI, работают не с физическими устройствами вывода, а с логическими, и при вызове функций не учитывается физический способ отображения. Возможно­сти вывода и аппаратные особенности устройства учитывает его драй­вер. Благодаря этому механизму вывода графической информации приложения способны работать с любым устройством вывода, драйвер которого установлен в системе. Код библиотеки GDI находится в фай­ле gdi32.dll. Драйверы стандартных устройств поставляются как часть подсистемы ввода-вывода Windows, а драйверы специализированных устройств предоставляются их производителями.

Читать »

Типы растров

Добавлено Дата: 15 July, 2012 категория: Win32 API

Растр представляет собой набор пикселов, каждому из которых со­поставлены биты, кодирующие его цвет. Количество цветов пиксела равно 2N, где N количество битов, отводимых для хранения цвета. Например, для режимов TraeColor для хранения цвета используется 24 бита, по 8 бит на каждую из компонент RGB, а в режимах HiColor цвет пиксела хранится в 16 битах.

Читать »

Сообщения от клавиатуры

Добавлено Дата: 15 July, 2012 категория: Win32 API

При нажатии и отпускании клавиш драйвер клавиатуры формирует сообщения и передает их в системную очередь сообщений. Затем со­общения от клавиатуры поступают в очередь сообщений приложения-владельца окна, имеющего фокус ввода (input focus).

Понятие фокуса ввода связано с активным окном. Окно, имеющее фокус ввода это либо активное окно, либо дочернее окно активного окна. Окно является активным, если у него вьщелен заголовок, или рамка диалога, или текст заголовка в панели задач для минимизиро­ванного окна. Часто дочерними окнами для окна являются кнопки, пе­реключатели и другие элементы управления, причем сами дочерние окна никогда не могут быть активными. Если фокус ввода находится в дочернем окне, то активным является родительское окно этого дочер­него окна. То, что фокус ввода находится в дочернем окне, обычно по­казывается посредством мигающего курсора (для полей редактирова­ния), рамки вокруг надписи на кнопке (для кнопок) или другими при­влекающими внимание пользователя средствами. Если активное окно минимизировано, то окна с фокусом ввода нет.

Читать »

Сообщение WMPAINT и его обработка

Добавлено Дата: 10 July, 2012 категория: Win32 API

Если окно перемещается по экрану с помощью клавиатуры или мыши, то сохранение в неизменном виде содержимого клиентской об­ласти окна обеспечивают системные программы. Если часть окна за­слоняется при разворачивании пунктов меню, то временно закрытую область ОС также сохраняет сама и потом восстанавливает. Если же необходимо развернуть свернутое окно, или растянуть окно, или на фоне главного окна перемещается дочернее, то Windows уже не пере­рисовывает все окно, а посылает самому приложению сообщение WMPAINT. Приложение, получив это сообщение, должно перерисо­вать содержимое клиентской области окна, содержимое же заголовка окна перерисовывает Windows. Обработка WMPAINT включается в оконную функцию любого приложения, которое что-либо выводит на экран, Приложение может само информировать Windows, что ему тре­буется послать сообщение WMPAINT. Это осуществляется с исполь­зованием функций InvalidateRect, InvalidateRgn, UpdateWindow. In-validateRect объявляет заданную прямоугольную область окна повре­жденной, что приводит к генерации Windows сообщения WMPAINT. UpdateWindow передает WMPAINT непосредственно в оконную функцию.

Читать »

Описание инструментов рисования

Добавлено Дата: 10 July, 2012 категория: Win32 API

Как было отмечено выше, к графическим объектам, обеспе­чивающим выполнение графических операций, относятся перья, кисти, растровые изображения, палитры, шрифты. Рассмотрим общий алго­ритм работы с инструментами рисования:

а) создать новый инструмент с заданными характеристиками с по­

Читать »

Окно редактирования Edit Box

Добавлено Дата: 10 July, 2012 категория: Win32 API

Edit Box это прямоугольное окно предопределенного класса «Edit», в котором можно вводить и редактировать текст с клавиатуры. По умолчанию окно редактирования является однострочным, с авто­матической горизонтальной прокруткой и выравниванием текста по левой границе.

Читать »

Структура главной функции в минимальном приложении

Добавлено Дата: 7 July, 2012 категория: Win32 API

Минимальное приложение Windows состоит из 2 частей:

1.                главной функции с именем WinMain, включающей цикл обра­ботки сообщений;

2.                оконной функции WndProc.

Читать »

Использование таймера в приложениях

Добавлено Дата: 7 July, 2012 категория: Win32 API

Для отслеживания временных промежутков в системе или выпол­нения действий в программе с требуемой периодичностью в Win32 реализован ряд API-функций. При работе с ними необходимо помнить, что Windows не является ОС реального времени, и точность подсчета времени зависит от возникновения прерываний в системе и количества одновременно запущенных приложений. Под временем Windows по­нимается количество миллисекунд, прошедших с момента старта ОС. Это время увеличивается на период системного таймера, и дополни­тельно синхронизируется с часами реального времени RTC (Real Time Clock).

Читать »