Hodnota Null a API

Detaily:
Pokud zkopírujete například následující deklaraci přímo z API Vieweru:

Public Declare Function ScrollWindowEx Lib "user32" _
   (ByVal hwnd As Long, ByVal dx As Long, _ 
    ByVal dy As Long, lprcScroll As RECT, _ 
    lprcClip As RECT, ByVal hrgnUpdate As Long, _ 
    lprcUpdate As RECT, ByVal fuScroll As Long) As Long

tak vidíte, že funkce si jako parametry bere hodnoty typu RECT, které definují oblast, kterou mají Windows posunout. Pokud ale zašlete nulový parametr, pak Windows tuto oblast nadefinují za vás, pokud jim zašlete hwnd okna, pro které má být oblast definována, takže v kódu by to vypadalo asi takto:

ScrollWindowEx m_hWnd, 0, 5, ByVal 0&, ByVal 0&, 0&, ByVal 0&, _ SW_SCROLLCHILDREN Or SW_INVALIDATE

Bohužel, Visual Basic vygeneruje chybu, pokud použijete deklaraci uvedenou výše. Aby bylo možné zasílat hodnoty Null, pak je nutné změnit typy RECT v deklaraci na typy Any a pak bude vše fungovat bez problémů:

Public Declare Function ScrollWindowEx Lib "user32" _
   (ByVal hwnd As Long, ByVal dx As Long, _ 
    ByVal dy As Long, lprcScroll As Any, _ 
    lprcClip As Any, ByVal hrgnUpdate As Long, _ 
    lprcUpdate As Any, ByVal fuScroll As Long) As Long

S takto definouvanou API funkcí VB chybu generovat nebude.

Zpět

Autor: The Bozena