Архитектура Microsoft Windows для разработчиков

Шлюзование


Эта операция выполняется, когда операционная система преобразует вызов 16-разрядной функции в вызов 32-разрядной. Процессы Windows 95 и Windows NT не могут содержать одновременно и 16-разрядный, и 32-разрядный код. Шлюз позволяет коду с одной стороны границы вызывать код с другой ее стороны. Каждая платформа использует один или несколько механизмов шлюзования:

  • механизм базовых шлюзов позволяет 16-разрядному Windows-приложению в системе под управлением Windows 95 и Windows NT загрузить и вызвать 32-разрядную библиотеку;
  • с помощью механизма плоских шлюзов, реализованного только в Windows NT, Win32-пpилoжeниe загружает и вызывает 16-разрядную библиотеку и наоборот.
  • Использование API Win32

    В этом упражнении Вы создадите окно сообщения, используя API Win32 и встроенную функцию Visual Basic MsgBox. > Создание окна сообщения средствами API Win32

    1. Запустите Microsoft Visual Basic и создайте новый проект стандартного исполняемого модуля.
    2. В меню Project выберите команду Add Module.
    3. В разделе General Declarations наберите следующий код:

      Declare Function MessageBox Lib "user32" Alias "MessageBoxA"(ByVal hwnd As Long, ByVal IpText As String, ByVal IpCaption As String, ByVal wType As Long) As Long

    4. Добавьте новую командную кнопку в форму Form1.
    5. В обработчике события Click кнопки Command1 наберите следующий код:

      MessageBox Me.hwnd, "API MessageBox function", "API", 0

    6. Запустите приложение.
    7. Щелкните кнопку Commandl.

      Функция API Win32 MessageBox будет вызвана непосредственно из кода Visual Basic.

      > Создание окна сообщения средствами Visual Basic

      1. Запустите Visual Basic и создайте новый проект стандартного исполняемого модуля.
      2. Добавьте командную кнопку в форму Forml.
      3. В обработчике события Click кнопки Commandl наберите следующий код:

        MsgBox "Visual Basic MsgBox function"

      4. В меню Run щелкните команду Start, чтобы запустить программу.
      5. Щелкните кнопку Commandl.

        Обратите внимание на появившееся окно сообщения — на сей раз Visual Basic самостоятельно вызвал функцию MessageBox из библиотеки User32.dll.



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