PROGRAMME DE VISUALISATION ET D'ANALYSE SPECTRALE DE FICHIERS SONS

cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 - 7 févr. 2006 à 07:57
hammasaidi Messages postés 28 Date d'inscription lundi 1 février 2010 Statut Membre Dernière intervention 21 avril 2010 - 4 févr. 2010 à 12:18
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35923-programme-de-visualisation-et-d-analyse-spectrale-de-fichiers-sons

hammasaidi Messages postés 28 Date d'inscription lundi 1 février 2010 Statut Membre Dernière intervention 21 avril 2010
4 févr. 2010 à 12:18
salut à tous c'est une bonne travail
mais juste une question
es ce que si possible d'avoirs cette travail avec java??
et merci pour vos aides
cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
8 févr. 2006 à 15:13
>PATATALO,

J'ai testé ta proposition mais hélas celà ne résout pas le problème. Il me plante le programme si je n'ouvre pas un fichier.

Nota: Pour la MessageBox, je lui passe l'argument [WindowHandle]

A+
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
8 févr. 2006 à 10:14
salut,

Create
push dword FontStandard
call [CreateFontIndirectA]
mov dword [hFontStandard], eax
push dword [ebp+8] ; parametre hWin
pop dword [WindowHandle]
leave
ret 16

@++
cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
8 févr. 2006 à 09:40
Bonjour,

Je te remercie beaucoup de te pencher sur mon pb, mais je pense avoir besoin de plus de précisions. Qu'entends tu avec handle global, est-ce le handle Instance qui aurait besoin d'être restauré. J'ai fait quelques essais en ce sens mais sans succès.
J'ai beau chercher, je ne vois pas en quoi le fait d'ouvrir un fichier permet de ne plus avoir de pb - Si ce n'est que l'appel du message paint créé un handle de contexte qui n'est pas fait s'il n'y a pas de fichier d'ouvert.

?????
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
8 févr. 2006 à 00:03
salut,

je pense que j'ai trouvé d'ou vient ton erreur qui n'en est pas une, je m'etais déjà fait avoir auparavant...
lors du WM_CREATE, tu doit mettre a jour le handle global avec le handle passé en parametre a la WndProc. Celui retourné par la fonction CreateWindow te genere ce genre de probleme.
Est-ce que c'est un handle transitoire ou quoi ???

@++
cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
7 févr. 2006 à 15:41
> PATATALO
L'utilisation de la MessageBox avec le paramètre NULL fait apparaitre la MessageBox derrière la fenêtre si aucun fichier n'est ouvert et au premier plan dans le cas contraire. Si on utilise le handle retourné par GetForegroundWindow, l'application est plantée si aucun fichier n'est ouvert. La fenêtre apparait au premier plan si un fichier est ouvert.

Si tu vois ce qui cloche...
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
7 févr. 2006 à 14:39
pour eviter les warnings et pour faciliter la mise a jour dans les declaration section .data

ofn resd 19 ;structure pour sélection fichier à lire
->
ofn times OPENFILENAME_size db 0

@++
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
7 févr. 2006 à 13:12
salut,

1 - au vu du code qui me semble correct, ( j'ai pas tout tracé pasque c'est quand meme un peu le bord... là dedans ;-) essaye de passer NULL comme parametre de handle window a la fonction MessageBox.

2 - j'ai rien vu de tel mais attention a ne modifier aucun des registres esi,edi et ebx en sortie de WndProc.

@++
cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
7 févr. 2006 à 08:20
Bonjour PATATALO,

Merci pour ce tuyau, je n'avais pas suffisamment potassé la doc en ma disposition. Celà m'évitera de devoir inverser les conditions des tests et de mettre des jump à tout va. La lisibilité y gagnera.

Peux tu me dire également pourquoi le programme plante (ou plutôt ne répond plus) si l'on sélectionne la rubrique "A propos du programme" avant d'ouvrir un fichier - J'ai d'ailleurs dû désactiver cette option au démarrage. La fonction MessageBox est parfois capricieuse.
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
7 févr. 2006 à 08:11
re,

un autre truc vu dans la dll. pour tester le premier bit a 1, il existe l'instruction bsf/bsr ( bit scan forward / bit scan reverse ).

taille
dec ecx
shl eax,1 ;dcale gauche jusqu' avoir un bit non nul
jnc taille
mov eax,0 ;calcule la puissance de 2
rcl eax,cl


@++
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
7 févr. 2006 à 07:57
salut,

tres bon boulot,

pour la gestion WndProc, vu que je ne pense pas que tu ai fait ce programme pour un 286, tu peux utiliser les jmp conditionnels near:

cmp eax,WM_CREATE
je near Create
cmp eax,WM_COMMAND
je near Command
cmp eax,WM_LBUTTONDOWN
je near clcg
...

d'une maniere générale, cela règle le probleme du warning qui te dit que le saut est trop loin.

@++