Поделиться через


Практическое руководство. Вызов функции Windows, принимающей значение беззнакового типа

Обновлен: Ноябрь 2007

При использовании класса, модуля или структуры, имеющих члены беззнаковых целых типов, можно получить доступ к этим членам с помощью Visual Basic.

Для вызова функции Windows, которая принимает беззнаковый тип

  1. Используйте Оператор Declare, чтобы сообщить Visual Basic, какая из библиотек содержит функцию с данным именем, какова последовательность вызова, и как преобразовать строки при её вызове.

  2. В инструкции Declare используйте UInteger, ULong, UShort или Byte соответственно для каждого параметра с беззнаковым типом.

  3. Обратитесь к документации вызываемой функции Windows для поиска имен и значений констант, которые она использует. Многие из них определены в файле WinUser.h.

  4. Объявите необходимые константы в коде программы. Многие константы Windows - 32-разрядные беззнаковые значения, их следует объявлять как AsUInteger.

  5. Вызовите функцию обычным образом. В следующем примере вызывается Windows функция MessageBox, которая принимает беззнаковое целое число в качестве аргумента.

    Public Class windowsMessage
        Private Declare Auto Function mb Lib "user32.dll" Alias "MessageBox" _
            (ByVal hWnd As Integer, _
            ByVal lpText As String, _
            ByVal lpCaption As String, _
            ByVal uType As UInteger) As Integer
        Private Const MB_OK As UInteger = 0
        Private Const MB_ICONEXCLAMATION As UInteger = &H30
        Private Const IDOK As UInteger = 1
        Private Const IDCLOSE As UInteger = 8
        Private Const c As UInteger = MB_OK Or MB_ICONEXCLAMATION
        Public Function messageThroughWindows() As String
            Dim r As Integer = mb(0, "Click OK if you see this!", _
                "Windows API call", c)
            Dim s As String = "Windows API MessageBox returned " _
                & CStr(r)& vbCrLf & "(IDOK = " & CStr(IDOK) _
                & ", IDCLOSE = " & CStr(IDCLOSE) & ")"
            Return s
        End Function
    End Class
    

    Можно проверить функцию messageThroughWindows с помощью следующего кода.

    Public Sub consumeWindowsMessage()
        Dim w As New windowsMessage
        w.messageThroughWindows()
    End Sub
    
    f902h0kk.alert_caution(ru-ru,VS.90).gifВнимание!

    Типы данных UInteger, ULong, UShort и SByte не являются частью Спецификация CLS (CLS), поэтому CLS-совместимый код не может использовать компонент, который использует их.

    f902h0kk.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

    Создание вызова неуправляемого кода, такого как программного интерфейса приложения (API), подвергает ваш код потенциальной опасности.

    f902h0kk.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

    Вызов Windows API требует разрешения неуправляемого кода, которое может повлиять на его выполнение в случаях частичного доверия. Дополнительные сведения см. в разделах SecurityPermission и Разрешения для доступа к коду.

См. также

Задачи

Практическое руководство. Оптимизация хранения положительных целых чисел с беззнаковыми типами

Пошаговое руководство. Вызов интерфейсов прикладного программирования (API) Windows

Ссылки

Сводка типов данных (Visual Basic)

Тип данных Integer (Visual Basic)

Тип данных UInteger

Оператор Declare