Поиск по сайту:


Смотри также:

Стандарты MPEG - Статья.

Как составить программу для игровой приставки "DENDY" - Статья.

MSDN по русски. Описание классов - Статья.

Assembler IBM PC Приложения к лабораторной работе № 2 - Статья.

Все новинки...

Статья «MSDN по русски. Глобальные функции Windows C++ .NET»

Поделиться:

1    2    3

LoadLibrary

HMODULE LoadLibrary(LPCTSTR lpFileName);

Возвращаемое значение
В случае успешного завершения работы возвращает дескриптор модуля. В противном случае возвращает нулевое значение. Для получения дополнительной информации по ошибке вызовите функцию GetLastError. В Windows 95 ошибки при вызове данной функции возникают в следующих случаях:

при попытке использовать данную функцию для загрузки модуля, содержащего ресурсы с идентификаторами, значения которых превышают 0x7FFF; при попытке непосредственной загрузки 16-разрядных библиотек динамической компоновки в 32-разрядные приложения; при загрузке библиотек динамической компоновки с версией подсистемы большей, чем 4.0. при попытке вызывать в функции DllMain версии Unicode для функции Win32.

Аргументы

lpFileName - указатель на заканчивающуюся нулем строку, содержащую имя исполняемого модуля (файла .dll или .exe). Указанное имя является исключительно именем файла и не имеет никакого отношения к имени, указанном в файле определения модуля (.def) в выражении LIBRARY.

Описание
Данная функция помещает указанный исполняемый модуль в адресное пространство вызывающего процесса. Если указанный модуль еще не располагается в адресном пространстве вызывающего процесса, система вызывает функцию DllMainданной библиотеки динамической компоновки с аргументом DLL_PROCESS_ATTACH. Если эта функция не возвращает значения TRUE, функция LoadLibrary аварийно завершает свою работу и возвращает нулевое значение. В этом случае система немедленно вызывает ту же самую функцию с аргументом DLL_PROCESS_DETACH для удаления модуля. Поэтому функцию LoadLibrary не рекомендуется вызывать в функции DllMain. Возвращаемый данной функцией дескриптор модуля не является глобальным и не наследуется. Поэтому этот дескриптор не может использоваться другим процессом. Если файл отсутствует в указанном каталоге, функция аварийно завершает свою работу. При задании каталога следует использовать символ \, а не символ /. Если в файле не указано расширение, по умолчанию к его имени добавляется расширение .dll. Для указания того, что данный файл не имеет расширения необходимо закончить его имя точкой. Если файл указан без пути, то при его поиске используется стандартная стратегия поиска файлов:

текущий каталог; системный каталог Windows, путь в который может быть получен с использованием функции GetSystemDirectory; каталог Windows, путь в который может быть получен с использованием функции GetWindowsDirectory; каталоги, перечисленные в переменной PATH.

В Windows NT/ 2000 после поиска в системном каталоге 32-разрядной Windows, путь в который может быть получен с использованием функции GetSystemDirectory и имеющий имя SYSTEM32, производится поиск в системном директории 16-разрядной Windows, путь в который не может быть получен с использованием какой-либо функции, и имеющий имя SYSTEM.
MessageBox

int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);

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

IDABORT - была нажата кнопка Abort (Прекращение);
IDCANCEL - была нажата кнопка Cancel (Отмена);
IDIGNORE - была нажата кнопка Ignore (Пропуск);
IDNO - была нажата кнопка No (Нет);
IDOK - была нажата кнопка OK;
IDRETRY - была нажата кнопка Retry (Повторение);
IDYES - была нажата кнопка Yes (Да).

Если окно сообщения имеет кнопку Cancel (Отмена), функция возвращает значение IDCANCEL независимо от того, была ли нажата кнопка Cancel (Отмена) или клавиша . Если окно сообщения не имеет кнопки Cancel (Отмена), то нажатие клавиши не приводит ни к каким результатам.
Аргументы

hWnd - определяет окно, являющееся собственником создаваемого окна сообщения. Если этот аргумент имеет значение NULL, то создаваемое окно сообщения не имеет собственника.
lpText - указатель на текстовую строку, завершающуюся нулевым символом, содержащую выводимое сообщение.
lpCaption - указатель на текстовую строку, завершающуюся нулевым символом, используемую в качестве заголовка диалогового окна. Если этот аргумент имеет значение NULL, то создаваемое окно содержит стандартный заголовок Error (Ошибка).
uType - определяет комбинацию битовых флагов, определяющих содержимое и поведение диалогового окна. Этот аргумент может представлять собой комбинацию флагов из приведенных ниже групп (не более одного из каждой группы).
Флаги, определяющие состав кнопок окна сообщения:
      MB_ABORTRETRYIGNORE - окно сообщения содержит три кнопки: Abort (Прекращение), Retry (Повторение) и Ignore (Пропуск);
      MB_OK - окно сообщения содержит одну кнопку OK. Это установка по умолчанию;
      MB_OKCANCEL - окно сообщения содержит две кнопки: OK и Cancel (Отмена).
      MB_RETRYCANCEL - окно сообщения содержит две кнопки: Retry (Повторение) и Cancel (Отмена);
      MB_YESNO - окно сообщения содержит две кнопки: Yes (Да) и No (Нет);
      MB_YESNOCANCEL - окно сообщения содержит три кнопки: Yes (Да), No (Нет) и Cancel (Отмена).
Флаги, определяющие значок, выводимый в окне сообщения:
      MB_ICONEXCLAMATION, MB_ICONWARNING - в окне сообщения появляется восклицательный знак;
      MB_ICONINFORMATION, MB_ICONASTERISK - в окне сообщения появляется прописная буква i, помещенная в кружок;
      MB_ICONQUESTION - в окне сообщения появляется вопросительный знак;
      MB_ICONSTOP, MB_ICONERROR, MB_ICONHAND - в окне сообщения появляется сигнал остановки.
Флаги, задающие кнопку, используемую по умолчанию.
      MB_DEFBUTTON1 - по умолчанию используется первая кнопка. Если в данном аргументе не установлен флаг этой группы, то кнопкой по умолчанию является первая кнопка;
      MB_DEFBUTTON2 - по умолчанию используется вторая кнопка;
      MB_DEFBUTTON3 - по умолчанию используется третья кнопка;
      MB_DEFBUTTON4 - по умолчанию используется четвертая кнопка.
Флаги, определяющие модальность диалогового окна.
      MB_APPLMODAL - указывает на то, что пользователь должен закончить работу с окном сообщения прежде, чем он получит возможность продолжить работу с окном, определенным в аргументе hWnd. В зависимости от иерархии окон в приложении пользователь может иметь возможность продолжить работу с другими окнами данного потока. Все дочерние окна, принадлежащие родительскому окну, становятся недоступными, но может быть продолжена работа со вспомогательными окнами. Этот режим устанавливается в том случае, если в данном аргументе не установлен флаг этой группы.
      MB_SYSTEMMODAL - действует аналогично флагу MB_APPLMODAL за тем исключением, что окно сообщения получает стиль WS_EX_TOPMOST. Данный флаг используется для извещения пользователя о серьезных ошибках, требующих его немедленной реакции (например, выход за границы памяти). Этот флаг не оказывает никакого влияния на возможности пользователя по работе с окнами, не связанными с окном, определенным в аргументе hWnd.
      MB_TASKMODAL - действует аналогично флагу MB_APPLMODAL за тем исключением, что в том случае, если аргумент hWnd имеет нулевое значение, то пользователь теряет возможность доступа ко всем основным и дочерним окнам, принадлежащим данному потоку. Данный флаг используется в том случае, когда приложение или библиотека не имеют дескриптора окна, но должны прекратить доступ ко всем окнам данного потока, не препятствуя работе других потоков.
Кроме перечисленных выше флагов, объединенных в группы, пользователь может использовать следующие флаги:
      MB_DEFAULT_DESKTOP_ONLY - рабочий стол, получивший фокус ввода должен быть рабочим столом, выбираемым по умолчанию. В противном случае функция завершается с ошибкой. Под рабочим столом, выбираемым по умолчанию, понимается рабочий стол, появляющийся после загрузки системы;
      MB_HELP - добавляет в окно сообщения кнопку Help (Справка). Нажатие кнопки Help (Справка) или клавиши отмечает соответствующее событие;
      MB_RIGHT - текст в окне сообщения выравнивается по правому краю;
      MB_RTLREADING - выводит текст сообщения и заголовка справа налево, как это принято в еврейском и арабском языках;
      MB_SETFOREGROUND - делает активным поток, создающий окно сообщения, и устанавливает в него фокус ввода. Для этого система вызывает для окна сообщения функцию SetForegroundWindow;
      MB_TOPMOST - окно сообщения создается с флагом WS_EX_TOPMOST;
      MB_SERVICE_NOTIFICATION - специфический флаг для Windows NT, означающий, что данное окно вызывает служба, извещая пользователя о событии. Данная функция отображает окно сообщения на текущем активном рабочем столе даже в том случае, если на данном компьютере не зарегистрирован ни один пользователь. Если установлен данный флаг, то аргумент hWnd должен иметь нулевое значение. Это означает, что окно сообщения может появиться на другом рабочем столе, а не на том, которому принадлежит окно, определяемое аргументом hWnd.
В Windows NT версии 4.0 значение MB_SERVICE_NOTIFICATION изменено. Новые и старые значения описаны в файле WinUser.h. Операционная система Windows NT 4.0 обеспечивает совместимость снизу вверх для существующих служб, преобразуя старые значения в новые, при работе с функциями MessageBox и MessageBoxEx. Это преобразование производится только для тех исполнительных файлов, которые имеют номер версии, установленный компоновщиком, меньший, чем 4.0.
MB_SERVICE_NOTIFICATION_NT3X - специфический флаг для Windows NT, означающий значение MB_SERVICE_NOTIFICATION, используемое в Windows NT версии 3.51.

Описание
Функция MessageBox создает, отображает и осуществляет интерфейс с окном сообщения. Окно сообщения состоит из определяемого приложением текста, заголовка, предопределенного значка и набора кнопок. При использовании модального системного окна сообщения для вывода информации о том, что в системе не хватает памяти, значения аргументов lpText и lpCaption нельзя загружать из файла ресурсов (что разрушает всю концепцию использования строковых ресурсов), поскольку в данном случае попытка загрузить ресурс может закончиться безрезультатно. Если приложение вызывает функцию MessageBox и указывает в аргументе uType комбинацию флагов MB_ICONHAND и MB_SYSTEMMODAL, операционная система отображает окно сообщения вне зависимости от того, имеется ли в системе свободная память. При данной комбинации флагов операционная система ограничивает размер сообщения тремя строками. Система не производит автоматического разбиения текста на строки. Для этого необходимо использовать управляющие символы перевода строки. Если окно сообщения создается в классе диалогового окна, то в качестве аргумента hWnd следует использовать дескриптор диалогового окна. В качестве данного аргумента нельзя использовать дескриптор дочернего окна, например дескриптор окна элемента управления. В Windows 95 максимальное число дескрипторов окон составляет 16 384.
OpenEvent

HANDLE OpenEvent(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCTSTR lpName);

Возвращаемое значение
В случае успешного завершения функции возвращается дескриптор объекта события. Если в процессе работы функции возникла ошибка, возвращается нулевое значение. Более подробную информацию об ошибке можно получить, вызвав функциюGetLastError.
Аргументы

dwDesiredAccess - определяет режим доступа к объекту события. В системах, обеспечивающих безопасность объектов, данная функция аварийно завершает свою работу, если дескриптор указанного объекта не допускает использование указанного режима доступа для вызывающего процесса. Этот аргумент может принимать одно из следующих значений:
      EVENT_ALL_ACCESS - устанавливает все возможные флаги доступа к объекту события;
      EVENT_MODIFY_STATE - обеспечивает возможность использования дескриптора объекта события в функциях SetEvent и ResetEvent, изменяющих состояние объекта события;
      SYNCHRONIZE - используется в Windows NT и позволяет использовать дескриптор объекта события в любой из функций ожидания для задания состояния объекта.
bInheritHandle - определяет возможность наследования возвращаемого дескриптора. Если этот аргумент имеет значение TRUE, то процесс, созданный функцией CreateProcess, может наследовать дескриптор. В противном случае дескриптор не может наследоваться.
lpName - указатель на заканчивающуюся нулем строку, содержащую имя открываемого объекта события. При сравнении имен учитывается регистр используемых символов.

Описание
Функция OpenEvent возвращает дескриптор существующего именованного объекта события. Данная функция позволяет нескольким процессам открывать дескрипторы одного и того же объекта события. Функция нормально завершает свою работу только в том случае, когда уже существует объект события с таким именем, созданный другим процессом с помощью функции CreateEvent. вызывающий процесс может использовать возвращаемый данной функцией дескриптор в качестве аргумента любой функции, использующей дескриптор объекта события, при условии соблюдения ограничений, налагаемых значением аргумента dwDesiredAccess. Дескриптор может быть дублирован с использованием функции DuplicateHandle. Для уничтожения дескриптора используется функция CloseHandle. Система автоматически уничтожает дескриптор при завершении процесса. Объект события уничтожается при уничтожении его последнего дескриптора.
RemoveFontResource

BOOL RemoveFontResource(LPCTSTR lpFileName);

Возвращаемое значение
В случае успешного завершения функции возвращается ненулевое значение. В противном случае возвращается нулевое значение. В Windows NT более подробную информацию об ошибке можно получить, вызвав функцию GetLastError.
Аргументы

lpFileName - указатель на заканчивающуюся нулем строку, содержащую имя файла ресурса шрифта.

Описание
Функция RemoveFontResource удаляет ресурс из системной таблицы шрифтов, записывая его в указанный файл. Любые приложения, добавляющие или удаляющие шрифты из системной таблицы шрифтов, извещают об этом другие приложения посылкой сообщения WM_FONTCHANGE всем окнам верхнего уровня в операционной системе. Для посылки этого сообщения приложение должно использовать функцию SendMessage, в аргументе hWnd которой должно стоять значение HWND_BROADCAST. Если на данный ресурс шрифта имеются ссылки из других приложений, данный ресурс останется загруженным до тех пор, пока не останется использующих его контекстов устройств.
ResetEvent

BOOL ResetEvent(HANDLE hEvent);

Возвращаемое значение
Ненулевое, если работа функции завершилась успешно. Если в процессе работы функции возникла ошибка, возвращается нулевое значение. Более подробную информацию об ошибке можно получить, вызвав функцию GetLastError.
Аргументы

hEvent - Дескриптор объекта события, возвращенный функцией CreateEvent или OpenEvent. В Windows NT этот аргумент должен иметь уровень доступа EVENT_MODIFY_STATE.

Описание
Функция ResetEvent сбрасывает отмеченное состояние объекта события. Состояние объекта события после этого остается неотмеченным до следующего вызова функции SetEvent или PulseEvent. Это неотмеченное состояние блокирует выполнение любых потоков, указавших данный объект события в аргументе функций ожидания. Данная функция используется преимущественно для ручного сброса состояния объектов. Объекты состояния, для которых определен автоматический сброс, сбрасываются после запуска первого же ожидающего потока.
SetCurrentDirectory

BOOL SetCurrentDirectory(LPCTSTR lpPathName);

Возвращаемое значение
Ненулевое, если сохранение прошло успешно. Если в процессе сохранения возникла ошибка, данная функция возвращает нулевое значение. Более подробную информацию об ошибке можно получить, вызвав функцию GetLastError.
Аргументы

lpPathName - указатель на заканчивающуюся нулем текстовую строку, содержащую путь в новый рабочий каталог. Этот параметр может быть как относительным, так и полным путем. В любом случае по данному аргументу определяется полный путь в каталог и запоминается как текущий каталог.

Описание
Функция SetCurrentDirectory изменяет рабочий каталог для текущего процесса. Каждый процесс имеет единственный рабочий каталог, имя которого состоит из двух частей:

имени диска, представляющего собой букву, соответствующую данному диску, за которой стоит символ двоеточия, или имя сервера и разделяемое имя (\\servername\sharename); имени каталога на этом диске.

SetDIBitsToDevice

int SetDIBitsToDevice(HDC hdc, int XDest, int YDest, DWORD dwWidth, DWORD dwHeight, int XSrc, int YSrc, UINT uStartScan, UINT cScanLines, CONST VOID *lpvBits, CONST BITMAPINFO *lpbmi, UINT fuColorUse);

Возвращаемое значение
В случае успешного завершения работы функции возвращается число установленных строк. В противном случае возвращается нулевое значение. В Windows NT дополнительную информацию можно получить, вызвав функцию GetLastError. В Windows 98, Windows NT 5.0 и более поздних версиях: если драйвер не поддерживает работу с файлами в формате JPEG, функция возвращает код ошибки GDI_ERROR.
Аргументы

hdc - дескриптор контекста устройства.
XDest - содержит горизонтальную координату верхнего левого угла области вывода, измеренную в логических координатах.
YDest - содержит вертикальную координату верхнего левого угла области вывода, измеренную в логических координатах.
dwWidth - содержит ширину аппаратно-независимого битового образа в логических координатах.
dwHeight - содержит высоту аппаратно-независимого битового образа в логических координатах.
XSrc - содержит горизонтальную координату нижнего левого угла аппаратно-независимого битового образа, измеренную в логических координатах.
YSrc - содержит вертикальную координату нижнего левого угла аппаратно-независимого битового образа, измеренную в логических координатах.
uStartScan - содержит начальную строку аппаратно-независимого битового образа.
cScanLines - содержит число строк аппаратно-независимого битового образа, содержащихся в массиве, на который указывает аргумент lpvBits.
lpvBits - указатель на байтовый массив аппаратно-независимого битового образа.
lpbmi - указатель на объект структуры BITMAPINFO, содержащий информацию об аппаратно-независимом битовом образе.
fuColorUse - определяет, содержит ли переменная bmiColors объекта структуры BITMAPINFO непосредственную информацию об уровнях красного, зеленого и синего цветов (RGB) или индексы текущей реализованной логической палитры. Определены следующие значения:
      DIB_PAL_COLORS - таблица цветов содержит 16-разрядные индексы текущей реализованной логической палитры;
      DIB_RGB_COLORS - таблица цветов содержит непосредственную информацию о цветах палитры.

Описание
Функция SetDIBitsToDevice выводит аппаратно-независимый битовый образ на устройстве, связанном с указанным контекстом устройства. В Windows 98 и Windows NT 5.0 возможности данной функции расширены для обеспечения возможности вывода битовых образов в формате JPEG. Оптимальная скорость вывода битового образа достигается при использовании индексов системной палитры. Для получения информации о цветах системной палитры приложение может использовать функциюGetSystemPaletteEntries. Для снижения объема оперативной памяти, необходимой для вывода аппаратно-независимых битовых образов большого размера, приложение может выводить изображение частями, используя несколько последовательных вызовов функции SetDIBitsToDevice, помещая в массив, на который указывает аргумент lpvBits, различные фрагменты выводимого образа. Функция SetDIBitsToDevice возвращает код ошибки, если она вызывается в фоновом процессе, а активным является приложение MS-DOS, работающее в полноэкранном режиме. В Windows 98, Windows NT 5.0 и более поздних версиях: если переменная biCompression объекта структуры BITMAPINFOHEADER имеет значение BI_JPEG, то аргумент lpvBits данной функции указывает на буфер, содержащий изображение в формате JPEG. В этом случае переменная biSizeImage объекта структуры BITMAPINFOHEADER содержит размер буфера изображения. Аргумент fuColorUse должен иметь при этом значениеDIB_RGB_COLORS; если переменная bV4Compression объекта структуры BITMAPV4HEADER имеет значение BI_JPEG, то аргумент lpvBits данной функции указывает на буфер, содержащий изображение в формате JPEG. В этом случае переменнаяbV4SizeImage объекта структуры BITMAPV4HEADER содержит размер буфера изображения. Аргумент fuColorUse должен иметь при этом значение DIB_RGB_COLORS; если переменная bV5Compression объекта структуры BITMAPV5HEADER имеет значениеBI_JPEG, то аргумент lpvBits данной функции указывает на буфер, содержащий изображение в формате JPEG. В этом случае переменная bV5SizeImage объекта структуры BITMAPV5HEADER содержит размер буфера изображения. Аргумент fuColorUseдолжен иметь при этом значение DIB_RGB_COLORS. Описание данной функции содержится в файле заголовка wingdi.h. При работе с данной функцией следует включить в проект библиотеку gdi32.lib.
SetEvent

BOOL SetEvent(HANDLE hEvent);

Возвращаемое значение
Ненулевое, если работа функции завершилась успешно. Если в процессе работы функции возникла ошибка, возвращается нулевое значение. Более подробную информацию об ошибке можно получить, вызвав функцию GetLastError.
Аргументы

hEvent - дескриптор объекта события, возвращенный функцией CreateEvent или OpenEvent. В Windows NT этот аргумент должен иметь уровень доступа EVENT_MODIFY_STATE.

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

BOOL SetMenuContextHelpId(HMENU hmenu, DWORD dwContextHelpId);

Возвращаемое значение
Ненулевое, если функция успешно завершила свою работу, и нулевое в противном случае. Более подробную информацию об ошибке можно получить вызвав функцию GetLastError.
Аргументы

hmenu - дескриптор меню, связанного с данным контекстным идентификатором.
dwContextHelpId - контекстный идентификатор справки.

Описание
Связывает контекстный идентификатор справки с указанным меню. Все команды меню разделяют этот идентификатор. Контекстный идентификатор справки не может быть назначен отдельной команде меню.
SetThreadPriority

BOOL SetThreadPriority(HANDLE hThread, int nPriority);

Возвращаемое значение
Ненулевое, если функция успешно завершила свою работу, и нулевое в противном случае. Более подробную информацию об ошибке можно получить вызвав функцию GetLastError.
Аргументы

hThread - дескриптор потока, приоритет которого требуется установить. В Windows NT этот дескриптор должен иметь уровень доступа THREAD_SET_INFORMATION.
nPriority - определяет значение приоритета указанного потока. Этот аргумент может принимать одно из следующих значений:
      THREAD_PRIORITY_ABOVE_NORMAL - устанавливает значение приоритета на 1 выше нормального приоритета для приоритетного класса;
      THREAD_PRIORITY_BELOW_NORMAL - устанавливает значение приоритета на 1 ниже нормального приоритета для приоритетного класса;
      THREAD_PRIORITY_HIGHEST - устанавливает значение приоритете на 2 выше нормального приоритета для приоритетного класса;
      THREAD_PRIORITY_IDLE - устанавливает базовый приоритет, равный 1, для процессов IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS или HIGH_PRIORITY_CLASS и базовый приоритет, равный 16, для процессов REALTIME_PRIORITY_CLASS;
      THREAD_PRIORITY_LOWEST - устанавливает значение приоритета на 2 ниже нормального приоритета для приоритетного класса;
      THREAD_PRIORITY_NORMAL - устанавливает нормальное значение приоритета для приоритетного класса;
      THREAD_PRIORITY_TIME_CRITICAL - устанавливает базовый приоритет, равный 15, для процессов IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS или HIGH_PRIORITY_CLASS и базовый приоритет, равный 31, для процессовREALTIME_PRIORITY_CLASS.

Описание
Функция SetThreadPriority устанавливает значение приоритета для указанного процесса. Это значение, наряду с приоритетом класса процесса потока определяет базовый уровень приоритета потока. Каждый поток имеет базовый уровень приоритета, определяемый значением приоритета потока и классом приоритета его процесса. Система использует базовый уровень приоритета для всех исполняемых потоков для определения того, какому из них необходимо выделить следующий квант времени центрального процессора. Квант времени выделяется по очереди всем потокам, имеющим одинаковый уровень приоритета, и только в том случае, если нет ни одного запроса на исполнение от потоков высшего уровня приоритета рассматриваются запросы на обслуживание от потоков более низкого уровня приоритета. Функция SetThreadPriority позволяет установить базовый уровень приоритета относительно класса приоритета его процесса. Например, задание уровня приоритета THREAD_PRIORITY_HIGHEST в функции SetThreadPriority для процесса, имеющего класс приоритета IDLE_PRIORITY_CLASS, устанавливает базовый уровень приоритета равный 6. Для процессов, имеющих классы приоритетовIDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS и HIGH_PRIORITY_CLASS система динамически повышает базовый уровень приоритета, если происходит событие, важное для данного потока. Для процессов, имеющих класс приоритетаREALTIME_PRIORITY_CLASS динамическое изменение базового уровня невозможно. Все потоки запускаются со значением приоритета THREAD_PRIORITY_NORMAL. Для получения и установки класса приоритета используются функции GetPriorityClass eSetPriorityClass. Для получения значения приоритета потока используется функция GetThreadPriority. Использование классов приоритета процесса позволяет разделять приложения, работающие в реальном времени, обычные и фоновые приложения. Использование значений приоритетов потоков позволяет определить важность выполнения отдельных потоков в приложении. Например, поток, выводящий окно на экран, должен иметь более высокий приоритет, чем поток, осуществляющий интенсивные вычисления. При установке приоритетов нужно следить за тем, чтобы потоки, имеющие высокий приоритет не занимали бы все имеющееся процессорное время. Потоки, имеющие базовый уровень приоритета выше 11 включаются в нормальную работу операционной системы. Использование класса приоритета процесса REALTIME_PRIORITY_CLASS может нарушить процесс кеширования диска, прекратить работу с мышью и вызвать другие подобные проблемы.
SetWindowContextHelpId

BOOL SetWindowContextHelpId(HWND hwnd, DWORD dwContextHelpId);

Возвращаемое значение
Ненулевое, если функция успешно завершила свою работу, и нулевое в противном случае. Более подробную информацию об ошибке можно получить вызвав функцию GetLastError.
Аргументы

hwnd - дескриптор окна, связанного с данным контекстным идентификатором.
dwContextHelpId - контекстный идентификатор справки.

Описание
Связывает контекстный идентификатор справки с указанным окном. Если дочернее окно не имеет контекстного идентификатора справки, то оно наследует его от родительского окна. Аналогично, если окно принадлежит другому окну и не имеет контекстного идентификатора справки, то оно наследует его от того окна, которому оно принадлежит. Это наследование контекстного идентификатора справки позволяет приложению использовать один контекстный идентификатор справки для диалогового окна и всех его элементов управления.
SetWindowLong

LONG SetWindowLong(HWND hWnd, int nIndex, LONG dwNewLong);

Возвращаемое значение
В случае нормального завершения функции - предыдущее значение заменяемой 32-разрядной величины. В противном случае - нулевое значение. Дополнительную информацию об ошибке можно получить вызвав функцию GetLastError. Если предыдущее значение заменяемой 32-разрядной величины было нулевым, то в случае нормального завершения функции возвращается нулевая величина, но функция не сбрасывает информацию о предыдущей ошибке, что существенно затрудняет вопрос о том, как завершилась работа данной функции. Чтобы избежать неопределенности необходимо вызвать функцию SetLastError(0) перед вызовом функции SetWindowLong. В этом случае об ошибке при выполнении данной функции будет говорить нулевое значение, возвращаемое данной функцией, и ненулевое значение, возвращаемое функцией GetLastError.
Аргументы

hWnd - дескриптор окна и, косвенно, класса, связанного с данным окном.
nIndex - определяет смещение величины, которую следует получить. Величина смещения может принимать значение в диапазоне от нуля до размера дополнительной памяти окна, выраженной в байтах, минус четыре. Например, при задании 12 или более байт в качестве дополнительной памяти, величина 8 будет являться индексом третьего 32-разрядного целого числа. Для доступа к величинам, характеризующим некоторые параметры окна, существуют предопределенные величины. Ниже приведен их список:
      GWL_EXSTYLE - устанавливает величину дополнительного стиля окна;
      GWL_STYLE - устанавливает величину дополнительного стиля окна;
      GWL_WNDPROC - устанавливает указатель на процедуру обработки окна или дескриптор, позволяющий получить доступ к этому указателю;
      GWL_HINSTANCE - устанавливает дескриптор экземпляра (instance) данного приложения;
      GWL_HWNDPARENT - устанавливает дескриптор родительского окна, если таковое имеется;
      GWL_ID - устанавливает идентификатор окна;
      GWL_USERDATA - устанавливает 32-разрядную величину, связанную с окном. Эта величина предназначена для использования приложением, связанным с окном.
В случае, если аргумент hWnd является дескриптором диалогового окна, второй параметр может дополнительно принимать следующие значения:
      DWL_DLGPROC - устанавливает указатель на процедуру обработки диалогового окна или дескриптор, позволяющий получить доступ к указателю на эту процедуру;
      DWL_MSGRESULT - устанавливает возвращаемое значение процедуры обработки диалогового окна;
      DWL_USER - устанавливает дополнительную информацию, содержание которой специфично для каждого приложения. В качестве такой информации могут выступать указатели и дескрипторы.
dwNewLong - новое значение устанавливаемой величины.

Описание
Функция SetWindowLong изменяет атрибуты указанного окна. Функция записывает 32-разрядную величину в дополнительную память окна по заданному смещению. Функция SetWindowLong возвращает ошибку, если окно, заданное аргументом hWnd не принадлежит тому же самому процессу, что и вызывающий поток. Некоторые окна кэшируют свою память, поэтому изменения, произведенные функцией SetWindowLong вступят в силу только после последующего вызова функции SetWindowPos. Если в функции SetWindowPos используется индекс GWL_WNDPROC для установки новой процедуры обработки окна, то новая процедура обработки окна должна соответствовать формату функции WindowProc. Если в функции SetWindowPos используется индексDWL_MSGRESULT для установки возвращаемого значения процедуры обработки окна, то после этого необходимо непосредственно возвратить значение TRUE. В противном случае при вызове любой функции посылающей сообщение вашему диалоговому окну его собственное сообщение может переписать возвращаемое значение, установленное с использованием индекса DWL_MSGRESULT. Вызов функции SetWindowLong с индексом GWL_WNDPROC приводит к созданию подкласса класса окна, использованного для создания данного окна. Приложение может создавать подклассы системных классов, но не может создавать подклассы для классов окон, созданных другими процессами. Функция SetWindowLong создает подкласс окна путем изменения процедуры обработки окна, связанной с конкретным классом окна, заставляя приложение вызывать новую процедуру обработки окна вместо старой. Приложение должно передавать все сообщения, не обработанные новой процедурой окна старой процедуре посредством вызова функции CallWindowProc. Это позволяет приложению создавать цепочки процедур обработки окна. Для резервирования дополнительной памяти окна необходимо задать ненулевое значение величины cbWndExtra, являющейся членом структуры WNDCLASSEX, используемой функцией RegisterClassEx. Нельзя вызывать функцию SetWindowLong с индексом GWL_HWNDPARENT для замены родительского окна у дочернего окна. Вместо этого следует использовать функцию SetParent.
Sleep

VOID Sleep(DWORD dwMilliseconds);

Аргументы

dwMilliseconds - определяет промежуток времени, измеряемый в миллисекундах, на который следует приостановить исполнение данного потока. Нулевое значение данного аргумента заставляет поток передать остаток своего кванта времени любому другому потоку, имеющему одинаковый с ним приоритет и готовому приступить к работе. Если такой поток отсутствует, то функция немедленно завершает свою работу и поток возобновляет свою работу. Значение INFINITE означает бесконечную задержку.

Описание
Функция Sleep приостанавливает исполнение данного потока на указанный интервал времени. Поток может уступить остаток своего кванта времени при вызове данной функции с нулевым временем ожидания. Необходимо соблюдать известную осторожность при использовании функции Sleep в программах прямо или косвенно создающих окна. Если поток создает любое окно оно должно обрабатывать сообщения. Сообщения передаются всем окнам в системе. При использовании функции Sleepс бесконечным временем ожидания система может зависнуть. Поэтому, в тех случаях, когда поток создает окна, вместо функции Sleep следует использовать функции MsgWaitForMultipleObjects или MsgWaitForMultipleObjectsEx.
WaitForSingleObject

DWORD WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds);

Возвращаемое значение
Если функция успешно завершает свою работу, то возвращаемое значение указывает на причину завершения работы функции. Оно может принимать одно из следующих значений:

WAIT_ABANDONED - указанный объект является мютексом, который не был освобожден потоком, которому он принадлежит, перед завершением данного потока. Принадлежность мютекса вызывающему потоку гарантируется. Поэтому этот объект остался неотмеченным;
WAIT_OBJECT_0 -указанный объект находится в отмеченном состоянии;
WAIT_TIMEOUT - истек период ожидания, а объект остался неотмеченным.

Если функция аварийно завершает свою работу, она возвращает значение WAIT_FAILED. Более подробную информацию об ошибке можно получить, вызвав функцию GetLastError.
Аргументы

hHandle - дескриптор объекта. Список типов объектов, дескрипторы которых могут использоваться в качестве данного аргумента, содержится в примечании. В Windows NT дескриптор должен иметь уровень доступа SYNCHRONIZE.
dwMilliseconds - определяет интервал времени, измеряемый в миллисекундах. По истечении этого интервала времени, если указанный объект остается неотмеченным, функция завершает свою работу. Если данный аргумент имеет нулевое значение, функция проверяет состояние объекта и немедленно прекращает свою работу. Если аргумент dwMilliseconds имеет значение INFINITE, то функция ждет отметки объекта неограниченное время.

Описание
Функция WaitForSingleObject возвращает свое значение в двух случаях: когда указанный объект устанавливается в отмеченное состояние; когда истекает время ожидания. Данная функция проверяет текущее состояние указанного объекта. Если данный объект находится в неотмеченном состоянии, выполнение потока приостанавливается. В процессе ожидания поток практически не использует процессорное время. Перед завершением своей работы функция изменяет состояние некоторых объектов синхронизации. Изменения происходят только в том случае, если изменение состояния объекта привело к выходу из функции. Например, счетчик семафора уменьшается на единицу. Функция WaitForSingleObject может использоваться со следующими объектами:

извещениями об изменениях;
вводом с системной консоли;
объектами событий;
заданиями;
мютексами;
процессами;
семафорами;
потоками;
таймерами ожидания.

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

BOOL WinHelp(HWND hWndMain, LPCTSTR lpszHelp, UINT uCommand, DWORD dwData);

Возвращаемое значение
Ненулевое, в случае успешного завершения функции, и нулевое в противном случае. Дополнительную информацию по ошибке можно получить, вызвав функцию GetLastError.
Аргументы

hWndMain - дескриптор окна, из которого вызывается справка. Функция WinHelp использует данный дескриптор для определения того, какое из приложений запросило справочную информацию. Если аргумент uCommand имеет значение HELP_CONTEXTMENUили HELP_WM_HELP, то данный аргумент определяет элемент управления, по которому нужно получить справку.
lpszHelp - указатель на заканчивающуюся нулем текстовую строку, содержащую имя и, если это необходимо, путь к файлу справки, текст которой данная функция должна выводить на экран. После имени файла может стоять угловая скобка (>) за которой указывается имя вторичного окна, если информация выводится во вторичное, а не в первичное окно справки. Имя вторичного окна справки должно быть определено в разделе [WINDOWS] файла проекта справки (.hpj).
uCommand - определяет тип запрашиваемой справочной информации.
dwData - дополнительная информация. Структура данного аргумента определяется значением аргумента uCommand.

Описание
Вызывает справочную систему Windows (Winhelp.exe) и передает ей дополнительную информацию, определяющую характер запрашиваемой справочной информации. Прежде, чем закрыть окно, запросившее справочную информацию необходимо вызвать функцию WinHelp и передать в аргументе uCommand команду HELP_QUIT. До того, как все приложения не произведут эту операцию справочная система Windows не может быть закрыта. В этой операции нет необходимости, если для вызова справки использовалась команда HELP_CONTEXTPOPUP. В таблице П2.2 указаны возможные значения аргумента uCommand, предпринимаемые при этом действия и соответствующий ему формат аргумента dwData.

Таблица П2.2. Соответствие значений агументов uCommand и dwData

Значения аргумента uCommand Предпринимаемые дейст-вия Формат аргумента dwData
HELP_COMMAND Выполняет макрос справки или строку макроса. Указатель на строку, содер-жащую имя выполняемого макроса справки. Если в строке указано несколько имен макросов, имена долж-ны разделяться точкой с запятой. Для некоторых макросов необходимо ис-пользовать короткую форму имени, поскольку справочная система Windows не позволя-ет работать с длинными именами.
HELP_CONTENTS Выводит содержимое раздела справки, определенное клю-чевым словом Contents в разделе [OPTIONS] файла .hpj. Эта команда использует-ся для обеспечения совмес-тимости с предыдущими версиями. Новые приложения должны использовать файл .cnt и команду HELP_FINDER. Игнорируется и устанавлива-ется в 0.
HELP_CONTEXT Выводит тему справки, за-данную контекстным иден-тификатором, определенным в разделе [MAP] файла .hpj. Целое число без знака, со-держащее контекстный иден-тификатор раздела.
HELP_CONTEXTMENU Выводит меню Help для указанного окна. Затем выво-дит справочную информацию по выделенному элементу управления во всплывающем окне. Указатель на массив пар идентификаторов. Первое двойное слово в каждой паре представляет собой иденти-фикатор элемента управле-ния, а второе слово - кон-текстный идентификатор раздела.
HELP_CONTEXTPOPUP Выводит во всплывающем окне тему справки, заданную контекстным идентификато-ром, определенным в разделе [MAP] файла .hpj. Целое число без знака, со-держащее контекстный иден-тификатор раздела.
HELP_FINDER Выводит диалоговое окно Справочная система. Игнорируется и устанавлива-ется в 0.
HELP_FORCEFILE Обеспечивает вывод требуе-мого файла справки справоч-ной системой. Если выводит-ся другой файл справки, справочная система выводит нужный. В противном случае не выполняет никаких дейст-вий. Игнорируется и устанавлива-ется в 0.
HELP_HELPONHELP Если доступен файл WINHLP32.HLP, выводит справочную информацию по пользованию справочной системой. Игнорируется и устанавлива-ется в 0.
HELP_INDEX Выводит содержимое раздела справки, определенное клю-чевым словом Contents в разделе [OPTIONS] файла .hpj. Эта команда использует-ся для обеспечения совмес-тимости с предыдущими версиями. Новые приложения должны использовать файл .cnt и команду HELP_FINDER. Игнорируется и устанавлива-ется в 0.
HELP_KEY Выводит тему справки по ключевому слову, содержа-щемуся в таблице ключевых слов в том случае, если обес-печено полное совпадение. Если найдено более одного раздела, соответствующего данному ключевому слову, выводит диалоговое окно Найденные разделы, содер-жащее список найденных разделов. Указатель на строку, содер-жащую ключевое слово. Несколько ключевых слов должны разделяться точкой с запятой.
HELP_MULTIKEY Выводит тему справки по ключевому слову, содержа-щемуся в альтернативной таблице ключевых слов. Указатель на объект структу-ры MULTIKEYHELP, опреде-ляющей символ нижнего индекса таблицы и ключевое слово.
HELP_PARTIALKEY Выводит тему справки по ключевому слову, содержа-щемуся в таблице ключевых слов в том случае, если обес-печено полное совпадение. Если найдено более одного раздела, соответствующего данному ключевому слову, выводит диалоговое окно Найденные разделы. Указатель на строку, содер-жащую ключевое слово. Несколько ключевых слов должны разделяться точкой с запятой. Для вывода содер-жания без указания ключево-го слова необходимо пере-дать указатель на пустую строку.
HELP_QUIT Сообщает справочной систе-ме Windows о прекращении работы с ней. Если со спра-вочной системой не работают другие приложения, закрыва-ет справочную систему Win-dows. Игнорируется и устанавлива-ется в 0.
HELP_SETCONTENTS Определяет содержимое раздела Contents. Справочная система Windows выводит эту тему, если файл справки не имеет связанного с ним файла .cnt. Целое число без знака, со-держащее контекстный иден-тификатор раздела Contents.
HELP_SETPOPUP_POS Устанавливает позицию всплывающего окна. Позиция всплывающего окна устанав-ливается таким образом, как будто бы указатель мыши располагался в указанной точке при вызове данного окна. Указатель на объект структу-ры POINT.
HELP_SETWINPOS Выводит окно справки, если оно было минимизировано или располагалось в памяти. Указатель на объект структу-ры HELPWININFO, опреде-ляющей размер и положение первичного или вторичного окна справки.
HELP_TCARD Указывает на то, что данная команда относится к после-довательности вторичных окон. Данная команда ком-бинируется с другими коман-дами с использованием опе-рации логического ИЛИ. Зависит от команды, с кото-рой объединена данная ко-манда.
HELP_WM_HELP Выводит во всплывающее окно справку об элементе управления, указанном в аргументе hWndMain. Указатель на массив пар идентификаторов. Первое двойное слово в каждой паре представляет собой иденти-фикатор элемента управле-ния, а второе слово - кон-текстный идентификатор раздела.