Текущий раздел:

Описания RDS

Приложения

Приложение А. Функции, константы и структуры RDS

А.5. Сервисные функции и макросы RDS

А.5.2. Управление работой RDS и функции общего назначения

А.5.2.6. Макросы RDS_SERV_ERROR_MSGA и RDS_SERV_ERROR_MSGW – собщения о несовместимой версии RDS

# Приложения

## Приложение А. Функции, константы и структуры RDS

### А.5. Сервисные функции и макросы RDS

#### А.5.2. Управление работой RDS и функции общего назначения

##### А.5.2.6. Макросы RDS_SERV_ERROR_MSGA и RDS_SERV_ERROR_MSGW – собщения о несовместимой версии RDS

Макросы RDS_SERV_ERROR_MSGA и RDS_SERV_ERROR_MSGW предназначены для вывода сообщения о несовместимости версии RDS, в которую загружается DLL, и описаний, с которыми скомпилирована эта DLL. В отличие от большинства остальных макросов, они описаны в файле «RdsFunc.h», а не в «RdsDef.h», поскольку обычно используются вместе с описанной там же функцией, автоматически вставляемой в программу при использовании макроса RDS_SERV_FUNC_BODY. Параметров эти макросы не имеют. Если перед включением в текст программы файлов «RdsDef.h» и «RdsFunc.h» была определена константа RDS_NOVERSIONDEFINES, эти два макроса определены не будут, поскольку они используют макроопределения для текущей версии RDS.

Определения

      #define RDS_SERV_ERROR_TEXTW L"Эти модели могут использоваться только с версией RDS не ниже " \
                                   RDS_STRVERSIONW L"\n" \
                                   L"These models need RDS " RDS_STRVERSIONW L" or newer"
      #define RDS_SERV_ERROR_TEXTA "These models need RDS " RDS_STRVERSIONA " or newer"
      #define RDS_SERV_ERROR_MSGW { if(rdsIncompatibleDll) rdsIncompatibleDll(); \
                                    MessageBoxW(NULL,RDS_SERV_ERROR_TEXTW,NULL,MB_OK | MB_ICONERROR); }
      #define RDS_SERV_ERROR_MSGA { if(rdsIncompatibleDll) rdsIncompatibleDll(); \
                                    MessageBoxA(NULL,RDS_SERV_ERROR_TEXTA,NULL,MB_OK | MB_ICONERROR); }

Примечания

Для вывода сообщения макросы используют функцию Windows API MessageBox. Макрос RDS_SERV_ERROR_MSGA вызывает версию этой функции для кодировки ANSI (MessageBoxA) и, поэтому, выводит сообщение только на английском языке. Макрос RDS_SERV_ERROR_MSGW вызывает версию функции для кодировки UTF16 (MessageBoxW) и выводит сообщение на русском и английском. В сообщении указывается версия RDS из описаний в «RdsDef.h». Если есть доступ к сервисной функции rdsIncompatibleDll, она также вызывается, чтобы сообщить RDS о невозможности использования моделей из данной библиотеки.

Пример

      // Главная функция DLL
      int WINAPI DllMain(
        HINSTANCE /*hinst*/,   // Дескриптор модуля этой DLL
        unsigned long reason,  // Причина вызова (загрузка или
                               // выгрузка DLL)
        void* /*lpReserved*/   // Способ загрузки – динамический
                               // или статический
        )
      { if(reason==DLL_PROCESS_ATTACH) // Загрузка DLL
          { // Получение доступа к функциям RDS
            if(!GetInterfaceFunctions())
              RDS_SERV_ERROR_MSGW // Сообщение: старая версия RDS
          }
        // Возврат – успешное завершение
        return 1;
      }

См. также

rdsIncompatibleDll.