Читать онлайн «Windows via C/C++. Программирование на языке Visual C++»

Автор Джеффри Рихтер

Третий параметр указывает код интересующей нас ошибки, а четвертый — язык, на котором мы хотим увидеть ее описание. Поскольку мы хотим получить сообщения, переданные Windows, идентификатор языка создается из пары опре- деленных констант, в результате получается 0 — значение, соответствующее язы- ку по умолчанию, заданному в операционной системе. Это пример ситуации, в которой невозможно «зашить» в код идентификатор языка, поскольку нельзя уз- нать заранее, какой язык используется в той копии операционной системы, где будет запущена программа ErrorShow. Если выполнение FormatMessage заканчивается успешно, описание ошиб- ки помещается в блок памяти, и я копирую его в прокручиваемое окно, рас- положенное в нижней части окна программы. А если вызов FormatMessage 10 Часть I. Материалы для обязательного чтения оказывается неудачным, я пытаюсь найти код сообщения в модуле NetMsg. dll, чтобы выяснить, не связана ли ошибка с сетью (о поиске DLL на диске см. в главе 20).
Используя описатель NetMsg. dll, я вновь вызываю FormatMessage. Дело в том, что у каждого DLL или ЕХЕ-модуля может быть собственный набор кодов ошибок, который включается в модуль с помощью Message Compiler (MC. exe). Как раз это и позволяет делать утилита Error Lookup через свое диалоговое окно Modules.