Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО_экзамен.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
500.22 Кб
Скачать

11. Управление направлением, размером и расстоянием между символами

определить параметры самого шрифта с помощью функции CreateFont().

CreateFont(высота,ширина,угол наклона (в 1/10 градуса),поворот базы относительно 0Х,жирность (FW_NORMAL=400; FW_HEAVY=900),

Курсив,подчёркнутый,зачёркнутый,character set identifier,

Точность(меткость вывода), точность сжатия. Соединения,как выравнивать и придерживаться лог. атр. Текста,pitch and family

,typeface name);

Основы построения и использования вычислительных процессов в Windows

1. Создание процесса

Процесс создается при вызове приложением функции CreateProcess.[1]

BOOL CreateProcess(

LPCTSTR lpApplicationName, // указатель на имя исполняемого модуля

LPTSTR lpCommandLine, // указатель на командную строку

LPSECURITY_ATTRIBUTES lpProcessAttributes, // атрибуты безопасности процесса

LPSECURITY_ATTRIBUTES lpThreadAttributes, // атрибуты безопасности потока

BOOL bInheritHandles, // флаг наследования дескрипторов

DWORD dwCreationFlags, // дополнительные параметры создания процесса

LPVOID lpEnvironment, // указатель на блок переменных окружения

LPCTSTR lpCurrentDirectory, // указатель на текущий каталог

LPSTARTUPINFO lpStartupInfo, // указатель на структуру STARTUPINFO

LPPROCESS_INFORMATION lpProcessInformation // указатель на PROCESS_INFORMATION

);

Когда приложением вызывается функция CreateProcess, система создает объект ядра “процесс” (process kernel object) с начальным значением счетчика числа пользователей, равным единице. Этот объект – компактная структура данных, через которую операционная система управляет процессом. Затем система создает для нового процесса виртуальное адресное пространство размером 4 Гб и загружает в него код и данные как исполняемого файла, так и любых динамически подключаемых библиотек.

После этого система создает объект ядра “поток” (со счетчиком числа пользователей, равным единице) для управления первичным потоком нового процесса.

2. Описатель процесса

При инициализации процесса система создает в нем таблицу описателей, используемую только для объектов ядра. Сведения о структуре этой таблицы и управлении ею незадокументированы. Значение описателя представляет собой индекс в таблице описателей, принадлежащей процессу, и таким образом идентифицирует место, где хранится информация, связанная с объектом ядра.

3. Командная строка процесса

При создании новому процессу передается командная строка, которая почти никогда не бывает пустой — как минимум, она содержит имя исполняемого файла, использованного при создании этого процесса. Однако, возможны случаи, когда процесс получает командную строку, состоящую из единственного символа — нуля, завершающего строку. В момент запуска приложения стартовый код из библиотеки С++ считывает командную строку процесса, пропускает имя исполняемого файла и заносит в параметр pszCmdLine функции (w)WinMain указатель на оставшуюся часть командной строки.

Параметр pszCmdLine всегда указывает на ANSI-строку. Но, заменив WinMain на wWinMain, Вы получите доступ к Unicode-версии командной строки для своего процесса.

Программа может анализировать и интерпретировать командную строку как угодно. Указатель на полную командную строку процесса можно получить и вызовом функции GetCommandLine.

PTSTR GetCommandLine();

Она возвращает указатель на буфер, содержащий полную командную строку, включая полное имя (вместе с путем) исполняемого файла.

Во многих приложениях безусловно удобнее использовать командную строку, предварительно разбитую на отдельные компоненты, доступ к которым приложение может получить через глобальные переменные __argc и __argv (или __wargv). Функция CommandLineToArgvW расщепляет Unicode-строку на отдельные компоненты:

PWSTR CommandLineToArgvW( PWSTR pszCmdLine, int* pNumArgs );

Буква W в конце имени этой функции намекает на "широкие" (wide) символы и подсказывает, что функция существует только в Unicode-версии. Параметр pszCmdLine указывает на командную строку. Его обычно получают предварительным вызовом GetCommandLineW. Параметр pNumArgs — это адрес целочисленной переменной, в которой задается количество аргументов в командной строке. Функция CommandLineToArgvW возвращает адрес массива указателей на Unicode-строки.