See site in english Voir le site en francais
Website skin:
home  download  forum  link  contact

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

Author Topic: [tutorial] Posez vos question sur les DLL C++  (Read 49240 times)

0 Members and 1 Guest are viewing this topic.

Offline no matter

  • Legend
  • ******
  • Posts: 2826
  • Karma: 1
Reply #100 - 16 July 2007, 01:48:45
Quote
Je n'ai ni le dossier ni le fichier spécifié dans le répertoire demandé par Microsoft
C'est bizarre chez moi, j'ai bien le répertoire 1033 avec le fichier default.js
et la ligne LinkTool.AdditionalDependencies = "kernel32.lib $(NoInherit)";
qui d'ailleurs était déjà corrigée (?)

J'ai visual studio C++ 2005 express ( 8.0.50727.42 )


------------

no matter.

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #101 - 16 July 2007, 01:54:02

Yes !!! Ca compile  !!! Merci pour le coup de main.
Je suis épaté que vous réussissiez à trouver des solutions comme celles là.

Mais le bitmap n'apparait pas :sad:
Erreur dans le code ?   Nan, j'rigole, je vais chercher. ;)
C'est plus intéressant de comprendre la prog que ces sal... :rant: de fichiers ...


Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15184
  • Karma: 207
  • Hein, quoi !?
    • FsPassengers
Reply #102 - 16 July 2007, 01:59:07
En fait cette modif concerne quand tu crée un nouveau projet avec le wizard, ca concerne
pas les projets deja crée, edite le dans le projet comme marqué plus haut (entrée)

Dan


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #103 - 16 July 2007, 02:06:26
Ce qui est bizarre, c'est que c'est le template du tuto.

Le MeshHeader.h tu sais d'ou il viens ;)
Les ajouts de fichiers .rc et resource.h ont été faits avec  resedit ( voir plus haut )
Mais c'est bizarre quand même ces fichiers vcproj.
Irridium.h c'est anciennement MaClasseAddon.h


Voici le résultat d'une compile réussie.

1>------ Début de la génération : Projet : Irridium, Configuration : Debug Win32 ------
1>Édition des liens en cours...
1>   Création de la bibliothèque .\Debug/ShuttlePB.lib et de l'objet .\Debug/ShuttlePB.exp
1>Incorporation du manifeste en cours...
1>Le journal de génération a été enregistré à l'emplacement "file://d:\10_ORBITER_DEV\orbitersdk\samples\MonAddon\Debug\BuildLog.htm"
1>Irridium - 0 erreur(s), 0 avertissement(s)
========== Génération : 1 a réussi, 0 a échoué, 0 mis à jour, 0 a été ignoré ==========

Alors que le projet a cette allure :doubt:
C'est comme si ça gardait des " traces " de fichiers copiés collés puis renommés.





Message modifié ( 16-07-2007 02:09 )

Pic

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #104 - 16 July 2007, 02:56:36
Petite question de prog ce coup ci ;)

Quand sur une variable hDLL que j'ai défini comme ça
HINSTANCE   hDLL;
l'obtiens ceci dans l'infobulle
HINSTANCE Irridium::hDLL

Est ce que je répond bien à ceci ? ( sur la doc de Martin )

Here, hDLL is a module instance handle passed to
the InitModule callback function of your module,

Ou bien suis je en train de faire un contresens ?


Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15184
  • Karma: 207
  • Hein, quoi !?
    • FsPassengers
Reply #105 - 16 July 2007, 03:28:50
HMODULE et les ressources GDI sont les seules variable globale que vous devez avoir dans une projet.
La tu la declaré dans ta classe.

pourquoi globale ?
HMODULE est le handle vers le module (la DLL) et les ressources GDI sont les bitmaps et fonts utilisée pour l'affichage
des panel 2d. Elle sont donc commune a toutes les instances, globale et contenue dans la structure "GDIParams" et
donc la variable "g_Param"

Dan


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #106 - 16 July 2007, 11:36:45
Je viens de tilter sur un truc à cause d'un petit échange avec NoMatter hier soir au
sujet des LIBs de la Platform SDK.
Dans le tuto, tu indiques de donner le chemin vers \Platform SDK\Lib\IA64 pour les
fichiers bibliothèques des Répertoires de VC++
J'ai trifouillé dans ces dossiers pour constater que dans ce dossier Lib, il y a deux sous
dossiers un AMD64 et un IA64 qui contiennent chacun trois fichiers aux mêmes noms
mais pas forcément au même contenu d'après NoMatter, ce que je crois les yeux fermés.

Or, je bosse sur un AMD64 :siffle:
Ce serait peut être mieux que j'indique AMD64 sur ce chemin non ?

En tout cas, je n'arrive toujours pas à compiler le Deltaglider malgré les modifs apportées
aux propriétés des projets  Deltaglider et DGConfigurator.
A ce sujet d'ailleurs, je ne sais pas comment compiler des morceaux dans un grand projet.
Sur SW, le projet Bullet est composé de plein de vaisseaux, de deux ou trois bullets et d'un
turret. Quand je efseptise le truc, c'est l'ensemble qui se met en compile. Korben, qui a la version
chère de C++ n'a aucuns problèmes de compile. Ici, rien à faire :sad:


1>------ Début de la génération : Projet : DGConfigurator, Configuration : Debug Win32 ------
2>------ Début de la génération : Projet : DeltaGlider, Configuration : Debug Win32 ------
2>DeltaGlider : warning PRJ0009 : Le journal de génération n'a pas pu être ouvert en écriture.
2>Assurez-vous que le fichier n'est pas ouvert par un autre processus et qu'il n'est pas protégé en écriture.
1>Édition des liens en cours...
2>Compilation des ressources en cours...
2>.\DeltaGlider.rc(92) : error RC2104 : undefined keyword or key name: IDC_GEAR_UP
1>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) déjà défini(e) dans LIBCMTD.lib(typinfo.obj)
1>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) déjà défini(e) dans LIBCMTD.lib(typinfo.obj)
1>   Création de la bibliothèque .\..\..\..\Modules\Startup/DGConfigurator.lib et de l'objet .\..\..\..\Modules\Startup/DGConfigurator.exp
1>LINK : warning LNK4098: conflit entre la bibliothèque par défaut 'MSVCRT' et les autres bibliothèques ; utilisez /NODEFAULTLIB:library
1>.\..\..\..\Modules\Startup/DGConfigurator.dll : fatal error LNK1169: un ou plusieurs symboles définis à différentes reprises ont été rencontrés
2>Le journal de génération a été enregistré à l'emplacement "file://d:\10_ORBITER_DEV\orbitersdk\samples\DeltaGlider\Debug\BuildLog.htm"
2>DeltaGlider - 1 erreur(s), 1 avertissement(s)
1>Le journal de génération a été enregistré à l'emplacement "file://d:\10_ORBITER_DEV\orbitersdk\samples\DeltaGlider\Debug\BuildLog.htm"
1>DGConfigurator - 3 erreur(s), 1 avertissement(s)
========== Génération : 0 a réussi, 2 a échoué, 0 mis à jour, 0 a été ignoré ==========




Message modifié ( 16-07-2007 12:15 )

Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15184
  • Karma: 207
  • Hein, quoi !?
    • FsPassengers
Reply #107 - 16 July 2007, 13:33:20
Quote
picto a écrit:
Or, je bosse sur un AMD64 :siffle:
Ce serait peut être mieux que j'indique AMD64 sur ce chemin non ?

Non à moins que tu fournisse une version spécifique pour AMD.


Quote
picto a écrit:
A ce sujet d'ailleurs, je ne sais pas comment compiler des morceaux dans un grand projet.
Sur SW, le projet Bullet est composé de plein de vaisseaux, de deux ou trois bullets et d'un
turret. Quand je efseptise le truc, c'est l'ensemble qui se met en compile. Korben, qui a la version
chère de C++ n'a aucuns problèmes de compile. Ici, rien à faire :sad:

Pour choisir le projet "actif" clique droit à gauche sur l'icone du sous-projet "definir comme projet de demarrage"
après "CTLR-F7" pour generer uniquement le projet en gras. A noter que les traduction hem, en anglais "set as
active" est plus parlant.

Attention quand tu veux modifier les proprieter et que tu a plusieur projet dans la solution il vaut mieux clique droit
sur l'icone du projet et "proprieté" le menu en haut ne le fait que pour le projet en gras (active) (en francais "projet
de demarrage" !!??

Quote
picto a écrit:
2>.\DeltaGlider.rc(92) : error RC2104 : undefined keyword or key name: IDC_GEAR_UP

il doit manquer un truc dans le ressource.h (IDC_GEAR_UP) qui est declaré dans le rc.
Si tu a trop tripoté retelecharge la SDK et install un "deltaglider" frais pour repartir de zéro.

Quote
picto a écrit:
1>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const
&)" (??0type_info@@AAE@ABV0@@Z) déjà défini(e) dans LIBCMTD.lib(typinfo.obj)

exclu MSVCRT.lib (attention au setting de projet)

A++

Dan


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #108 - 16 July 2007, 13:46:44
Thanks,

Pour la lib, j'avais déjà exclu .... y'a des trucs qui rentrent quand même ;)
Pour le truc du projet en gras, j'avais remarqué cette possibilité de changer les propriétés uniquement pour celui en
gras. J'ai d'ailleurs lu des trucs sur Internet, ou l'on parle de compile en release avec des fichiers de debug et vice
versa  .... Me demande si j'en suis pas là sur certains projets à force d'avoir tout tripoté ... :sick:
Mais je n'ai pas eu l'idée de lancer une compile de cette manière.

Pour le tout "frais", j'y pensais, mais aussi en ce qui concerne MSVC++
Et pouf, reprendre tout le tuto pas à pas pour faire une jolie install toute propre avec Resedit en prime.
Ne serait  le risque de ne pas pouvoir réinscrire MSVC en ligne chez Microsoft, je crois que je le ferais :siffle:



Message modifié ( 16-07-2007 13:47 )

Pic

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #109 - 16 July 2007, 14:52:25
:put: J'en ai marre, c'est la galère.

Après avoir édité tous les liens pour le ShuttleA, la compile réussi bien
en debug, mais pas en release ( 19 erreurs ) pourtant, tout est identique
sur les deux modes question librairies et liens.

Donc je copie colle la DLL du fichier debug dans Modules ensuite.
mais quand je lance Orbiter sur un scenar du Shuttlea, plus rien :wall:
Pas de CTD avec Orbiter mais plus rien, le vaisseau n'apparait plus, ni
en vue externe ni en vue interne.

Comme si la DLL était complétement vide... :wall:
Ca donne envie d'abandonner :sad:



Message modifié ( 16-07-2007 15:00 )

Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15184
  • Karma: 207
  • Hein, quoi !?
    • FsPassengers
Reply #110 - 16 July 2007, 15:00:22
Et le Orbiter.log il dis quoi ? t'a juste modifié pour que ca compile ou t'a tripoté du code ?

Regenere la solution completement... de fois quand on tripote t'a des obj avec des setting différents...

poste le log des 19 erreurs

Dan



Message modifié ( 16-07-2007 15:02 )


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #111 - 16 July 2007, 15:04:06
Juste une modif pour compile sans tripoter du code et sur un dsw tout frais traduit en vcproj.

Bah :wonder:
C'est quoi ce log ?
C'est la première fois que je vois ça !

**** Orbiter.log
Build Sep 29 2006 [v.060929]
Found 0 joystick(s)
Module AtlantisConfig.dll [API v.060425]
Module DGConfig.dll [API v.060425]
Module OrbiterSound.dll [API v.060425]
Module TrackIR.dll [API v.060425]
TrackIR module not found.
Module ScnEditor.dll [API v.060425]
Module Rcontrol.dll [API v.050206]
Module Meshdebug.dll [API v.060425]
Module Framerate.dll [API v.050206]
Module FlightData.dll [API v.050206]
Module ExtMFD.dll [API v.060425]
Module CustomMFD.dll [API v.060425]
Module Telescope.dll [API v.060425]

Et le log de compile

1>------ Début de la génération : Projet : ShuttleA, Configuration : Release Win32 ------
1>Édition des liens en cours...
1>   Création de la bibliothèque .\..\..\..\Modules/ShuttleA.lib et de l'objet .\..\..\..\Modules/ShuttleA.exp
1>ShuttleA.obj : error LNK2001: symbole externe non résolu "const type_info::`vftable'" (??_7type_info@@6B@)
1>ShuttleA.obj : error LNK2019: symbole externe non résolu "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) référencé dans la fonction "public: virtual void * __thiscall LaunchpadItem::`scalar deleting destructor'(unsigned int)" (??_GLaunchpadItem@@UAEPAXI@Z)
1>ShuttleA.obj : error LNK2019: symbole externe non résolu "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) référencé dans la fonction "public: virtual void * __thiscall LaunchpadItem::`vector deleting destructor'(unsigned int)" (??_ELaunchpadItem@@UAEPAXI@Z)
1>ShuttleA.obj : error LNK2019: symbole externe non résolu "void __stdcall `eh vector destructor iterator'(void *,unsigned int,int,void (__thiscall*)(void *))" (??_M@YGXPAXIHP6EX0@Z@Z) référencé dans la fonction "public: virtual void * __thiscall LaunchpadItem::`vector deleting destructor'(unsigned int)" (??_ELaunchpadItem@@UAEPAXI@Z)
1>ShuttleA.obj : error LNK2001: symbole externe non résolu __fltused
1>ShuttleA.obj : error LNK2001: symbole externe non résolu __purecall
1>ShuttleA.obj : error LNK2019: symbole externe non résolu __imp__sprintf référencé dans la fonction "public: bool __thiscall ShuttleA::RedrawPanel_EngineIndicator(void *)" (?RedrawPanel_EngineIndicator@ShuttleA@@QAE_NPAX@Z)
1>ShuttleA.obj : error LNK2019: symbole externe non résolu ___security_cookie référencé dans la fonction "public: bool __thiscall ShuttleA::RedrawPanel_EngineIndicator(void *)" (?RedrawPanel_EngineIndicator@ShuttleA@@QAE_NPAX@Z)
1>ShuttleA.obj : error LNK2019: symbole externe non résolu @__security_check_cookie@4 référencé dans la fonction "public: bool __thiscall ShuttleA::RedrawPanel_EngineIndicator(void *)" (?RedrawPanel_EngineIndicator@ShuttleA@@QAE_NPAX@Z)
1>ShuttleA.obj : error LNK2019: symbole externe non résolu __CIcos référencé dans la fonction "public: bool __thiscall ShuttleA::RedrawPanel_EngineIndicator(void *)" (?RedrawPanel_EngineIndicator@ShuttleA@@QAE_NPAX@Z)
1>ShuttleA.obj : error LNK2019: symbole externe non résolu __ftol2_sse référencé dans la fonction "public: bool __thiscall ShuttleA::RedrawPanel_EngineIndicator(void *)" (?RedrawPanel_EngineIndicator@ShuttleA@@QAE_NPAX@Z)
1>ShuttleA.obj : error LNK2019: symbole externe non résolu __CIsin référencé dans la fonction "public: bool __thiscall ShuttleA::RedrawPanel_EngineIndicator(void *)" (?RedrawPanel_EngineIndicator@ShuttleA@@QAE_NPAX@Z)
1>ShuttleA.obj : error LNK2019: symbole externe non résolu __imp__sscanf référencé dans la fonction "public: virtual void __thiscall ShuttleA::clbkLoadStateEx(void *,void *)" (?clbkLoadStateEx@ShuttleA@@UAEXPAX0@Z)
1>ShuttleA.obj : error LNK2019: symbole externe non résolu __imp__strnicmp référencé dans la fonction "public: virtual void __thiscall ShuttleA::clbkLoadStateEx(void *,void *)" (?clbkLoadStateEx@ShuttleA@@UAEXPAX0@Z)
1>OLDNAMES.lib(strnicmp.obi) : error LNK2001: symbole externe non résolu __imp__strnicmp
1>ShuttleA.obj : error LNK2019: symbole externe non résolu "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) référencé dans la fonction _ovcInit
1>LINK : error LNK2001: symbole externe non résolu __DllMainCRTStartup@12
1>OLDNAMES.lib(strnicmp.obi) : error LNK2001: symbole externe non résolu __imp___strnicmp
1>.\..\..\..\Modules/ShuttleA.dll : fatal error LNK1120: 17 externes non résolus
1>Le journal de génération a été enregistré à l'emplacement "file://d:\10_ORBITER_DEV\orbitersdk\samples\ShuttleA\Release\BuildLog.htm"
1>ShuttleA - 19 erreur(s), 0 avertissement(s)
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========



Message modifié ( 16-07-2007 15:05 )

Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15184
  • Karma: 207
  • Hein, quoi !?
    • FsPassengers
Reply #112 - 16 July 2007, 15:12:18
manque des libs la ? regarde le "command line" si tu a que "kernel"...
autre chose enleve le "exclude lib" pour release c'est possible que ce soit pas msvcrt.lib a exclure
mais une autre.

Gaffe toi de bien modifier les setting du bon projet...

TRUC: si c'est "symbole incconu" c'est dans les declarations il doit manquer un header mais si c'est symbole non résolu" c'est dans la compilation des liens donc il manque des libs.

Dan



Message modifié ( 16-07-2007 15:13 )


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #113 - 16 July 2007, 15:15:10
Merci pour le TRUC .... parce que sur Google, j'en suis là, entre autres ;)
Et ça commence à devenir un peu indigeste



Vi, faut se calmer et reprendre chaque chose pas à pas je crois.
Il me reste plus qu'une souris ;)



Message modifié ( 16-07-2007 15:19 )

Pic

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #114 - 16 July 2007, 15:30:31

Bon, j'ai obtenu une compile du ShuttleA et qui fonctionne sur Orbiter.
Le seul hic, mais peut être faut'il s'en contenter ce sont quelques avertissements.
En fait, c'est l'exclusion de msvcrt.lib en release qui foutait la zone .... bien vu Dan ! :applause:

Le log de compile avec les avertissements.
Je vais chercher sur Google, ça n'a pas l'air si difficile que ça à résoudre.


1>------ Début de la génération : Projet : ShuttleA, Configuration : Release Win32 ------
1>Compilation en cours...
1>ShuttleA.cpp
1>.\ShuttleA.cpp(622) : warning C4996: 'strnicmp' a été déclaré désapprouvé
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\string.h(215) : voir la déclaration de 'strnicmp'
1>        Message : 'The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name:
_strnicmp. See online help for details.'
1>.\ShuttleA.cpp(624) : warning C4996: 'strnicmp' a été déclaré désapprouvé
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\string.h(215) : voir la déclaration de 'strnicmp'
1>        Message : 'The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name:
_strnicmp. See online help for details.'
1>.\ShuttleA.cpp(626) : warning C4996: 'strnicmp' a été déclaré désapprouvé
1>        C:\Program Files\Microsoft Visual Studio 8\VC\include\string.h(215) : voir la déclaration de 'strnicmp'
1>        Message : 'The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name:
_strnicmp. See online help for details.'
1>Édition des liens en cours...
1>   Création de la bibliothèque .\..\..\..\Modules/ShuttleA.lib et de l'objet .\..\..\..\Modules/ShuttleA.exp
1>Incorporation du manifeste en cours...
1>Le journal de génération a été enregistré à
l'emplacement "file://d:\10_ORBITER_DEV\orbitersdk\samples\ShuttleA\Release\BuildLog.htm"
1>ShuttleA - 0 erreur(s), 3 avertissement(s)
========== Génération : 1 a réussi, 0 a échoué, 0 mis à jour, 0 a été ignoré ==========


Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15184
  • Karma: 207
  • Hein, quoi !?
    • FsPassengers
Reply #115 - 16 July 2007, 15:39:10
C'est des fonctions qui ont évoluée et sont déclarée "deprecated" ("dépassée", saloperie de
traduction... "désapprouvé" !??)

ils recommande d'utilier les nouvelle fonctions par exemple "_strnicmp" au lieu de "strnicmp"

Comme c'est des fichiers C++ qui sont pas "a toi" "C:\Program Files\Microsoft Visual Studio 8\VC\include\string.h"
je te deconseille de faire la modif. Il vaut mieux utiliser des header plus récents

Pour cela essaie dans les setting de passer la declaration du chemin vers la "...SDK R2/include" avant celle
de "Visual Studio 8\VC\include" normalement il doit trouver le string.h d'abord de la PSDK plutot que des fichier VC.

Si ca merde a la link fait la meme chose pour les chemin de libs

Dan


Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15184
  • Karma: 207
  • Hein, quoi !?
    • FsPassengers
Reply #116 - 16 July 2007, 15:40:54
TRUC:

Quand tu google donne pas seulement l'erreur LNK2019 mais aussi un bout du texte ou l'objet qui merde exemple:
"LNK2019 operator delete" pasque un numéro d'erreur peut ce referer a pleins de trucs différents...

Dan


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #117 - 16 July 2007, 16:08:35

Oki doki pour le second truc.

Bon, rien à faire pour ces avertissements.
J'ai modifié l'ordre des paths pour les include et libs sauf pour le IA64 ;)
Mais ce n'est pas très grave. Ca compile.

Ca peut vraiment servir d'exemple maintenant.
Je verrais ça plus tard. J'ai envie de voir ce que ça donne quand même.


Pic

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #118 - 16 July 2007, 17:20:08
YES !!! THANK YOU MASTER DANSTOOPH !!! :wor:

En fait, question code, c'était bon mon affaire.
Il n'y a qu'un truc qui ne me plait pas c'est que le load panel doit se faire dans rien.cpp
parce que la globale g_param s'y trouve. Ca fait pas propre.

C'est y pas du design boulversifiant ça madame ? :ptdr:

Etape suivante, Horizon.cpp .... nan j'rigole, animer MonBouton et le faire correspondre à une anim
et à un son ;) Par contre, je crois que c'est plus avancé qu'il n'y parait. En tout cas ça me redonne
confiance pour le VC, car le principe est exactement le même sauf que là, les LIBs sont à jour, le GDI est bien pris en compte .... etc .... etc .... Ce que je n'avais pas quand j'ai essayé d'intégrer Horizon.cpp au VC.

Là, j'y crois beaucoup plus !





Message modifié ( 16-07-2007 17:45 )

Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15184
  • Karma: 207
  • Hein, quoi !?
    • FsPassengers
Reply #119 - 16 July 2007, 19:03:25
Quote
picto a écrit:
YES !!! THANK YOU MASTER DANSTOOPH !!! :wor:

En fait, question code, c'était bon mon affaire.
Il n'y a qu'un truc qui ne me plait pas c'est que le load panel doit se faire dans rien.cpp
parce que la globale g_param s'y trouve. Ca fait pas propre.

Encore raté...

Dans monaddon.h en dehors de la classe tu met ca:

Code: [Select]
typedef struct {
HINSTANCE hDLL;
HFONT hFont[1];
HPEN hPen[2];
HBRUSH hBrush[1];
} GDIParams;
GDIParams g_Param;

Et dans cequetuveux.cpp ou "rien.cpp" au début en dehors de toute fonction tu met ca:

Code: [Select]
extern GDIParams g_Param={0};
Après g_param est accessible de partout, je te conseil d'ailleurs de mettre tout ce qui ce rapporte au panel
dans un "panel.cpp" que tu va créer. Donc les trois clbk panel la creation de surface et le release de surface.


Explication: dans le h c'est la declaration que tous verrons, l'objet lui existe veritablement dans "rien.cpp"
ou cequetuveux.cpp le mote clé extern explique au compilateur que la declaration est comme la vérité (ailleurs)

A++

Dan



Message modifié ( 16-07-2007 19:04 )


Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #120 - 16 July 2007, 19:33:18
La structure était dans le header de classe juste après les constantes et juste avant la classe.

Ce sont les fonctions panel qui m'embêtaient parce qu'elles ne voyaient
pas GDIParams g_Param={0}; sans être juste en dessous.

Tout ça pour cet extern.
J'ai comme l'impression que se pourrait être utile de regarder un lexique de C++ :badsmile:
Ceci dit, je ne crois pas avoir vu extern dans aucun des exemples de la SDK.

C'est plus difficile quand même de démarrer sur ton template parce qu'aucun projet de la SDK
n'est construit comme ça. Je comprend bien l'utilité d'un tel classement pour étoffer un projet
petit à petit, mais pour débuter .... faut s'accrocher.



Message modifié ( 16-07-2007 19:36 )

Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15184
  • Karma: 207
  • Hein, quoi !?
    • FsPassengers
Reply #121 - 16 July 2007, 20:16:29
Je n'adhere pas cette critique (a moins que tout le monde trouve plus difficile)

Dans un listing continu c'est en vrac, pas franchement classé  et tu dois utiliser
la recherche a donf CTLR-F...

La c'est bien séparé et classé... à mon avis si tu arrive pas a suivre le classé
tu aurais de la peine aussi avec le "vrac"

Dan


Offline siriusfett

  • Legend
  • ******
  • Posts: 967
  • Country: France fr
  • Karma: 5
Reply #122 - 16 July 2007, 20:24:02
J'envisage de me servir de ton template pour mon nouveau module mais c'est vrai que ça impose un peu plus de gymnastique
cérébrale  :) j'en comprend l'utilité pour les gros projets mais pour les miens j'ai un doute :badsmile:



Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #123 - 16 July 2007, 20:30:23
Quote
à mon avis si tu arrive pas a suivre le classé tu aurais de la peine aussi avec le "vrac"

C'est pas de suivre le classé qui est difficile.
C'est de classer le vrac des autres exemples.
Après, sûr que c'est beaucoup plus simple.

Là, je viens de faire Panel.cpp et remis Rien.cpp
comme il se présentait au départ sur le template.
C'est vraiment plus agréable de suivre une variable
ou une fonction sans les interférences d'autres trucs.


Pic

Offline DanSteph

  • Administrator
  • Legend
  • *****
  • Posts: 15184
  • Karma: 207
  • Hein, quoi !?
    • FsPassengers
Reply #124 - 16 July 2007, 20:54:10
Quote
siriusfett a écrit:
cérébrale  :) j'en comprend l'utilité pour les gros projets mais pour les miens j'ai un doute :badsmile:

Si tu te penche a fond dedans (et pas seulement une lecture en survol) ce n'est vraiment pas plus difficile
au contraire... Franchement les gars, y a 5 fonctions et deux variables 1/2... ;)

Par contre quand tu voudra continuer avec un seul listing la tu va ramer a cause de mauvaises habitudes
qui mênent à une impasse. A partir d'une certaine taille ca devient illisible et il devient très dur, voir impossible
de continuer le projet. (et la taille augmente *très* vite, en un jour tu peux facile rajouter 500 lignes)

Comme personne n'aime recommencer en général ca fini à la poubelle.

A++

Dan



Message modifié ( 16-07-2007 20:59 )