Décharger un contrôle COM lorsque vous travaillez dans l'IDE VB6

Une partie de mon travail quotidien consiste à maintenir et étendre les applications VB6 héritées. Un moteur commun est écrit en C / C ++ et VB6 utilise ces fonctions afin d'améliorer les performances.

Quand il s'agit de la programmation asynchrone, une interface C ne suffit pas et nous comptons sur les contrôles COM pour déclencher des événements sur VB6.

Mon problème est que lorsque j'enregistre le contrôle dans VB6, VB charge ce contrôle en mémoire et ne le décharge pas jusqu'à ce que je quitte l'EDI VB6. Comme le contrôle est chargé tout le temps, je suis incapable de le recompiler dans VC6, car le fichier DLL est verrouillé.

Une solution que j'ai trouvée est de ne pas activer le contrôle dans VB mais utiliser le CreateObject() avec le nom complet de mon contrôle. Le problème est que je dois déclarer mon contrôle en tant qu'objet car VB6 ne sait rien de l'interface que j'utilise et je n'ai pas accès à IntelliSense, ce qui est pénible.

Toute idée comment je peux dire à VB6 de décharger les contrôles après avoir quitté l'application ou directement dans l'EDI?

0
ajouté édité
Vues: 2

3 Réponses

Pour la plupart, c'est le même jeu avec des graphismes mis à jour comme le dit l'autre réponse, mais il y a en fait quelques différences distinctes.

Le jeu original avait quelques effets anti-gravité sur quelques spots dans les niveaux qui n'étaient pas dans la version HD.


Il existe également des différences de secrets mineurs entre les deux jeux. J'ai écrit une FAQ secrète pour Serious Sam quand elle est sortie, et lors de la mise à jour pour Serious Sam HD, j'ai remarqué quelques changements que je vais énumérer ci-dessous:

  • Sur le niveau de Sand Canyon, les changements du moteur de jeu en ont fait beaucoup plus facile de courir jusqu'à deux des secrets qui nécessitaient autrefois saut difficile. Si bien que si vous ne connaissiez pas l'histoire du jeu, vous vous demandez probablement pourquoi ils comptaient comme "secret", car ils sont en vue simple.

  • Il y a un secret supplémentaire au niveau des dunes.

  • Au dernier niveau, The Great Pyramid, le jeu original n'avait pas de secrets La version HD a 3 secrets à ce niveau.

3
ajouté

From http://en.wikipedia.org/wiki/Serious_Sam#Serious_Sam_HD:_The_First_Encounter

Le jeu est un remake de Serious Sam:   La première rencontre avec amélioration   textures et modèles de caractères. Il   se vend pour 1200 points Microsoft ou   15 $ US (également 15 $ pour la version PC)   et prend en charge la coopérative en ligne à 16 joueurs   (4 joueurs dans la version XBLA). Ce   remake features Réalisations. [5] [6]   Deathmatch et serveur dédié   soutien ont été récemment ajoutés.

En fait, j'ai acheté les deux versions HD car je ne possédais pas les précédentes mais je les ai jouées chez des amis.

Kr,

2
ajouté
@Syne Il y a aussi le jumelage basé sur Steam (= amélioré).
ajouté l'auteur Jax, source
Donc, c'est vraiment juste de meilleures textures, sinon le gameplay et les niveaux sont les mêmes?
ajouté l'auteur Synetech, source
Huh; quel matchmaking? Je ne me souviens de rien appelé matchmaking dans les deux premiers jeux SS.
ajouté l'auteur Synetech, source

Je suis assez sûr qu'il n'y a pas de bon moyen de forcer VB6 à décharger le contrôle.

Voici ce que je fais ... au lieu d'exécuter côte à côte Visual C et Visual Basic, exécutez VB6 sous VC:

  1. Charger VC
  2. Ouvrez le projet contenant vos objets COM
  3. Modifier, modifier, etc.
  4. Dans VC, définissez Output Executable comme VB6.EXE avec les arguments de ligne de commande appropriés pour charger l'espace de travail VB6
  5. Maintenant, appuyez sur F5 pour lancer l'EDI VB6 et charger votre projet VB6
  6. Lorsque vous souhaitez modifier à nouveau le code COM, quittez VB6.EXE, apportez vos modifications et appuyez à nouveau sur F5. Tant que vous sauvegardez votre espace de travail, VB6 se souviendra des fenêtres que vous avez ouvertes et de tous les paramètres de votre projet.

Les avantages de cette méthode:

  • Vous pouvez définir des points d'arrêt dans l'objet COM et le déboguer à l'aide d'un débogueur source complet
  • Vous pouvez heureusement déboguer en C et VB en même temps
  • Chaque fois que VB6 est en cours d'exécution, il a toujours la dernière version des DLL COM
0
ajouté
C'est très intelligent, je vais essayer de le faire. Maintenant, je me demande si mon ancien compte à base de cookies pourrait être fusionné avec mon nouveau compte OpenId afin que je puisse marquer cette réponse comme LA réponse ...
ajouté l'auteur Vincent Robert, source
Cela fonctionne également avec d'autres IDE que VB. J'ai réussi avec Delphi / VB6.
ajouté l'auteur Daniel Rikowski, source