2009-12-22 1 views
2

J'allais commencer par le développement de l'application Win32. Avant que je puisse obtenir la première fenêtre à afficher j'étais prêt à abandonner! J'ai été submergé par le nombre de types de données dont vous avez besoin de connaître avant de pouvoir écrire un simple WinMain et WndProc. (À moins que vous copier-coller bien sûr!)Win32 development - Types de données liés à la chaîne en C++

Surtout ceux-ci -

LPSTR

LPCSTR

LPWSTR

LPCWSTR

que quelqu'un peut me pointer vers l'article droit que explique ceux-ci en ce qui concerne la programmation Win32? Lesquels devrais-je savoir, lesquels sont nécessaires dans quelle situation, quand pour aller à Unicode, ce qui est jeu de caractères multi-octets, et tous les trucs liés.

Et la conversion de/à partir de ces types de données à char * et char [] et à quoi que ce soit, lors de l'appel des fonctions API Win32 est une douleur.

Tout est si confus.

Merci pour l'aide.

+0

N'oubliez pas BSTR, _wchar_t ou les nombreuses classes wrapper: CComBstr, CString, CAtlString, STL :: String, _bstr_t. La meilleure chose à propos de C++ est l'écriture de votre propre implémentation de chaîne;) – dkackman

+0

D'accord, vous venez de me faire tourner la tête ... –

+0

en fonction des plates-formes sur lesquelles vous travaillez généralement seulement besoin d'un ou deux. Pour le développement de Windows, _bstr_t et CString sont tout ce que je finis par utiliser pour la plupart. – dkackman

Répondre

3

La tendance est relativement simple:

LPSTR = chaîne à terminaison nulle de char

LPCSTR = constante zéro à terminaison de chaîne char (C == constante)

LPWSTR = chaîne à zéro de wchar_t (W == caractère large)

LPCWSTR = constante chaîne terminée par zéro de wchar_t (C et W)

Pour plus de détails et d'explications voir par exemple L'article lié contient également des conseils sur l'utilisation d'Unicode dans votre application et dans le cas contraire.

+0

+1 - Hey, juste eu un coup d'oeil à l'article. On dirait qu'il répond à beaucoup de mes questions de cordes/charset. Merci! :) –

+0

De rien. Et oui, c'est ridicule au début, mais cela prend un peu de sens après un moment. – Sebastian

+0

En passant par là ... C'est comme si cet article avait été fabriqué sur commande! :) N'aurait pas pu demander plus. –