Accueil > Forum > > > > Nettoyer une classe sans la detruire !!
Nettoyer une classe sans la detruire !!
mercredi 30 juin 2004 à 18:18:21 |
Nettoyer une classe sans la detruire !!

SnOOpss
|
Bonjour tout le monde et désolé de mettre un sujet si vague mais je voit pas coment expliquer. Voila je me sert de la librairie winimage pour afficher des gifs. C dans une dll ki se charge en memoire et ki y reste dés le premier appel par l'executable ( c Mirc ) class C_ImageSet {
[....] void kill(); // detruit
// constructor and destructor: C_ImageSet() {img=0; nImages=0; nLoops=0;} ~C_ImageSet() {for (int n=0;n<nImages;n++) delete img[n]; delete[] img;} }
|
void C_ImageSet::kill() { for (int n=0;n<nImages;n++) delete img[n]; delete[] img; }
|
( la partie kill est de moi pour tester ) En fait au demarrage de ma dll j'ai en tete pas dans la fonction C_AnimationWindow gif[0xFFFF]; C_ImageSet imgset[0xFFFF];; puis dans la fonction //recherche une place libre pour le gif int hgif = 0; while ( (gif[hgif].m_hWnd != NULL ) && ( ::IsWindow(gif[hgif].m_hWnd) ) ) hgif++; if (hgif >= 0xFFFF) { wsprintf(data,"FULL"); return 3; }
imgset[hgif].kill();
|
Le probleme c que ma ligne imgset[hgif].kill(); ne marche qu'une fois ( alor kil n ya rien a effacer ) et plante completement au second coup ) Je ne peux pas utliser delete imgset[] car la dll pe afficher une autre gif pendant que j'ai besoin d'en nettoyer une. Autre probleme : kan jafiche une gif je voit la gif que g chargé mais précédé de la precedente chargé. Il me faut a tout prix vider la classe !! g essayé imgset[hgif] = NULL; refusé par le compilateur !!!
|
|
jeudi 1 juillet 2004 à 12:04:11 |
Re : Nettoyer une classe sans la detruire !!

vecchio56
|
Tu es sur que ce ne serait pas une meilleure solution d'utiliser des listes chainées plutot qu'un tableau pour imgset. Pour ton problème, il manque quelques informations (qu'est ce que C_ImageSet::img?), mais de toute manière difficile de trouver le problème avec des information fragmentaires comme tu donnes. Tu devrais pouvoir trouver le problème en debuggant pas à pas.
|
|
jeudi 1 juillet 2004 à 19:07:31 |
Re : Nettoyer une classe sans la detruire !!

SnOOpss
|
Ben en fait g po mit trop de details a cause de la longueur du code class C_ImageSet { public: int FrameWidth, FrameHeight; // Dimensions of ImageSet in pixels. int nLoops; // Number of Loops (0 = infinite)
C_Image ** img; // Images' Vector. int nImages; // Number of images (vector size)
void AddImage (C_Image*); // Append new image to vector (push_back) void kill(); // detruit
// constructor and destructor: C_ImageSet() {img=0; nImages=0; nLoops=0;} ~C_ImageSet() {for (int n=0;n<nImages;n++) delete img[n]; delete[] img;}
// File Formats: int LoadGIF (char* szFile); int SaveGIF (char* szFile) {return 0;}; // NOT IMPLEMENTED };
#define DEFAULT_CLASSNAME "AnimationWindow"
class C_AnimationWindow { protected: HANDLE hThreadAnim; // Thread Handle DWORD dwThreadIdAnim; // Thread Identifier public: HWND m_hWnd; // Window Handle C_ImageSet * pAnimation; // Pointer to Animation Raster Information int CurrentImage; // Current Image being displayed int CurrentLoop; // Current Loop in animation BOOL bAnimationPlaying; // TRUE when animation is playing.
// CLASS FUNCTIONS: (not object functions!) static LRESULT CALLBACK WndProc (HWND hwnd,UINT iMsg,WPARAM wParam,LPARAM lParam); static DWORD WINAPI fnThread (LPVOID lpParameter);
// Animation control: void Play(); // Starts/Resumes animation void Stop(); // Stops(Pauses) animation (without rewinding) void Rewind(); // Rewinds animation (without stopping)
// Paints current image of animation: void Paint (HDC hdc);
// WIN32 WRAPPING FUNCTIONS: // Create a new Window (initially hidden, call Display to display): HWND Create (HWND hwndParent, HMENU id, C_ImageSet * imageset, DWORD dwStyle=WS_CHILD, char* szClassName=DEFAULT_CLASSNAME); // Display Window at specified location (x&y= upper-left corner) BOOL Display (int x, int y);
// You may redefine the following windows' message processing function // in a derived class to implement a different behavior: virtual LRESULT Message (UINT iMsg,WPARAM wParam, LPARAM lParam); };
|
Par contre dsl d'etre lourd mais si tu connaissait un site qui expliquerait comment debogger une dll (VC++ ou borland ) ca m'aiderait sinon la je vais voir ce que sont les listes chainées !!
|
|
samedi 3 juillet 2004 à 10:56:49 |
Re : Nettoyer une classe sans la detruire !!

SnOOpss
|
Ca yé g fait avec les liste chainées mais maintenant g un probleme de linkage !! dans la source principale.cpp
struct Element {
C_AnimationWindow gif; C_ImageSet imgset;
Element* suivant;
};
void Ajouter(char *fichier,int x,int y,HWND hwnd) {
Element* element= new Element; element->imgset.LoadGIF(fichier); element->gif.Create(hwnd,NULL,&element->imgset); element->gif.Display(x,y);
element->suivant = liste; liste = element; }
void Netoyemem(HWND m_hWnd) {
Element* element = liste; while(element != NULL && element->gif.m_hWnd != m_hWnd)
element = element->suivant;
if (element != NULL) Supprimer(element);
}
|
et dans gif.cpp
void Netoyemem(HWND);
LRESULT C_AnimationWindow::Message (UINT iMsg,WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; switch (iMsg) {
[....]
case WM_DESTROY: Stop(); Netoyemem(m_hWnd); return 0; } return DefWindowProc (m_hWnd,iMsg,wParam,lParam); }
|
Et j'ai le message d'erreur error LNK2001: unresolved external symbol "void __cdecl Netoyemem(struct HWND__ *)" (?Netoyemem@@YAXPAUHWND__@@@Z) Release/NemeSiS.dll : fatal error LNK1120: 1 unresolved externals Qu est ce ke j'ai pu oublier ????
|
|
samedi 3 juillet 2004 à 11:48:31 |
Re : Nettoyer une classe sans la detruire !!
|
samedi 3 juillet 2004 à 12:05:43 |
Re : Nettoyer une classe sans la detruire !!

SnOOpss
|
Oui oui j'en suis sur , j'ai ca en fait !!
Compiling... principale.cpp gif.cpp Linking... Creating library Release/NemeSiS.lib and object Release/NemeSiS.exp NemeSiS.exp : warning LNK4070: /OUT:tmp.dll directive in .EXP differs from output filename "Release/NemeSiS.dll"; ignoring directive gif.obj : error LNK2001: unresolved external symbol "void __cdecl Netoyemem(struct HWND__ *)" (?Netoyemem@@YAXPAUHWND__@@@Z) Release/NemeSiS.dll : fatal error LNK1120: 1 unresolved externals Error executing link.exe.
NemeSiS.dll - 2 error(s), 1 warning(s)
|
|
dimanche 4 juillet 2004 à 19:31:52 |
Re : Nettoyer une classe sans la detruire !!

SnOOpss
|
G laissé tomber je n utlise plus kune seula variable mais g toujour le meme probleme comen la detruire et la refaire C_AnimationWindow gif; C_ImageSet imgset;
int __stdcall AffGif(HWND mWnd,HWND,char *data,char*,BOOL,BOOL) {
//reset de gif et imgset delete gif delete imgset;
//initialisation de gif et imgset
//fonction }
|
me donne un message d'erreur mais de toute facon ce ne serait pas bon vu ke juste apres les delete il me fo recreer les variables pour un deuxieme appel par exemple !!
|
|
Cette discussion est classée dans : kill, classe, nettoyer, imgset, imageset
Répondre à ce message
Sujets en rapport avec ce message
ouverture de base Access [ par denis ]
salut!voila mon probleme :j'ai cree une dll dans laquelle il y a une ouverture de base access au moyen d'une classe qui dérive de la classe CRecordset
VCplusplus 6 [ par emaskaoui ]
Comment je peux acceder au membre données d'une la classe à partir d'une autre classe? Merci
dll pour asp avec connection odbc [ par denis ]
salut!voila mon probleme :j'ai cree une dll dans laquelle il y a une ouverture de base access au moyen d'une classe qui dérive de la classe CRecordset
Base de donées ADO [ par header ]
Apres avoir importe la dll et tout ce qui faut pour qu'une classe générique de CADORecordBinding soit crée j'ai un problème : lorsque je commence mes
AIDEZ MOI : LE DOWNLOAD AVEC la classe CHTMLVIEW [ par header ]
il me faudrait un topo sur la classe CHtmlViewje ne sais pas comment faire une pause dans un telechargement...................AIDEZ MOI
builder c++ 5 compile pas chez moi [ par ferrari ]
voila j'ai un projet sous builder qui compilej'ai rajouter une classe perso mais lorsque je compile et que j'appelle une methode de ma classe, il me d
Récupérer le Handle de l'appli [ par Stoomm ]
Bonjour,Explication :J'ai une classe D3Dapp qui crée la fenetre.Dans une autre classe (qui va servir a D3Dapp), j'aimerais récupérer le handle de la f
Visual c++ [ par Maxus ]
Salut,j'ai un probleme sous visual c++ lorque j'execute une fonction d'une classe à partir d'une autre...Explication : dans une fenetre, j'ai une list
INSTANCIER UNE CLASSE D'UNE DLL [ par KL ]
Bonjour,J'ai un enorme problème !J'ai créé une DLL avec des classes dedansMaintenant je veux pouvoir importer ces classes dans un prog Win32 et pouvoi
HELP ME C'est quoi une classe ? [ par Oceane ]
salut,j'aurais besoin d'un petit coup de main. Je viens de commencer C++ et oui y un dédut à tout Je m'explique, j'ai un projet à faire pour mon exame
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|