In VB6, oltre alle funzioni, è possibile importare dalle DLL tipi di dati ? Se sì, come ?
In VB6, oltre alle funzioni, è possibile importare dalle DLL tipi di dati ? Se sì, come ?
Che intendi esattamente ... ? Ti riferisci alle Type Library (.TLB) ?
Non sono espertissimo di VB6, faccio l'esempio concreto. Dovrei usare la funzione GetWindowRect. Questa prende come argomenti un HWND (che è un Long, quindi tutto ok) ed un Rect. Ora, il Rect non ha corrispondenze in VB6. Posso importarlo in qualche modo ?
Ah ... devi semplicemente usare una struttura tramite le istruzioni Type...End Type per definire il nuovo tipo di dato.
Per la Rect puoi scrivere
e dichiarare la variabile che ti serve concodice:Private Type RECT ' oppure Public se serve Left As Long Top As Long Right As Long Bottom As Long End Type
Dim r As RECT
E un tipo definito così è poi compatibile con funzioni come quella di sopra ? Pensvo fosse necessario importarli direttamente ! Grazie !
Sì, e' utilizzabile, ovviamente per indirizzo (ByRef).
Dai un'occhiata a questo codice
codice:Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long Private Declare Function GetDesktopWindow Lib "user32" () As Long Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long Dim DskHwnd As Long Dim DskRect As RECT Dim DskHdc As Long Dim rc As Long DskHwnd = GetDesktopWindow() DskHdc = GetWindowDC(DskHwnd) rc = GetWindowRect(DskHwnd, DskRect) Debug.Print DskRect.Left, DskRect.Top, DskRect.Right, DskRect.Bottom
Sì avevo già risolto
Comunque una domanda, a questo punto
Perchè dichiarando più variabili in una sola riga, tipo
Quando poi vado ad utilizzare queste variabili il programma mi da errore ?codice:Dim Rect1, Rect2 as RECT
Perche' in VB non funziona come in C ...![]()
Se scrivi
Dim Rect1, Rect2 As RECT
e' come scrivere
Dim Rect1 As Variant, Rect2 As RECT
Devi scrivere
Dim Rect1 As RECT, Rect2 As RECT
Ah ecco !
Non programmo in VB6 da un pozzo di tempo, mi sono scordato tutto![]()