JUKE-BOX BEEPS

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 29 oct. 2007 à 00:24
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 29 oct. 2007 à 13:42
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/44525-juke-box-beeps

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 oct. 2007 à 13:42
OUPS, oublié le pourquoi #include est inutile.
_endthread();
n'a plus rien à faire dans jouerPartition(), 'return 0' en sortie de thread.
CreateThread() retourne un handle qu'il convient de fermer par CloseHandle(), les ressources systeme ne sont pas infinies.

Faudra voir de mettre au point la prochaine source avant de la publier, tous les points évoqués dans ces commentaires ont deja des exemples très convenables dans les sources présentes sur cppfrance.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 oct. 2007 à 13:36
enlever #include , ne doit plus servir.

si ça compile, urgent de changer de compilo.
DWORD WINAPI jouerPartition()
doit retourner une valeur. Cette valeur (code d'erreur) serait interrogeable par GetExitCodeThread().

for(i = 0; i < lstrlen(partition); ++i) {...
lstrlen() est un appel vers kernel32.dll, à part que c'est contre performant comparé à un strlen (inliné donc ultra rapide), le faire à chaque tour de boucle est abuser.
len = strlen(partition);
for(i = 0; i < len; ++i) {...
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
29 oct. 2007 à 13:21
Re-bonjour,
je viens d'essayer d'appliquer votre idée et voici le résultat... (cf. ZIP)
A bientôt, j'espère que ma nouvelle version sera plus adéquate...
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
29 oct. 2007 à 12:43
D'accord merci, je vais y jeter un coup d'oeil! A+
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 oct. 2007 à 09:50
Ce sont de vieux exemples d'anciennes éditions qui n'ont pas été refaits.
Tout ce qui est prog system doit être pris chez Richter.
http://brunews.com/brunews/download/JR4.zip
http://brunews.com/brunews/download/JR4Sources.zip
ndubien Messages postés 557 Date d'inscription dimanche 25 septembre 2005 Statut Membre Dernière intervention 10 mai 2014 4
29 oct. 2007 à 09:20
Bonjour, merci pour cette indication mais pourquoi petzold utilise-t'il _beginthread dans multi2.c du chapitre 20? Où trouver Richter? A+
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 oct. 2007 à 00:24
Richter chapitre 6 nous dit de _beginthread:
"C/C++ Run-Time Library Functions That You Should Never Call"
En termes clairs: Fonctions du CRT à ne jamais employer.
Si tu es en C++ tu utiliseras _beginthreadex sinon CreateThread dans ton code C ferait parfaitement l'affaire.

Pourquoi mettre un param (PVOID pvoid) à une fonction s'il n'est jamais utilisé ? totalement inutile.

masquer = IsDlgButtonChecked(hDlg, IDR_MASQUER);
if(masquer==TRUE)...
NON, 'TRUE' ne fait pas partie des constantes BST_xxx que IsDlgButtonChecked pourrait retourner. Il se trouve que BST_CHECKED = 1 mais ce n'est pas une manière de coder fiable.
Si tu veux seulement savoir si la coche n'est pas vide (BST_UNCHECKED) alors on teste:
if(IsDlgButtonChecked(hDlg, IDR_MASQUER)) ...
Rejoignez-nous