OVH Cloud OVH Cloud

cast bizarre

2 réponses
Avatar
Michael
Bonsoir à tous,

Je me trouve face à un souci que je trouve bizarre.

Dans la lib DirectShow, il y a l'énumération suivante:

typedef enum {
ProcAmpControl9_Contrast = 0x00000001,
ProcAmpControl9_Brightness = 0x00000002,
ProcAmpControl9_Hue = 0x00000004,
ProcAmpControl9_Saturation = 0x00000008,
ProcAmpControl9_Mask = 0x0000000F
} VMR9ProcAmpControlFlags;

Moi dans ma lib, j'ai ça:

typedef enum {
ProcAmp_Contrast = 0x00000001,
ProcAmp_Brightness = 0x00000002,
ProcAmp_Hue = 0x00000004,
ProcAmp_Saturation = 0x00000008
} ProcAmpType;

J'ai la fonction suivante:

void ProcAmpControl::AddProcAmpType(VMR9ProcAmpControlFlags type)
{
//blabla
ProcAmpType p = static_cast<ProcAmpType>(type);
//blabla
}

Et là, alors que je passe ProcAmpControl9_Brightness à la fonction, je me
retrouve avec p = ProcAmp_Contrast...

Le debuggeur me donne les valeurs suivantes:

type = 1 /* ProcAmpControl9_Brightness */
p: 1 /* ProcAmp_Contrast */

Comment ça se fait ça?

2 réponses

Avatar
Michael
Hmmmm...

comment dire?

Merci kro$oft?

Dans la doc que j'ai en local, j'ai bien

typedef enum {
ProcAmpControl9_Contrast = 0x00000001,
ProcAmpControl9_Brightness = 0x00000002,
ProcAmpControl9_Hue = 0x00000004,
ProcAmpControl9_Saturation = 0x00000008,
ProcAmpControl9_Mask = 0x0000000F
} VMR9ProcAmpControlFlags;

tandis que sur la MSDN, on a:

typedef enum {
ProcAmpControl9_Brightness = 0x00000001,
ProcAmpControl9_Contrast = 0x00000002,
ProcAmpControl9_Hue = 0x00000004,
ProcAmpControl9_Saturation = 0x00000008,
ProcAmpControl9_Mask = 0x0000000F
} VMR9ProcAmpControlFlags;

Effectivement, ça aide :)

Désolé du dérangement...
Avatar
Serge Paccalin

Dans la doc que j'ai en local, j'ai bien

ProcAmpControl9_Contrast = 0x00000001,
ProcAmpControl9_Brightness = 0x00000002,

tandis que sur la MSDN, on a:

ProcAmpControl9_Brightness = 0x00000001,
ProcAmpControl9_Contrast = 0x00000002,

Effectivement, ça aide :)


Tu as trois solutions :

- Définir tes constantes avec des valeurs totalement indépendantes, e t
écrire une ou les deux fonctions de conversion ;

- Utiliser directement les types et constantes Microsoft ;

- Définir tes constantes avec les valeurs symboliques de Microsoft.

--
Serge Paccalin <sp ad mailclub.net>