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


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

Новая таблица умножения - Статья.

Компьютерная телефония - Статья.

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

Таблица Пифагора (таблица умножения) - Статья.

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

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

Поделиться:

1    2    3

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 необязательно.
ChooseFont

BOOL ChooseFont(LPCHOOSEFONT lpcf);

Возвращаемое значение
Если пользователь нажимает кнопку OK в диалоговом окне Шрифт, возвращаемое значение не равно нулю. Выбор пользователя фиксируется в объекте структуры CHOOSEFONT. Если пользователь нажимает кнопку Cancel (Отмена) или закрывает диалоговое окно Шрифт (Font), данная функция возвращает нулевое значение. Для получения дополнительной информации используется вызов функции CommDlgExtendedError, возвращающей следующие значения: CDERR_FINDRESFAILURE,CDERR_INITIALIZATION, CDERR_LOCKRESFAILURE, CDERR_LOADRESFAILURE, CDERR_LOADSTRFAILURE, CDERR_MEMALLOCFAILURE, CDERR_MEMLOCKFAILURE, CDERR_NOHINSTANCE, CDERR_NOHOOK, CDERR_NOTEMPLATE, CDERR_STRUCTSIZE, CFERR_MAXLESSTHANMIN иCFERR_NOFONTS.
Аргументы

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

Описание
Функция ChooseFont открывает стандартное диалоговое окно Шрифт (Font), позволяющее пользователю установить атрибуты логического шрифта. Эти атрибуты включают в себя начертание, стиль (жирный, курсив или обычный), размер шрифта, эффекты (подчеркивание, зачеркивание или цвет) и набор символов шрифта. В диалоговом окне Шрифт для обработки сообщений, посылаемых данному окну может быть использован объект класса CFHookProc. Для использования данного объекта установите флаг CF_ENABLEHOOK в переменной Flags, являющейся членом структуры CHOOSEFONT, поместите указатель на соответствующую функцию обратного вызова в переменную lpfnHook объект структуры CHOOSEFONT. Функция обратного вызова может посылать диалоговому окну сообщения WM_CHOOSEFONT_GETLOGFONT, WM_CHOOSEFONT_SETFLAGS и WM_CHOOSEFONT_SETLOGFONT для получения от него информации о текущих установках его элементов управления.
CloseHandle

BOOL CloseHandle(HANDLE hObject);

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

hObject - дескриптор открытого объекта.

Описание
Функция CloseHandle уничтожает дескриптор открытого объекта. Данная функция уничтожает дескриптор объекта, уменьшает счетчик дескрипторов объекта и производит проверку этого счетчика. Как только значение счетчика становится равным нулю, объект удаляется из системы. Уничтожение дескриптора потока не приводит к завершению связанного с ним потока. Для уничтожения объекта потока необходимо сначала завершить выполнение потока, а затем уничтожить все его дескрипторы. Функция CloseHandle используется для уничтожения дескрипторов, полученных при вызове функции CreateFile. Для уничтожения дескрипторов, возвращаемых функцией FindFirstFile, используйте функцию FindClose. Уничтожение недопустимого дескриптора вызывает исключение. Это происходит, например, при повторном уничтожении дескриптора.
CreateEvent

HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCTSTR lpName);

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

lpEventAttributes - указатель на объект структуры SECURITY_ATTRIBUTES, определяющую, может ли возвращаемый дескриптор наследоваться дочерним процессом. Если данный аргумент имеет нулевое значение, то дескриптор не может наследоваться. В Windows NT переменная lpSecurityDescriptor, являющаяся членом структуры, определяет дескриптор безопасности нового объекта события. Если эта переменная равна нулю, то объект события использует дескриптор безопасности, заданный по умолчанию.
bManualReset - определяет ручной или автоматический сброс объекта события при его создании. Если этот аргумент имеет значение TRUE, то для сброса данного объекта события в неотмеченное состояние необходимо использовать функциюResetEvent. В противном случае система автоматически сбрасывает состояние данного объекта события в неотмеченное, после освобождения единственного ждущего потока.
bInitialState - определяет начальное состояние объекта события. Если данный аргумент имеет значение TRUE, то данный объект события изначально отмечен.
lpName - указатель на заканчивающуюся нулем строку, содержащую имя объекта события. Длина данного имени ограничивается величиной MAX_PATH и может содержать любые символы кроме символа черты, наклоненной влево, используемой для разделения полей при задании пути к файлу. При сравнении имен учитывается регистр использованных символов.
Если аргумент lpName совпадает с именем существующего именованного объекта, данная функция запрашивает доступ к данному объекту в режиме EVENT_ALL_ACCESS. В этом случае значения аргументов bManualReset и bInitialState игнорируются. Если аргумент lpEventAttributes имеет ненулевое значение, он определяет возможность наследования дескриптора, но его дескриптор безопасности игнорируется. Если аргумент lpName имеет значение NULL, то создается неименованный объект события.
Если аргумент lpName совпадает с именем семафора, мютекса, таймера ожидания, задания или объекта карты файла (file-mapping object), функция прекращает свою работу, а функция GetLastError возвращает значение ERROR_INVALID_HANDLE. Это происходит потому, что эти объекты разделяют одно и то же пространство имен.

Описание
Функция CreateEvent позволяет создавать именованные и неименованные объекты событий. Дескриптор, возвращаемый данной функцией, имеет право доступа EVENT_ALL_ACCESS к новому объекту события и может быть использован любой функцией, имеющей в качестве аргумента дескриптор данного объекта. Любой поток вызывающего процесса может использовать дескриптор объекта события при вызове любой из функций ожидания. Функции ожидания, использующие один объект, возвращают свое значение после того, как будет отмечен соответствующий объект события. Функции ожидания, использующие несколько объектов, могут быть настроены таким образом, чтобы возвращать свое значение после того, как будет отмечен любой из связанных с нею объектов событий, или когда будут отмечены все эти объекты событий. После возвращения значения функцией ожидания ожидающий поток может продолжить свою работу. Начальное состояние объекта события определяется аргументом bInitialState. Для установления объекта события в отмеченное состояние используется функция SetEvent, а для сброса отмеченного состояния используется функция ResetEvent. Отмеченное состояние объекта события, созданного в режиме ручного сброса, остается таковым до вызова пользователем функции ResetEvent. Пока состояние объекта события остается отмеченным может быть возобновлена работа любого количества ждущих потоков или потоков, которые последовательно запускали операцию ожидания с использованием данного объекта события. Отмеченное состояние объекта события, созданного в режиме автоматического сброса, остается таковым до возобновления работы одного ожидающего потока. После этого система автоматически сбрасывает отмеченное состояние объекта события. Если ожидающие потоки отсутствуют, состояние объекта события остается отмеченным. Несколько процессов могут использовать дескрипторы одного объекта события, позволяющего этим процессам осуществлять взаимную синхронизацию. Возможно использование следующих механизмов разделения объектов:

функция CreateProcess создает дочерний процесс, который наследует дескриптор объекта события, если значение аргумента lpEventAttributes в функции CreateEvent допускает это наследование; процесс может передать дескриптор объекта события в аргументе функции DuplicateHandle создающей дубликат дескриптора, который может использоваться другим процессом; процесс может передать имя объекта события в аргументе функций OpenEvent или CreateEvent.

Для уничтожения дескриптора используется функция CloseHandle. Система автоматически уничтожает дескриптор при завершении процесса. Объект события уничтожается при уничтожении его последнего дескриптора.
CreateFontIndirect

HFONT CreateFontIndirect(CONST LOGFONT *lplf);

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

lplf - указатель на объект структуры LOGFONT, содержащий описание логического шрифта.

Описание
Функция CreateFontIndirect позволяет создать логический шрифт по его параметрам, заданным в объекте структуры LOGFONT. После этого созданный шрифт может выбираться в любой контекст устройства в качестве текущего шрифта. При выборе созданного шрифта в контекст устройства с использованием функции SelectObject интерфейс графических устройств Windows старается найти среди физических шрифтов такой, который бы максимально соответствовал параметрам заданного логического шрифта. В случае если ему не удается обеспечить полное соответствие, он использует шрифт, чьи параметры максимально соответствуют требуемым. После того, как приложение закончило работу с данным логическим шрифтом, необходимо вызвать функцию DeleteObject для его уничтожения.
DispatchMessage

LRESULT DispatchMessage(CONST MSG * lpmsg);

Возвращаемое значение
Возвращаемое значение совпадает с возвращаемым значением процедуры окна. Его трактовка зависит от обрабатываемого сообщения. Как правило, оно игнорируется.
Аргументы

lpmsg - указатель на объект структуры MSG, содержащей обрабатываемое сообщение.
Описание

Данная функция передает сообщение процедуре окна. Как правило, это сообщение было извлечено до этого функцией GetMessage. Объект структуры MSG должен содержать корректные значения сообщения. Если переменная lpmsg данного объекта структуры содержит указатель на сообщение WM_TIMER, то ее переменная lParam содержит указатель на функцию, вызываемую вместо процедуры окна.
EnumFontFamilies

int EnumFontFamilies(HDC hdc, LPCTSTR lpszFamily, FONTENUMPROC lpEnumFontFamProc, LPARAM lParam);

Возвращаемое значение
Значение, возвращенное последней функцией обратного вызова. Трактовка этого значения зависит от контекста, в котором была вызвана данная функция.
Аргументы

hdc - дескриптор контекста устройства.
lpszFamily - указатель на заканчивающуюся нулем текстовую строку, определяющую имя семейства запрошенных шрифтов. Если аргумент lpszFamily имеет нулевое значение, то функция EnumFontFamilies случайным образом выбирает и нумерует по одному шрифту для каждого доступного семейства типов шрифтов.
lpEnumFontFamProc - определяет адрес экземпляра процедуры определенной в приложении функции обратного вызова. Функции обратного вызова описаны при рассмотрении функции EnumFontFamProc.
lParam - указатель на блок данных. Структура блока данных определяется приложением. Эти данные передаются функции обратного вызова вместе с информацией о шрифте.

Описание
Функция EnumFontFamilies нумерует шрифты в указанном семействе шрифтов, доступном на указанном устройстве. Функции EnumFontFamilies и EnumFontFamProc оставлены для обеспечения совместимости с 16-разрядными версиями Windows. Приложения Win32 должны использовать функцию EnumFontFamiliesEx. Функция EnumFontFamilies позволяет получить информацию по каждому шрифту, семейство которого указано в аргументе lpszFamily, и передать эту информацию функции, указанной в аргументе lpEnumFontFamProc. Определенная в приложении функция обратного вызова может производить любую обработку полученной информации о шрифте. Нумерация шрифтов продолжается до тех пор, пока не останется необработанных шрифтов или пока функция обратного вызова не возвратит нулевое значение.
FreeLibrary

BOOL FreeLibrary(HMODULE hModule);

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

hModule - дескриптор модуля загруженной библиотеки динамической компоновки, возвращенный функцией LoadLibrary или GetModuleHandle.

Описание
Данная функция уменьшает на единицу счетчик ссылок загруженной библиотеки динамической компоновки. Как только значение этого счетчика достигнет нуля, модуль удаляется из адресного пространства процесса, а его дескриптор становится некорректным. Каждый процесс поддерживает счетчик ссылок для каждого загруженного им модуля библиотеки динамической компоновки. Значение этого счетчика увеличивается на единицу при каждом вызове функции LoadLibrary и уменьшается на единицу при каждом вызове функции FreeLibrary. После загрузки модуля библиотеки динамической компоновки его счетчик ссылок имеет единичное значение. При удалении модуля библиотеки динамической компоновки из адресного пространства процесса система вызывает его функцию DllMain (если таковая имеется) с аргументом DLL_PROCESS_DETACH. Это позволяет библиотеке динамической компоновки освободить все ресурсы, выделенные ей процессом. После завершения работы этой функции библиотечный модуль удаляется из адресного пространства процесса. Поэтому не рекомендуется вызывать данную функцию из функции DllMain. Вызов функции FreeLibrary не оказывает никакого действия на другие процессы, использующие тот же модуль библиотеки динамической компоновки.
GetCurrentDirectory

DWORD GetCurrentDirectory(DWORD nBufferLength, LPTSTR lpBuffer);

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

nBufferLength - определяет размер буфера для хранения строки, содержащей текущий каталог, выраженный в символах. Размер буфера должен учитывать необходимость записи в него завершающего строку нулевого символа.
lpBuffer - указатель на буфер для хранения строки, содержащей текущий каталог. В данный буфер будет записана тестовая строка, завершающаяся нулевым символом, и содержащая абсолютный путь к текущему каталогу.

Описание
Функция GetCurrentDirectory позволяет получить путь к текущему каталогу данного процесса.
GetDlgItem

HWND GetDlgItem(HWND hDlg, int nIDDlgItem);

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

hDlg - дескриптор диалогового окна, содержащего данный элемент управления.
nIDDlgItem - идентификатор элемента управления, дескриптор которого требуется получить.

Описание
Функция GetDlgItem позволяет получить дескриптор окна элемента управления в указанном диалоговом окне. Данная функция может использоваться для любой пары родительского и диалогового окна, а не только в диалоговых окнах. В тех случаях, когда аргумент hDlg определяет родительское окно, а дочернее окно имеет уникальный идентификатор (определяемый аргументом hMenu в функциях CreateWindow или CreateWindowEx при создании дочернего окна), функция GetDlgItem возвращает корректный дескриптор соответствующего дочернего окна.
GetExitCodeThread

BOOL GetExitCodeThread(HANDLE hThread, LPDWORD lpExitCode);

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

hThread - дескриптор потока. В Windows NT дескриптор должен иметь уровень доступа THREAD_QUERY_INFORMATION.
lpExitCode - указатель на 32-разрядную величину, в которую будет записан код завершения потока.

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

код завершения, указанный в качестве аргумента функции ExitThread или TerminateThread;. возвращаемое значение исполняющей функции потока; код завершения процесса потока.

GetLastError

DWORD GetLastError(VOID)

Возвращаемое значение
Данная функция возвращает значение кода последней ошибки, возникшей в вызывающем потоке. Функция устанавливает это значение с помощью вызова функции SetLastError. Раздел Возвращаемое значение справки по каждой функции содержит условия, при которых данная функция устанавливает код последней ошибки. Поскольку функция SetLastError является исключительно 32-разрядной функцией, функции Win32, представляющие собой скрытый вызов 16-разрядных функций, не устанавливают код последней ошибки. В этих функциях необходимо игнорировать эту величину. К подобным функциям относятся функции работы с окнами, функции GDI и функции работы с устройствами мультимедиа.
Описание
Функция GetLastError возвращает значение кода последней ошибки, возникшей в вызывающем потоке. Каждый поток имеет свой код последней ошибки. Вызов функции GetLastError должен следовать немедленно после возврата любой функцией значения, свидетельствующего о том, что при ее выполнении произошла ошибка. Это необходимо потому, что некоторые функции вызывают функцию SetLastError(0) в случае своего успешного завершения, что приводит к уничтожению кода ошибки, установленного предыдущей функцией. Большинство функций Win32 API устанавливают код последней ошибки в случае возникновения ошибки, но некоторые устанавливают его в случае своего нормального завершения. Ошибка при выполнении функции индицируется, обычно следующими кодами ошибки: FALSE, NULL, 0xFFFFFFFF или -1. Все случаи, когда функция вызывает функцию SetLastError при своем нормальном завершении, отмечены в справке по этой функции. Коды ошибок представляют собой 32-разрядные величины (бит 31 является старшим битом). Бит 29 зарезервирован для кодов ошибок, определяемых пользователем, поэтому при определении собственного кода ошибки пользователь должен установить этот бит в единицу. Чтобы получить строку, описывающую ошибку, по ее коду нужно вызвать функцию FormatMessage.
GetMenuContextHelpId

DWORD GetMenuContextHelpId(HMENU hmenu);

Возвращаемое значение
Возвращает контекстный идентификатор справки, если такой идентификатор связан с данным меню, и ноль в противном случае.
Аргументы

hmenu - дескриптор меню, для которого необходимо получить контекстный идентификатор справки.

Описание
Позволяет получить контекстный идентификатор справки для указанного меню.