Страница 2 из 14 void AFXAPI AfxCheckError(SCODE sc); throw CMemoryException* throw COleException* Описание Данная функция проверяет значение своего аргумента на то, что он содержит код ошибки. В случае положительного исхода этой проверки вызывается исключение. Если в качестве аргумента передан код E_OUTOFMEMORY, вызывается исключение CMemoryException. Для этого используется функция AfxThrowMemoryException. В противном случае, с использованием функции AfxThrowOleException, вызывается исключение COleException. Функция AfxCheckError одинаково работает как в отладочной, так и в распространяемой версиях приложения. BOOL AfxCheckMemory(); Возвращаемое значение Ненулевое, при отсутствии ошибок в памяти, и нулевое в противном случае. Описание Данная функция проверяет кучу и выводит сообщения об обнаруженных ошибках. Если ошибки отсутствуют, ничего не выводится. Производится проверка всех блоков памяти, размещенных в куче, включая блоки, выделенные операцией new. Блоки, выделенные на низком уровне, например, функциями malloc и GlobalAlloc, не проверяются. Список дефектных блоков памяти выводится в окно отладчика. Если в программе присутствует строка #define new DEBUG_NEW то при последующих вызовах функции AfxCheckMemory в выводимую информацию будет включено имя файла и номер строки, в которой был выделен этот блок памяти. Если приложение содержит классы, сохраняемые в потоке, то приведенная выше строка должно располагаться после последнего вызова макроса IMPLEMENT_SERIAL. Эта функция работает только в отладочной версии библиотеки MFC. void AFXAPI AfxDumpStack(DWORD dwTarget = AFX_STACK_DUMP_TARGET_DEFAULT); Аргументы dwTarget - указывает, куда будет записываться содержимое стека. Может представлять собой комбинацию следующих значений, объединяемых операцией ИЛИ (|): AFX_STACK_DUMP_TARGET_TRACE - для вывода содержимого стека используется макрос TRACE. Этот макрос выводит информацию только в отладочном режиме. В окончательной версии никакой информации выводиться не будет. Выходной поток макроса TRACE может быть переназначен другому приемнику, помимо отладчика; AFX_STACK_DUMP_TARGET_DEFAULT - при работе отладочной версии содержимое стека выводится макросом TRACE, а в окончательной версии оно помещается в буфер обмена; AFX_STACK_DUMP_TARGET_CLIPBOARD - помещает содержимое стека в буфер обмена. Запись производится в текстовом виде с использованием формата буфера обмена CF_TEXT; AFX_STACK_DUMP_TARGET_BOTH - помещает содержимое стека в буфер обмена и одновременно выводит его макросом TRACE; AFX_STACK_DUMP_TARGET_ODS - посылает содержимое стека непосредственно отладчику с использованием функции Win32 OutputDebugString. Отладчик, если он подключен к процессу, получит эту информацию как от отладочной, так и от окончательной версии. При установке флага AFX_STACK_DUMP_TARGET_ODS приемником информации может быть только отладчик (если он подключен). Описание Данная функция используется для создания образа стека. Каждой функции, содержащейся в стеке, соответствует строка в его образе. Каждая строка образа стека содержит адрес последнего вызова функции, полный путь к модулю, в котором произошел вызов и прототип вызываемой функции. Если вызов функции произошел не по указанному адресу, дополнительно указывается смещение вызова (в результате вызов может произойти не из указанной функции, а совсем из другой функции). Данная функция имеется как в отладочной, так и в распространяемой версиях библиотеки MFC. Эта функция всегда подключается статически. Даже в тех случаях, когда все остальные функции библиотеки MFC подключаются динамически. В этом случае ее реализация располагается в файле MFCS42.LIB или в его вариантах. Для обеспечения успешной работы данной функции необходимо обеспечить следующие условия: приложение должно иметь доступ к каталогу, в котором расположен файл imagehlp.dll. В противном случае будет выдано сообщение об ошибке. Этот файл представляет собой библиотеку динамической компоновки, поставляемую совместно с Platform SDK и Windows; располагающиеся в стеке модули должны содержать отладочную информацию. В противном случае выдаваемая данной функцией информация будет не столь детальной. void AfxEnableControlContainer(); Описание Данная функция вызывается функцией CWinApp::InitInstance, чтобы обеспечить в приложении поддержку элементов управления OLE. BOOL AfxEnableMemoryTracking(BOOL bTrack); Возвращаемое значение Возвращает предыдущее значение флага разрешения проверки памяти. Аргументы bTrack - флаг разрешения проверки памяти. Описание Позволяет установить или отменить режим трассировки памяти. По умолчанию в отладочной версии приложения MFC установлен режим проверки памяти. Чтобы отменить этот режим, достаточно вызвать функцию AfxEnableMemoryTracking с аргументом FALSE. Для восстановления этого режима необходимо передать в аргументе данной функции значение TRUE. Эта функция работает только в отладочной версии библиотеки MFC. void AfxEndThread(UINT nExitCode); Аргументы nExitCode - определяет код завершения потока. Описание Данная функция используется для завершения текущего потока. Должна вызываться из потока, который необходимо завершить. BOOL GetMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax); Возвращаемое значение Если данная функция извлекает сообщение отличное от WM_QUIT, то возвращается ненулевая величина. В противном случае возвращается ноль. Если в процессе выполнения функции произошла ошибка, то возвращаемая величина равна -1. Например, ошибка может возникнуть, если аргумент hWnd не является дескриптором окна или аргумент lpMsg не указывает на объект структуры MSG. Дополнительную информацию по ошибке можно получить, вызвав функцию GetLastError. Аргументы lpMsg - указатель на объект структуры MSG, в который будет записана информация из очереди сообщений потока. hWnd - дескриптор окна, сообщения для которого следует получить. Этот аргумент может принимать нулевое значение. Это значение свидетельствует о том, что функция GetMessage должна получать сообщения для любого окна, принадлежащего данному потоку, и сообщения от потока, посланные функцией PostThreadMessage. wMsgFilterMin - определяет нижнюю границу диапазона отыскиваемых сообщений. wMsgFilterMax - определяет верхнюю границу диапазона отыскиваемых сообщений. Описание Функция GetMessage получает сообщения из очереди сообщений вызвавшего ее потока и помещает их в объект специальной структуры. Данная функция позволяет получать сообщения для любого окна, принадлежащего данному потоку, и сообщения от потока, посланные функцией PostThreadMessage. При поиске сообщений производится проверка на нахождение их в определенном диапазоне значений. Функция GetMessage не может отыскивать сообщения, направленные другим окнам или приложениям. Приложение использует возвращаемое данной функцией значение для определения того, нет ли необходимости выйти из главного цикла сообщений приложения и завершить его работу. Функция GetMessage позволяет получить сообщения, связанные с окном, определенным в аргументе hWnd, или с любым его дочерним окном, как это определено в функции IsChild. Получаемые сообщения должны находиться в диапазоне, заданном аргументами wMsgFilterMin и wMsgFilterMax. Если аргумент hWnd имеет нулевое значение, то функция GetMessage должна получать сообщения для любого окна, принадлежащего данному потоку, и сообщения от потока, посланные функцией PostThreadMessage. Даже в том случае, когда аргумент hWnd имеет нулевое значение, функция GetMessage не позволяет получать сообщения, предназначенные для окон, принадлежащих другим потокам, или от других потоков, кроме вызывающего. Сообщение от потока, направляемое функцией PostThreadMessage имеет нулевое значение параметра hWnd. Если оба аргумента wMsgFilterMin и wMsgFilterMax имеют нулевое значение, то функция GetMessage позволяет получить все возможные сообщения (фильтрация сообщений отсутствует). В качестве границ диапазона могут использоваться значения WM_KEYFIRST и WM_KEYLAST, позволяющие выделить все сообщения, связанные с клавиатурой, и значения WM_MOUSEFIRST и WM_MOUSELAST, позволяющие выделить все сообщения, связанные с мышью. Функция GetMessage не удаляет сообщение WM_PAINT из очереди сообщений. Оно остается там пока не будет обработано. Поскольку данная функция может возвращать положительные, нулевые и отрицательные значения, то при написании программы следует избегать использования таких выражений как: while (GetMessage(lpMsg, hWnd, 0, 0)) { ... } поскольку данное выражение не реагирует на величину -1, свидетельствующую о возникновении фатальной ошибки в приложении. DWORD GetWindowContextHelpId(HWND hwnd); Возвращаемое значение Возвращает контекстный идентификатор справки, если такой идентификатор связан с данным окном, и ноль в противном случае. Аргументы hwnd - дескриптор окна, для которого необходимо получить контекстный идентификатор справки. Описание Позволяет получить контекстный идентификатор справки для указанного окна, если с данным окном связан контекстный идентификатор справки. |