CONVERTISSEUR RGB ->COLORREF

Signaler
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
-
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/49309-convertisseur-rgb-colorref

Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
7
Désolé pour le double post mais je montre comment on corrige et on allège le code :
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
try
{
hMutex = CreateMutex(NULL, FALSE,"convert");
if ( GetLastError() == ERROR_ALREADY_EXISTS )
{
//on lève une exception si une instance du programme existait déjà
throw hMutex;
}
//si aucune anomalie n'est survenue(si le programme n'était pas encore lancé),
//on lance le programme.
hinst=hInstance;
DialogBox(hinst,"DIALOG1",NULL,(DLGPROC)DlgProc);
return 0;
}
catch(HANDLE&hMutex)
{
MessageBox(0," convert est déjà en cours d'exécution. ","convert",0);
if (hMutex)
CloseHandle(hMutex);
return FALSE;
}
}

se change en :

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
hMutex = CreateMutex(NULL, FALSE,"convert");
if ( GetLastError() == ERROR_ALREADY_EXISTS )
{
CloseHandle(hMutex);
MessageBox(NULL, "Convert est déjà en cours d'exécution !", "Convert", 16);
return FALSE;
}
//si aucune anomalie n'est survenue(si le programme n'était pas encore lancé),
//on lance le programme.
hinst=hInstance;
DialogBox(hinst,"DIALOG1",NULL,(DLGPROC)DlgProc);
return 0;
}
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
7
Personnellement depuis le temps que je programme à aujourd'hui je ne me suis jamais servis des exceptions.
Les codes d'erreur ou des classes de gestion d'erreur intégrées (la fonction va renvoyer return Erreur("Nom de l'erreur") et c'est cette fonction renvoi false, le programmeur peut décider d'appeller la fonction ou non qui renvoi l'erreur) quand la fonction renvoi false suffit.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Titre de la source erroné:
RGB = COLORREF et vice versa, il n'y a donc rien à convertir, c'est un DWORD et rien de plus.

La gestion des exceptions C++ (throw, etc.) dans un prog Win API est totalement inutile et donc nuisible aux perfs. L'API indique toujours le statut de réussite, un simple test sur le statut se fait en quelques cycles.