Четвертый BORLAND С++ и его окружение

       

Написание переносимого кода Windows


В данном разделе обсуждаются конструкции (введенные в

Windows 3.1), обеспечивающие переносимость кода Windows. Существующий 16-разрядный код Windows можно переносить с минимальными

изменениями в Win32 и Windows NT. Большинство изменений предусматривают подстановку вместо старых новых макрокоманд и типов и

замену специфических 16-разрядных вызовов API аналогичными API

Win32. После внесения этих изменений ваш программный код сможет

компилироваться и выполняться в 16-разрядной и 32-разрядной среде

Windows.

Чтобы облегчить создание переносимого кода, предусмотрена

переменная среду этапа компиляции STRICT. Windows 3.1 поддерживает определение STRICT в windows.h. Например, если не определена

переменная STRICT, то передача HWND функции, требующей HDC, не

приведет к выводу компилятором предупреждающего сообщения. Если

вы определите STRICT, то получите ошибку компиляции.

Использование STRICT позволяет:



  • выполнять строгую проверку типов;
  • корректировать и согласовывать описания типа параметра и

    возвращаемого значения;

  • создавать прототипы определений типов для функций обратного вызова (оконные, диалоговые и специальные процедуры);
  • согласовывать с ANSI описания структур COMM, DCB и

    COMSTAT.

  • STRICT обладает обратной совместимостью с Windows 3.0, то

    есть ее можно использовать для создания приложений, работающих в

    Windows 3.0. Определение STRICT поможет вам находить и корректировать несовместимость типов при переносе программ в 32-разрядную среду и поможет обеспечить переносимость между 16- и 32-разрядной Windows.

    Чтобы вы могли изменить свою программу в соответствии со

    STRICT, предусмотрены новые типы, константы и макрокоманды

    Типы и константы Описание

    CALLBACKИспользуется вместо FAR PASCAL в подпрограммах обратного вызова (например, оконных и диалоговых процедурах).
    LPARAM Описывает все 32-разрядные полиморфические параметры.
    LPCSTR То же, что LPSTR, но используется для доступ-

    ных только по чтению строковых указателей.

    LRESULT Описывает все 32-разрядные возвращаемые значения.
    UINT Переносимый беззнаковый целочисленный тип,

    размер которого определяется целевой средой.

    (В Windows 3.1 представляет 16-битовое значение, а в Win32 - 32-битовое.)

    WINAPI Используется вместо FAR PASCAL для описаний API. Если вы пишете DLL с экспортируемыми точками входа API, то можете использовать ее для описаний API.
    WPARAM Описывает 16-битовые полиморфические параметры.
    <

    Содержание раздела