Статья:
Классы CErrCodeMsg и CLastErrCodeMsgАвтор(ы): Игорь Вартанов
Дата: 24.09.2001
Авторы:
Игорь Вартанов
Аннотация:
Класс CErrCodeMsg выполняет роль "обертки" вокруг системной функции FormatMessage(), т.е. предоставляет программисту простой и удобный интерфейс для получения текстовых строк описания кодов завершения и ошибок, возвращаемых системой. Инкапсуляция возможностей FormatMessage() выполнена неполностью, но реализована наиболее полезная на взгляд автора возможность сообщить системе о том, что ей необходимо самостоятельно выделить буфер для хранения возвращаемой строки. Кроме того, предоставлена возможность явно задать язык, для которого должна быть сформирована строка описания, хотя это сделано скорее из соображений возможного дальнейшего развития класса. Ну и, разумеется, класс самостоятельно реализует возврат памяти, выделенной под буфер.
1. Если в конструкторе CErrCodeMsg::CErrCodeMsg() указать и для параметра "code" значение по умолчанию (напр., ERROR_SUCCESS), то можно пользоваться объектами класса CErrCodeMsg так:
CErrCodeMsg err; // Сначала определить, а потом использовать
err = ::CoInitialize(NULL);
2. А чтобы в окошках Watch и Variables дебугера видеть имя ошибки, а не "{...}" для объекта, можно добавить следующую строку в файл \Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\autoexp.dat в секцию [AutoExpand]:
CErrCodeMsg=<m_dwErrCode,hr>
Теперь в watch window объекты класса CErrCodeMsg будут выглядеть как "err | {E_INVALIDARG}", что куда интереснее трех точек.
3. А добавив в тотже файл секцию [ExecutionControl], а в нее строку
CErrCodeMsg::*=NoStepInto
вы не сможете входить в методы класса CErrCodeMsg при пошаговом выполнении, что сохранит время на выход из них :)
Вы меня извините конечно, но стоит ли подобный класс использовать? тем более, что все сводится к вызову одной функции...
оч. удобная штука — говорю как практик.
А сам ты ей пользуешься? И если да, то почему предпочитаешь ее классу стандартному _com_error.
Здравствуйте, Игорь Вартанов, Вы писали:
ИВ>Статья:
ИВ>Классы CErrCodeMsg и CLastErrCodeMsgАвтор(ы): Игорь Вартанов
Дата: 24.09.2001
ИВ>Авторы:
ИВ> Игорь Вартанов
ИВ>Аннотация:
ИВ>Класс CErrCodeMsg выполняет роль "обертки" вокруг системной функции FormatMessage(), т.е. предоставляет программисту простой и удобный интерфейс для получения текстовых строк описания кодов завершения и ошибок, возвращаемых системой. Инкапсуляция возможностей FormatMessage() выполнена неполностью, но реализована наиболее полезная на взгляд автора возможность сообщить системе о том, что ей необходимо самостоятельно выделить буфер для хранения возвращаемой строки. Кроме того, предоставлена возможность явно задать язык, для которого должна быть сформирована строка описания, хотя это сделано скорее из соображений возможного дальнейшего развития класса. Ну и, разумеется, класс самостоятельно реализует возврат памяти, выделенной под буфер.
Просто мегакласс. Как же я раньше жил без
такого чуда. Надо ещё серию статей по использованию сиго шедевра написать.