OVH Cloud OVH Cloud

VARIANT_BOOL trés original !!

5 réponses
Avatar
lionel letoffet
Bonjour,

J'ai écrit un activeX en MFC, je l'utilise en C#

Dans cet activex j'ai la méthode suivante:

VARIANT_BOOL ViewCtrl::HasImage(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
VARIANT_BOOL Ret=VARIANT_FALSE;
if(m_pImageCourante)Ret=VARIANT_TRUE;
return Ret;
}

Dans l'appli C# j'écris :
bool x=true;
x=MyView.HasImage();

Le probléme est que x est toujours à true même si le pointeur
m_pImageCourante est vide !!!

J'ai suivis le code au debbuger, dans l'ActiveX la fonction retourne bien
false mais x est toujours true !!

J'ai supprimé, sans succés, AFX_MANAGE_STATE.

Quand ma fonction retourne false la valeur de retour est true ????

Avez vous une idée de ce qu'il se passe?

Merci d'avance.

5 réponses

Avatar
Sylvain Lafontaine
Avez-vous essayé avec x=(bool)MyView.HasImage() ou encore
x=Convert.ToBoolean(MyView.HasImage()) ?

S. L.

"lionel letoffet" wrote in message
news:4235fad8$0$15285$
Bonjour,

J'ai écrit un activeX en MFC, je l'utilise en C#

Dans cet activex j'ai la méthode suivante:

VARIANT_BOOL ViewCtrl::HasImage(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
VARIANT_BOOL Ret=VARIANT_FALSE;
if(m_pImageCourante)Ret=VARIANT_TRUE;
return Ret;
}

Dans l'appli C# j'écris :
bool x=true;
x=MyView.HasImage();

Le probléme est que x est toujours à true même si le pointeur
m_pImageCourante est vide !!!

J'ai suivis le code au debbuger, dans l'ActiveX la fonction retourne bien
false mais x est toujours true !!

J'ai supprimé, sans succés, AFX_MANAGE_STATE.

Quand ma fonction retourne false la valeur de retour est true ????

Avez vous une idée de ce qu'il se passe?

Merci d'avance.




Avatar
lionel letoffet
Oui j'ai essayé !

Et aussi de tester directement la fonction : if(MyView.HasImage())...

Je sais que VARIANT_TRUE est définis à -1

Comment est il possible que si ma fonction retourne correctement false la
valeur de retour dans l'appelant soit true?

C'est fou non?

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:
Avez-vous essayé avec x=(bool)MyView.HasImage() ou encore
x=Convert.ToBoolean(MyView.HasImage()) ?

S. L.

"lionel letoffet" wrote in message
news:4235fad8$0$15285$
> Bonjour,
>
> J'ai écrit un activeX en MFC, je l'utilise en C#
>
> Dans cet activex j'ai la méthode suivante:
>
> VARIANT_BOOL ViewCtrl::HasImage(void)
> {
> AFX_MANAGE_STATE(AfxGetStaticModuleState());
> VARIANT_BOOL Ret=VARIANT_FALSE;
> if(m_pImageCourante)Ret=VARIANT_TRUE;
> return Ret;
> }
>
> Dans l'appli C# j'écris :
> bool x=true;
> x=MyView.HasImage();
>
> Le probléme est que x est toujours à true même si le pointeur
> m_pImageCourante est vide !!!
>
> J'ai suivis le code au debbuger, dans l'ActiveX la fonction retourne


bien
> false mais x est toujours true !!
>
> J'ai supprimé, sans succés, AFX_MANAGE_STATE.
>
> Quand ma fonction retourne false la valeur de retour est true ????
>
> Avez vous une idée de ce qu'il se passe?
>
> Merci d'avance.
>
>




Avatar
Sylvain Lafontaine
Alors peut-être http://support.microsoft.com/?kbid17203 ?

S. L.

"lionel letoffet" wrote in message
news:42368c38$0$15285$
Oui j'ai essayé !

Et aussi de tester directement la fonction : if(MyView.HasImage())...

Je sais que VARIANT_TRUE est définis à -1

Comment est il possible que si ma fonction retourne correctement false la
valeur de retour dans l'appelant soit true?

C'est fou non?

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:
Avez-vous essayé avec x=(bool)MyView.HasImage() ou encore
x=Convert.ToBoolean(MyView.HasImage()) ?

S. L.

"lionel letoffet" wrote in message
news:4235fad8$0$15285$
> Bonjour,
>
> J'ai écrit un activeX en MFC, je l'utilise en C#
>
> Dans cet activex j'ai la méthode suivante:
>
> VARIANT_BOOL ViewCtrl::HasImage(void)
> {
> AFX_MANAGE_STATE(AfxGetStaticModuleState());
> VARIANT_BOOL Ret=VARIANT_FALSE;
> if(m_pImageCourante)Ret=VARIANT_TRUE;
> return Ret;
> }
>
> Dans l'appli C# j'écris :
> bool x=true;
> x=MyView.HasImage();
>
> Le probléme est que x est toujours à true même si le pointeur
> m_pImageCourante est vide !!!
>
> J'ai suivis le code au debbuger, dans l'ActiveX la fonction retourne


bien
> false mais x est toujours true !!
>
> J'ai supprimé, sans succés, AFX_MANAGE_STATE.
>
> Quand ma fonction retourne false la valeur de retour est true ????
>
> Avez vous une idée de ce qu'il se passe?
>
> Merci d'avance.
>
>








Avatar
Simon Mourier [MS]
A priori, ce bug ne se produit que sur un VARIANT_BOOL dans une structure.
Avez vous la possibilité de modifier votre programme MFC, pour tester avec
un autre type? un int par exemple.
Simon.

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:
Alors peut-être http://support.microsoft.com/?kbid17203 ?

S. L.

"lionel letoffet" wrote in message
news:42368c38$0$15285$
Oui j'ai essayé !

Et aussi de tester directement la fonction : if(MyView.HasImage())...

Je sais que VARIANT_TRUE est définis à -1

Comment est il possible que si ma fonction retourne correctement false la
valeur de retour dans l'appelant soit true?

C'est fou non?

"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:
Avez-vous essayé avec x=(bool)MyView.HasImage() ou encore
x=Convert.ToBoolean(MyView.HasImage()) ?

S. L.

"lionel letoffet" wrote in message
news:4235fad8$0$15285$
> Bonjour,
>
> J'ai écrit un activeX en MFC, je l'utilise en C#
>
> Dans cet activex j'ai la méthode suivante:
>
> VARIANT_BOOL ViewCtrl::HasImage(void)
> {
> AFX_MANAGE_STATE(AfxGetStaticModuleState());
> VARIANT_BOOL Ret=VARIANT_FALSE;
> if(m_pImageCourante)Ret=VARIANT_TRUE;
> return Ret;
> }
>
> Dans l'appli C# j'écris :
> bool x=true;
> x=MyView.HasImage();
>
> Le probléme est que x est toujours à true même si le pointeur
> m_pImageCourante est vide !!!
>
> J'ai suivis le code au debbuger, dans l'ActiveX la fonction retourne


bien
> false mais x est toujours true !!
>
> J'ai supprimé, sans succés, AFX_MANAGE_STATE.
>
> Quand ma fonction retourne false la valeur de retour est true ????
>
> Avez vous une idée de ce qu'il se passe?
>
> Merci d'avance.
>
>












Avatar
lionel letoffet
Bonjour,

j'ai laissé la déclaration de la fonction en VARIANT_BOOL dans l'idl. Mais
dans le point h et le .cpp je suis passé en BOOL.

Il semblerait que cela fonctionne, mais le doute subsite.

Merci pour vos réponses