Scarica un controllo COM quando lavori nell'IDE VB6
Domanda
Parte del mio lavoro quotidiano consiste nel mantenere ed estendere le applicazioni VB6 legacy.Un motore comune è scritto in C/C++ e VB6 utilizza queste funzioni per migliorare le prestazioni.
Quando si tratta di programmazione asincrona, un'interfaccia C non è sufficiente e ci affidiamo ai controlli COM per inviare eventi a VB6.
Il mio problema è che quando registro il controllo in VB6, VB carica questo controllo in memoria e non lo scarica finché non esco dall'IDE VB6.Poiché il controllo viene sempre caricato, non riesco a ricompilarlo in VC6 perché il file DLL è bloccato.
Una soluzione che ho trovato non è abilitare il controllo in VB ma utilizzare il file CreateObject()
con il nome completo del mio controllo.Il problema quindi è che devo dichiarare il mio controllo come Oggetto perché VB6 non sa nulla dell'interfaccia che sto utilizzando e non ho accesso a IntelliSense, il che è una seccatura.
Qualche idea su come posso dire a VB6 di scaricare i controlli dopo aver chiuso l'applicazione o direttamente nell'IDE?
Soluzione
Sono abbastanza sicuro che non esista un buon modo per forzare VB6 a scaricare il controllo.
Ecco cosa faccio...invece di eseguire Visual C e Visual Basic fianco a fianco, esegui VB6 Sotto V.C.:
- Carica VC
- Apri il progetto contenente i tuoi oggetti COM
- Modificare, cambiare, ecc.
- In VC, imposta l'eseguibile di output su VB6.EXE con gli argomenti della riga di comando appropriati per caricare l'area di lavoro VB6
- Ora premi F5 per avviare l'IDE VB6 e caricare il tuo progetto VB6
- Quando desideri modificare nuovamente il codice COM, esci da VB6.EXE, apporta le modifiche e premi nuovamente F5.Finché salvi il tuo spazio di lavoro, VB6 ricorderà quali finestre avevi aperto e tutte le impostazioni del tuo progetto.
Vantaggi di questo metodo:
- È possibile impostare punti di interruzione nell'oggetto COM ed eseguirne il debug utilizzando un debugger di origine completo
- Puoi tranquillamente eseguire il debug in C e VB allo stesso tempo
- Ogni volta che VB6 è in esecuzione, ha sempre la versione più recente delle DLL COM