Иллюстрированный самоучитель по Visual Studio.Net


Собственные методы класса - часть 4


{

if (dw)

{

//====== Вставляем поля facility и severity

dw = 0x80000000 | (0x7 << 16) | (dw f, OxFFFF) ;

m_Severity = "Error";

}

}

//====== Выделяем поле facility

UINT f = (dw»16) & 0xlFFF;

//====== Выбираем нужную аббревиатуру

m_Facility = f <= N_FACILITIES |gsFacilities[f) : "Unknown";

}

Так как коды \Ут32-ошибок не имеют полей facility и severity (эти атрибуты появились позже), то их надо синтезировать. Таким же образом поступает макроподстановка HRESULT_FROM_wiN32, и ее можно использовать в этом месте, но мы (с учебной целью) вставили ее код. Если вы хотите опробовать макрос, то замените строку

dw = 0x80000000 | (0x7 << 16) | (dw & 0xFFFF);

на

dw = HRESULT_FROM_WIN32(dw);

Далее мы выделяем поле facility и выбираем из массива gsFacilities аббревиатуру, которая более информативна, чем число f, кодирующее facility.




Начало  Назад  Вперед