Accueil > Forum > > > > Plantage graphique le retour (qui n'est jamais parti d'ailleurs)
Plantage graphique le retour (qui n'est jamais parti d'ailleurs)
mardi 2 novembre 2004 à 16:14:29 |
Plantage graphique le retour (qui n'est jamais parti d'ailleurs)

Mastersam
|
Je relance un nouveau sujet car mon problème n'est toujours pas réglé après 3 semaines, il ne doit pas être bien méchant pour les expérimentés mais pour moi c'est le calvaire et je suis en train de me démotiver. Mon projet contient une fenêtre principale et plusieurs fenêtres supplémentaires s'ouvrent lors de la sélection d'onglet dans le menu. Si j'ouvre la fenêtre de détection du son, je lance la synchro, au bout de 2 minutes environ j'ai le droit à un plantage graphique, mes barres de titres de toutes les fenêtres me font n'importe quoi et les fenêtres elles-même ne se redessinent plus correctement. Maintenant avec la fenêtre avec tous les potentiomètres après un certain nombre de manipulation des curseurs j'ai le même problème. L'erreur survient au bout d'un certain nombre d'opération, elle n'est pas liée à une durée, si je ne fait rien avec les boutons ça ne plante pas, et pour le son si j'accélère le défilement du graphe et bien ça plante d'autant plus vite. j'ai tout essayé, DeleteDC releaseDC , mettre mes variable hors de la fonction pour les creer qu'une fois, mettre mes fonctions au début pour ne pas les redéclarer mettre des return 0 à la place des break. Rien à faire ça plante toujours. j'ai essayé aussi les options d'optimisation dans devcpp, compatibilité du code, thème xp, toujours pareil, ça plante. J'ai pensé à quelque chose, Mon projet est un projet avec une fenêtre mère et des fenêtre suplémentaire, donc une sorte d'environnement multifenêtre. Est-ce qui y aurait quelquechose à configurer ou a changer, du style passer en MDI ou changer le type de fenêtre ? Je comprends plus j'ai essayé tous les codes proposée dans le site pour l'affichage et rien faire ça plante toujours d'une façon ou d'une autre. Même le double buffering scintille encore et plante aussi, et avec un timer pour le taux de rafraichissement ça marche pas non plus. La source est [ Lien ]Merci d'avance de m'aider un peu. J'ai vraiment pas envie d'abandonner, donnez-moi une nouvelle piste de recherche, ou l'erreur que j'ai faites, je demande pas forcemment la solution directe, mais de nouvelles idées sur le problème car j'en manque là. 
|
|
mardi 2 novembre 2004 à 16:18:20 |
Re : Plantage graphique le retour (qui n'est jamais parti d'ailleurs)

Mastersam
|
C'est bien ma vaine je sais même plus poster un lien, celui là devrait marcher: [ Lien ]
|
|
mardi 2 novembre 2004 à 17:58:07 |
Re : Plantage graphique le retour (qui n'est jamais parti d'ailleurs)

ymca2003
|
Réponse acceptée !
tous les objets graphiques ne sont pas détruits car tu te sert de la même variable hp pour créer des HPEN mais tu ne fiat qu'un seul DeleteObject. hp = CreatePen(PS_SOLID, 1, 0x003300AA); SelectObject(hdcsound, hp); ... hp = CreatePen(PS_SOLID, 1, 0x0055FFFF); SelectObject(hdcsound, hp); ... DeleteObject(hp) => seul le dernier HPEN est détruit et encore, il est resté dans un DC donc fuite de mémoire. correction du 1er WM_PAINT : case WM_PAINT: { HDC hdcsound; PAINTSTRUCT pssound; HPEN hp1, hp2, hp3, hp4; HPEN holdp; HBRUSH hb; // Fond du scope HBRUSH holdb; LOGBRUSH lb; // Style de la brush rect.left = 0; rect.top = 0; rect.right = 310; rect.bottom = 67; // Structure pour la brush lb.lbStyle = BS_SOLID; lb.lbColor = 0x00330000; // On recupere le DC de la fenetre hdcsound = BeginPaint(hwnd,&pssound); // Creation de BRUSH hb = CreateBrushIndirect(&lb); hodb = (HBRUSH) SelectObject(hdcsound, hb); // On dessine le fond du scope Rectangle(hdcsound, rect.left, rect.top, rect.right, rect.bottom); hp1 = CreatePen(PS_SOLID, 1, 0x00DD7700); holdp = (HPPEN)SelectObject(hdcsound, hp1); for(i=0; i<310; i++) { MoveToEx(hdcsound, i,rect.bottom-(6*beat[i]), NULL); LineTo(hdcsound, i,rect.bottom-7); if(sound[i]>min){ LineTo(hdcsound, i,rect.bottom-7-(((sound[i]-min)*60/(max-min)))); } } hp2 = CreatePen(PS_SOLID, 1, 0x00AA3300); SelectObject(hdcsound, hp2); if(moyenne<max) { MoveToEx(hdcsound, 0,rect.bottom-7-((moyenne-min)*60/(max-min)), NULL); LineTo(hdcsound, 310,rect.bottom-7-((moyenne-min)*60/(max-min))); } hp3 = CreatePen(PS_SOLID, 1, 0x003300AA); SelectObject(hdcsound, hp3); if(seuilreel<max) {if(seuilreel>min){ MoveToEx(hdcsound, 0,rect.bottom-7-((seuilreel-min)*60/(max-min)), NULL); LineTo(hdcsound, 310,rect.bottom-7-((seuilreel-min)*60/(max-min))); }} hp4 = CreatePen(PS_SOLID, 1, 0x0055FFFF); SelectObject(hdcsound, hp4); if(moyenne+limithi<max) { MoveToEx(hdcsound, 0,rect.bottom-7-((moyenne+limithi-min)*60/(max-min)), NULL); LineTo(hdcsound, 310,rect.bottom-7-((moyenne+limithi-min)*60/(max-min))); } if(moyenne+limitlow<max) { MoveToEx(hdcsound, 0,rect.bottom-7-((moyenne+limitlow-min)*60/(max-min)), NULL); LineTo(hdcsound, 310,rect.bottom-7-((moyenne+limitlow-min)*60/(max-min))); }
// Fin du dessin SelectObject(hdcsound, holp); SelectObject(hdcsound, holdb);
DeleteObject(hp1); DeleteObject(hp2); DeleteObject(hp3); DeleteObject(hp4);
DeleteObject(hb); EndPaint(hwnd,&pssound); return 0;
|
|
|
mardi 2 novembre 2004 à 18:01:50 |
Re : Plantage graphique le retour (qui n'est jamais parti d'ailleurs)

ymca2003
|
2ème WM_PAINT: case WM_PAINT: { PAINTSTRUCT psdmx; hdc=BeginPaint(hwnd,&psdmx); // obtient un handle de contexte de périphérique
HBITMAP holdbmp;
BITMAP bmf; bitmapfaderDMX=(HBITMAP) LoadImage(g_hInst,"fader",IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION); hdcfaderDMX=CreateCompatibleDC(hdc); holdbmp = (HBITMAP)SelectObject(hdcfaderDMX,bitmapfaderDMX); GetObject(bitmapfaderDMX,sizeof(bmf),&bmf); for(i=1; i<33; i+=1) { BitBlt(hdc,i*31-23,21,bmf.bmWidth,bmf.bmHeight,hdcfaderDMX,0,0,SRCCOPY); } SelectObject(hdcfaderDMX, holdbmp); DeleteDC(hdcfaderDMX); DeleteObject(bitmapfaderDMX); EndPaint(hwnd, &psdmx);
|
|
|
mardi 2 novembre 2004 à 22:26:55 |
Re : Plantage graphique le retour (qui n'est jamais parti d'ailleurs)

Mastersam
|
Merci ça fait trop plaisir de le voir marcher, ça va faire une bonne heure que ça tourne sans planter. Je me suis même payé le luxe de rajouter un double buffering, en prenant compte de ces nouvelles concidérations. Je pensais pas que l'objet n'était pas détruit si on en créait plusieurs sur le même (hp et non pas hp1,2 ...) et j'avais pas trop compris comment on rechargeait les objets initiaux dans le DC. C'était ça l'erreur. Encore merci. Je vais mettre le résultat du paint pour que ça puisse servir à d'autre: case WM_PAINT: { HDC hdcsound,hdcsoundtmp; PAINTSTRUCT pssound; HPEN hp1, hp2, hp3, hp4; HPEN holdp; HBRUSH hb; // Fond du scope HBRUSH holdb; HBITMAP hOldBmp; HBITMAP hMemBmp; LOGBRUSH lb; // Style de la brush rect.left = 0; rect.top = 0; rect.right = 310; rect.bottom = 67; // Structure pour la brush lb.lbStyle = BS_SOLID; lb.lbColor = 0x00330000; // On recupere le DC de la fenetre hdcsound = BeginPaint(hwnd,&pssound); hdcsoundtmp=CreateCompatibleDC(hdcsound); hMemBmp= CreateCompatibleBitmap(hdcsound, 310,67); hOldBmp= SelectObject(hdcsoundtmp, hMemBmp); // Creation de BRUSH hb = CreateBrushIndirect(&lb); holdb = (HBRUSH)SelectObject(hdcsoundtmp, hb); // On dessine le fond du scope Rectangle(hdcsoundtmp, rect.left, rect.top, rect.right, rect.bottom); hp1 = CreatePen(PS_SOLID, 1, 0x00DD7700); holdp = (HPEN)SelectObject(hdcsoundtmp, hp1); for(i=0; i<310; i++) { MoveToEx(hdcsoundtmp, i,rect.bottom-(6*beat[i]), NULL); LineTo(hdcsoundtmp, i,rect.bottom-7); if(sound[i]>min){ LineTo(hdcsoundtmp, i,rect.bottom-7-(((sound[i]-min)*60/(max-min)))); } } hp2 = CreatePen(PS_SOLID, 1, 0x00AA3300); SelectObject(hdcsoundtmp, hp2); if(moyenne<max) { MoveToEx(hdcsoundtmp, 0,rect.bottom-7-((moyenne-min)*60/(max-min)), NULL); LineTo(hdcsoundtmp, 310,rect.bottom-7-((moyenne-min)*60/(max-min))); } hp3 = CreatePen(PS_SOLID, 1, 0x003300AA); SelectObject(hdcsoundtmp, hp3); if(seuilreel<max) {if(seuilreel>min){ MoveToEx(hdcsoundtmp, 0,rect.bottom-7-((seuilreel-min)*60/(max-min)), NULL); LineTo(hdcsoundtmp, 310,rect.bottom-7-((seuilreel-min)*60/(max-min))); }} hp4 = CreatePen(PS_SOLID, 1, 0x0055FFFF); SelectObject(hdcsoundtmp, hp4); if(moyenne+limithi<max) { MoveToEx(hdcsoundtmp, 0,rect.bottom-7-((moyenne+limithi-min)*60/(max-min)), NULL); LineTo(hdcsoundtmp, 310,rect.bottom-7-((moyenne+limithi-min)*60/(max-min))); } if(moyenne+limitlow<max) { MoveToEx(hdcsoundtmp, 0,rect.bottom-7-((moyenne+limitlow-min)*60/(max-min)), NULL); LineTo(hdcsoundtmp, 310,rect.bottom-7-((moyenne+limitlow-min)*60/(max-min))); } BitBlt(hdcsound,0,0,310,67,hdcsoundtmp,0,0,SRCCOPY); // Fin du dessin SelectObject(hdcsound, holdp); SelectObject(hdcsound, holdb); SelectObject(hdcsoundtmp, hOldBmp); DeleteObject(hMemBmp); DeleteDC(hdcsoundtmp); DeleteObject(hp1); DeleteObject(hp2); DeleteObject(hp3); DeleteObject(hp4); DeleteObject(hb); EndPaint(hwnd,&pssound); return 0; }
|

|
|
Cette discussion est classée dans : url, http, fenêtre, toujours, plante
Répondre à ce message
Sujets en rapport avec ce message
Au sujet des styles appliquables à une fenêtre avec CreateWindow [ par lol55 ]
Bonjour à tous, Je cherche quel style(s) mettre dans la fonction [i]CreateWindow[/i] pour que me fenêtre n'est pas de titre, ni de boutons en haut à
Cacher une fenêtre planté [ par ludov109 ]
Bonjour à tous, j'aimerais savoir si il y aurait une possibilité de cacher une fenêtre si elle est plantée, car si j'utilise ShowWindow(hWnd, SW_HIDE)
Arduino - programmation robots [ par pop70 ]
Bonjour à tous, ( j'espère poster ceci a peu près dans la bonne rubrique) Je cherche à faire un petit robot programmable simple, je n'en ai jamais fa
utilisé msxml4 sous visual c++ [ par brekiano ]
g trouvé aprés une langue recherche un lien qui m'as vraiment aidéavant de voir cette page il faut que tu telecharger le fichier msxmlfra.msi depuis c
Simulateur de vol opensource et multi-plateforme [ par Stephane_M ]
Bonjour, nous recherchons un ou des passioné(e)s de la simulation capable de nous aider dans le développement d'un simulateur de vol en open source so
[CS]Signature qui ne s'enregistre pas [ par CptPingu ]
Bonjour. J'ai un petit bug assez dérangeant. Ma signature n'est pas enregistrée correctement. Chaque jour, je dois la refaire car elle semble ne pas
[BAR]Révélation d'un document utilisé par les terroristes pour échanger sur le net [ par rt15 ]
Bonjour, Mardi dernier (Le 28/07) dans "C dans l'air", on nous informe qu'un document "pour protéger les échanges entre les gens importants d'Al-Quaï
Page TCC [ par MCI ]
D'abord, un petit coucou de bonne année à Bruno (Brunews), que je n'ai pas vu depuis le 4.12, chez Microsoft. Ce message, c'est pour signaler que j'
Probeleme de Conception [ par snoopi_19ans ]
:Dsalut a tous ,j'ai un projet a développer avec MFC ,et dont la conception et donc orienté objet langage UML ,c'est pourquoi que je veut récolter vos
Trouver des offset dans un code dessasembler [ par oxthecracker ]
Bonjour a tous désolée si je suis dans la mauvaise section. Alors voila afin de trouver des offset situer dans l exe de mon jeux(Gunz ijji)il est i
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
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
|