2008-08-02 19 views
31

Ein Teil meiner täglichen Arbeit ist die Pflege und Erweiterung von VB6-Anwendungen. Eine allgemeine Engine wird in C/C++ geschrieben, und VB6 verwendet diese Funktionen, um die Leistung zu verbessern.Entladen eines COM-Steuerelements beim Arbeiten in VB6 IDE

Wenn es um die asynchrone Programmierung kommt, ist eine C-Schnittstelle nicht genug, und wir setzen auf COM steuert Ereignisse VB6 abzufeuern.

Mein Problem ist, dass, wenn ich die Kontrolle in VB6 registrieren, VB lädt diese Steuerung im Speicher und es nicht entladen, bis ich die VB6 IDE beenden. Da das Steuerelement die ganze Zeit geladen ist, kann ich es in VC6 nicht neu kompilieren, da die DLL-Datei gesperrt ist.

Eine Lösung fand ich nicht die Kontrolle in VB zu ermöglichen, aber die CreateObject() mit dem vollen Namen meiner Kontrolle verwenden. Das Problem ist dann, dass ich meine Kontrolle als ein Objekt deklarieren muss, weil VB6 nichts von der Schnittstelle weiß, die ich benutze, und ich habe keinen Zugang zu IntelliSense, was ein Schmerz ist.

Irgendeine Idee, wie ich VB6 sagen kann, Kontrollen zu entladen, nachdem die Anwendung oder direkt in der IDE zu verlassen?

Antwort

27

Ich bin mir ziemlich sicher, dass es keine gute Möglichkeit gibt, VB6 zu zwingen, das Steuerelement zu entladen.

Hier ist, was ich tun ... statt Visual C und Visual Basic Side-by-Side, laufen VB6 unter VC ausgeführt wird:

COM
  1. Legen Sie bis VC
  2. Öffnen Sie das Projekt enthält Objekte
  3. bearbeiten, ändern usw.
  4. In VC gesetzt Executable den Output VB6.EXE mit entsprechenden Befehlszeilenargumente, um die VB6 Arbeitsplatz
  5. Jetzt laden Sie einfach auf F5, um die VB6 IDE zu starten und laden Sie Ihre VB6 Projekt
  6. Wenn Sie wieder den COM-Code ändern, Ausgang VB6.EXE, Ihre Änderungen vorzunehmen, und drücken Sie erneut F5. Solange Sie Ihren Arbeitsbereich speichern, merkt sich VB6, welche Fenster Sie geöffnet hatten und alle Ihre Projekteinstellungen.

Die Vorteile dieser Methode:

  • Sie können Haltepunkte in dem COM-Objekt festgelegt und zu debuggen es mit einem kompletten Source Debugger
  • Sie glücklich in C und VB gleichzeitig debuggen können
  • Immer wenn VB6 ausgeführt wird, hat es immer die neueste Version der COM-DLLs
+1

Das ist sehr schlau, ich werde versuchen, das zu tun. Jetzt frage ich mich, wenn mein altes Cookie-basiertes Konto mit meinem neuen OpenID-basierten Konto zusammengefasst werden könnte, so kann ich diese Antwort als Antwort markiere ... –

+2

Dies auch mit anderen IDEs als VB arbeitet. Das habe ich erfolgreich mit Delphi/VB6 gemacht. –