Question

J'utilise le c ++ géré pour implémenter une méthode qui renvoie une chaîne. Je déclare la méthode dans mon fichier d'en-tête en utilisant la signature suivante:

String^ GetWindowText()

Cependant, lorsque j'utilise cette méthode à partir de C #, la signature est:

string GetWindowTextW();

Comment puis-je me débarrasser de l'extra "W"? à la fin du nom de la méthode?

Était-ce utile?

La solution

Pour contourner le hackery préprocesseur des fichiers d'en-tête Windows, déclarez-le comme suit:

#undef GetWindowText
String^ GetWindowText()

Notez que si vous utilisez réellement les routines Win32 ou MFC GetWindowText () dans votre code, vous devrez redéfinir la macro ou les appeler comme GetWindowTextW () .

Autres conseils

GetWindowText est un appel API Win32 aliasé par une macro avec GetWindowTextW dans votre projet C ++.

Essayez d’ajouter #undef GetWindowText à votre projet C ++.

C ++ non géré mais C ++ / CLI pour la plate-forme .net. Un ensemble d'extensions Microsoft en C ++ à utiliser avec leur système .Net.

FAQ de Bjarne Stroustrup http://www.research.att.com /~bs/bs_faq.html#CppCLI

C ++ / CLI n'est pas C ++, ne le marquez pas comme tel. Txs

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top