Навигация:
<< >> Оглавление Указатель

Приложения

Приложение А. Функции, константы и структуры 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 не ниже " \
                                L"\n" \
                               L"These models need RDS "  L" or newer"
  #define RDS_SERV_ERROR_TEXTA "These models need RDS "  " or newer"
  #define RDS_SERV_ERROR_MSGW { if() (); \
                                MessageBoxW(NULL,RDS_SERV_ERROR_TEXTW,NULL,MB_OK | MB_ICONERROR); }
  #define RDS_SERV_ERROR_MSGA { if() (); \
                                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(
     /*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.


<< >> Оглавление Указатель