Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423

    [VB6] Importare tipi di dati

    In VB6, oltre alle funzioni, è possibile importare dalle DLL tipi di dati ? Se sì, come ?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Che intendi esattamente ... ? Ti riferisci alle Type Library (.TLB) ?

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    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 ?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ah ... devi semplicemente usare una struttura tramite le istruzioni Type...End Type per definire il nuovo tipo di dato.

    Per la Rect puoi scrivere

    codice:
    Private Type RECT  ' oppure Public se serve
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
    End Type
    e dichiarare la variabile che ti serve con

    Dim r As RECT

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    E un tipo definito così è poi compatibile con funzioni come quella di sopra ? Pensvo fosse necessario importarli direttamente ! Grazie !

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Sì avevo già risolto
    Comunque una domanda, a questo punto
    Perchè dichiarando più variabili in una sola riga, tipo
    codice:
    Dim Rect1, Rect2 as RECT
    Quando poi vado ad utilizzare queste variabili il programma mi da errore ?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Ah ecco !
    Non programmo in VB6 da un pozzo di tempo, mi sono scordato tutto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.