OVH Cloud OVH Cloud

STL : probleme de preprocesseur

2 réponses
Avatar
Jeremie Fouche
Bonjour a tous

Je suis confronté au probleme suivant :
J'utilise la STL dans une une interface graphique sous Windows ( wxWindow et
Dev-C++ ).
J'utilise la classe xwDC qui a pour fonction membre DrawText. Cette fonction
est aussi une méthode "C" de l'API Windows.
lorsque j'écris :

#include <vector>
...
wxDC dc;
dc.DrawText(...);

le preprocesseur modifie cette syntaxe en :
dc.DrawTextA(...) ou dc.DrawTextW(...) en fonction de la directive UNICODE
dans le fichier "windef.h".

windef.h :

#ifdef UNICODE
#define DrawText DrawTextW
#else // UNICODE
#define DrawText DrawTextA
#endif

Le probleme vient du fait que le fichier "windef.h" est inclus
(indirectement) par <vector>, et plus particulierement par <ghtr-default.h>.
Comment resoudre mon probleme ?
Merci

--
Jérémie

2 réponses

Avatar
Nico
Une méthode pas très jolie :

Un .cpp avec une méthode DCDrawText() qui prend en paramètre un wxDC& et les
autres paramètres de DrawText().


"Jeremie Fouche" a écrit dans le
message de news:cf52v8$bhm$
Bonjour a tous

Je suis confronté au probleme suivant :
J'utilise la STL dans une une interface graphique sous Windows ( wxWindow
et

Dev-C++ ).
J'utilise la classe xwDC qui a pour fonction membre DrawText. Cette
fonction

est aussi une méthode "C" de l'API Windows.
lorsque j'écris :

#include <vector>
...
wxDC dc;
dc.DrawText(...);

le preprocesseur modifie cette syntaxe en :
dc.DrawTextA(...) ou dc.DrawTextW(...) en fonction de la directive UNICODE
dans le fichier "windef.h".

windef.h :

#ifdef UNICODE
#define DrawText DrawTextW
#else // UNICODE
#define DrawText DrawTextA
#endif

Le probleme vient du fait que le fichier "windef.h" est inclus
(indirectement) par <vector>, et plus particulierement par
<ghtr-default.h>.

Comment resoudre mon probleme ?
Merci

--
Jérémie



Avatar
Loïc Joly
Jeremie Fouche wrote:

[...]

windef.h :

#ifdef UNICODE
#define DrawText DrawTextW
#else // UNICODE
#define DrawText DrawTextA
#endif

Le probleme vient du fait que le fichier "windef.h" est inclus
(indirectement) par <vector>, et plus particulierement par <ghtr-default.h>.
Comment resoudre mon probleme ?
Merci


Peut-être ajouter #undef DrawText après tes include ?

--
Loïc