Vra

Deel van my alledaagse werk is die instandhouding en uitbreiding van erfenis-VB6-toepassings.'n Algemene enjin word in C/C++ geskryf en VB6 gebruik hierdie funksies om werkverrigting te verbeter.

Wat asinchroniese programmering betref, is 'n C-koppelvlak nie genoeg nie en ons maak staat op COM-kontroles om gebeure na VB6 af te stuur.

My probleem is dat wanneer ek die beheer in VB6 registreer, VB hierdie beheer in die geheue laai en dit nie aflaai totdat ek die VB6 IDE verlaat nie.Aangesien die kontrole heeltyd gelaai word, kan ek dit nie in VC6 hersaamstel nie, want die DLL-lêer is gesluit.

'n Oplossing wat ek gevind het, is nie om die beheer in VB te aktiveer nie, maar gebruik die CreateObject() met die volle naam van my beheer.Die probleem is dan dat ek my beheer as 'n Object moet verklaar, want VB6 weet niks van die koppelvlak wat ek gebruik nie en ek het nie toegang tot IntelliSense nie, wat 'n pyn is.

Enige idee hoe ek vir VB6 kan sê om kontroles af te laai nadat ek die toepassing verlaat het of direk in die IDE?

Was dit nuttig?

Oplossing

Ek is redelik seker daar is geen goeie manier om VB6 te dwing om die beheer af te laai nie.

Hier is wat ek doen...in plaas daarvan om Visual C en Visual Basic langs mekaar te laat loop, hardloop VB6 onder VC:

  1. Laai VC op
  2. Maak die projek oop wat jou COM-voorwerpe bevat
  3. Redigeer, verander, ens.
  4. In VC, stel die Uitvoeruitvoerbare om VB6.EXE te wees met toepaslike opdragreëlargumente om die VB6-werkspasie te laai
  5. Druk nou net F5 om die VB6 IDE te begin en jou VB6-projek te laai
  6. Wanneer jy die COM-kode weer wil verander, verlaat VB6.EXE, maak jou veranderinge en druk F5 weer.Solank jy jou werkspasie stoor, sal VB6 onthou watter vensters jy oop gehad het en al jou projekinstellings.

Voordele van hierdie metode:

  • Jy kan breekpunte in die COM-voorwerp stel en dit ontfout met 'n volledige bronontfouter
  • Jy kan gelukkig terselfdertyd in C en VB ontfout
  • Wanneer VB6 ook al loop, het dit altyd die nuutste weergawe van die COM DLL's
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top