Win32 API. Глобальные функции Windows
Страница 4.



AfxGetApp
CWinApp* AfxGetApp();
Возвращаемое значение
Указатель на единственный объект класса CWinApp данного приложения.
Описание
Указатель, возвращаемый данной функцией, может быть использован для доступа к информации о данном приложении, такой, как главная процедура обработки сообщения или объект главного окна программы.
AfxGetResourceHandle
HINSTANCE AfxGetResourceHandle();
Возвращаемое значение
Дескриптор HINSTANCE ресурсов, принадлежащих данному приложению по умолчанию.
Описание
Возвращаемый данной функцией дескриптор может быть использован для непосредственного доступа к ресурсам приложения, например, при вызове функции Windows FindResource.
AfxInitExtensionModule
BOOL AFXAPI AfxInitExtensionModule(AFX_EXTENSION_MODULE& state, HMODULE hModule);
Возвращаемое значение
Если инициализация библиотеки динамической компоновки прошла успешно, возвращает значение TRUE. В противном случае возвращает значение FALSE.
Аргументы
state - ссылка на объект структуры AFX_EXTENSION_MODULE, в котором будет сохранено состояние библиотеки расширения MFC после ее инициализации. Помимо прочего, в ней содержится состояние объектов классов, инициализированных статическими конструкторами до вызова функции DllMain.
hModule - дескриптор модуля библиотеки расширения MFC.
Описание
Данная функция вызывается в функции DllMain для инициализации библиотеки расширения MFC. Функция AfxInitExtensionModule копирует HMODULE библиотеки динамической компоновки и сохраняет объекты структуры CRuntimeClass и фабрики объектов (объекты COleObjectFactory) для последующего использования при создании объекта CDynLinkLibrary. В функции DllMain библиотеки расширения MFC необходимо произвести две операции:
вызвать функцию AfxInitExtensionModule и проверить возвращаемое ею значение; создать объект класса CDynLinkLibrary, если библиотека динамической компоновки экспортирует объекты CRuntimeClass или имеет собственные пользовательские ресурсы.
При завершении работы процесса или отключении библиотек динамической компоновки вызовом функции AfxFreeLibrary можно вызвать функцию AfxTermExtensionModule для очистки библиотеки расширения MFC.
AfxIsMemoryBlock
BOOL AfxIsMemoryBlock(const void* p, UINT nBytes, LONG* plRequestNumber = NULL);
Возвращаемое значение
Ненулевое, если блок памяти выделен и имеет указанный размер, и нулевое в противном случае.
Аргументы
p - указатель на проверяемый блок памяти.
nBytes - размер проверяемого блока в байтах.
plRequestNumber - указатель на переменную типа long, в которую будет записан номер блока в последовательности. Эта переменная заполняется только в том случае, если данная функция возвратила ненулевое значение.
Описание
Данная функция проверяет адрес в памяти, чтобы убедиться в том, что он соответствует активному блоку памяти, выделенному диагностической версией операции new. Кроме того, производится проверка соответствия указанного размера блока его истинным размерам. Если функция AfxIsMemoryBlock возвращает ненулевое значение, в переменную, на которую указывает аргумент plRequestNumber, записывается номер блока в последовательности, представляющий собой порядковый номер вызова операции new при создании данного блока.
AfxIsValidAddress
BOOL AfxIsValidAddress(const void* lp, UINT nBytes, BOOL bReadWrite = TRUE);
Возвращаемое значение
Ненулевое, если указанный блок памяти полностью расположен в области памяти, выделенной данному приложению, и нулевое в противном случае.
Аргументы
lp - указатель на проверяемый адрес в оперативной памяти.
nBytes - содержит размер проверяемой области памяти.
bReadWrite - определяет режим доступа к памяти: по чтению и записи (TRUE) или только для чтения (FALSE).
Описание
Данная функция проверяет указанный блок, чтобы убедиться в том, что он полностью расположен в области памяти, выделенной данному приложению. Эта проверка не ограничивается блоками памяти, выделенными операцией new.
AfxIsValidString
BOOL AfxIsValidString(LPCSTR lpsz, int nLength = -1);
Возвращаемое значение
Ненулевое, если передан указатель на строку указанного размера, и нулевое в противном случае.
Аргументы
lpsz - проверяемый указатель.
nLength - длина проверяемой строки в байтах. Значение -1 указывает на то, что строка завершается нулем.
Описание
Данная функция используется для определения того, что переданный ей указатель указывает на корректную строку.
AfxMessageBox
int AfxMessageBox(LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0); int AFXAPI AfxMessageBox(UINT nIDPrompt, UINT nType = MB_OK, UINT nIDHelp = (UINT) -1);
Возвращаемое значение
Если для вывода диалогового окна недостаточно памяти, возвращает нулевое значение. В противном случае возвращает одно из следующих значений:
IDABORT - была нажата кнопка Abort (Прекращение);
IDCANCEL - была нажата кнопка Cancel (Отмена);
IDIGNORE - была нажата кнопка Ignore (Пропуск);
IDNO - была нажата кнопка No (Нет);
IDOK - была нажата кнопка OK;
IDRETRY - была нажата кнопка Retry (Повторение);
IDYES - была нажата кнопка Yes (Да).
Аргументы
lpszText - указатель на объект класса CString или заканчивающуюся нулем строку, содержащую выводимое в окне сообщение.
nType - стиль окна сообщения. Список этих стилей приведен в описании функции MessageBox.
nIDHelp - идентификатор контекстной справки данного сообщения. Если в данном аргументе передается нулевое значение или значение -1, выводится контекстное сообщение, определенное по умолчанию.
nIDPrompt -идентификатор ресурса строки.
Описание
Функция AfxMessageBox выводит на экран окно сообщения. Если данное диалоговое окно имеет кнопку Cancel (Отмена), то значение IDCANCEL возвращается не только при нажатии данной кнопки, но и при нажатии клавиши . В противном случае нажатие клавиши не приводит ни к каким последствиям. Для форматирования строк в окне сообщения могут использоваться функции AfxFormatString и AfxFormatString2.
AfxSetAllocHook
AFX_ALLOC_HOOK AfxSetAllocHook(AFX_ALLOC_HOOK pfnAllocHook);
Возвращаемое значение
Ненулевое, если память следует выделить, и нулевое в противном случае.
Аргументы
pfnAllocHook - содержит имя вызываемой функции.
Описание
Данная функция задает имя функции обратного вызова, которая будет вызываться перед каждой операцией выделения памяти. Диспетчер памяти MFC позволяет вызывать пользовательскую функцию обратного вызова, проверяющую корректность выполняемой операции выделения памяти. Пользовательская функция обратного вызова должна иметь следующий формат: BOOL AFXAPI AllocHook(size_t nSize, BOOL bObject, LONG lRequestNumber); где: nSize - размер требуемой области памяти.
bObject - флаг, устанавливаемый в том случае, если выделяется память под объект, производный от класса CObject.
lRequestNumber - номер блока в последовательности.
Следует помнить о том, что соглашение о вызовах AFXAPI предполагает, что вызываемая функция должна удалить свои аргументы из стека.
AfxTermExtensionModule
void AFXAPI AfxTermExtensionModule(AFX_EXTENSION_MODULE& state, BOOL bAll = FALSE);
Аргументы
state - ссылка на объект структуры AFX_EXTENSION_MODULE, хранящий состояние модуля библиотеки расширения MFC.
bAll - если данный аргумент имеет значение TRUE, очищаются все модули библиотек расширения MFC. Если он имеет значение FALSE, очищается только текущий модуль.
Описание
Вызов данной функции позволяет очистить библиотеку расширения MFC при завершении работы процесса или отключении библиотек динамической компоновки вызовом функции AfxFreeLibrary. Функция AfxTermExtensionModule освобождает всю локальную память, выделенную модулю и удаляет все записи из кэша карты сообщений. Эту функцию необходимо вызывать при динамической загрузке и освобождении библиотеки расширения MFC. Поскольку большинство библиотек динамической компоновки не используют динамической загрузки, а подключаются через импортные библиотеки, использовать для них функцию AfxTermExtensionModule необязательно.
 
« Предыдущая статья   Следующая статья »