2009-08-17 14 views
1

j'utilisaisComment utiliser CWnd :: CreateEx

CreateEx(

0, className, "XXX", WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, rect, parent, 0); dans Visual C++ 6.0.

quand je le port même à VS 2008 .., son donnant un message d'erreur indiquant que ..

error C2664: 'BOOL CWnd::CreateEx(DWORD,LPCTSTR,LPCTSTR,DWORD,const RECT &,CWnd *,UINT,LPVOID)' : cannot convert parameter 3 from 'const char [7]' to 'LPCTSTR' 

comment rectifier les mêmes grâce Chitra

Répondre

2

LPCTSTR est un pointage typedef la variante large-char, si c'est activé (c'est par défaut, dans les nouvelles versions). Il suffit de changer vos littéraux à grand char (ou mieux encore, utilisez la macro appropriée pour retourner le bon littéral):

CreateEx(0, className, _T("XXX"), 
    WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, rect, parent, 0); 
+3

Ceci est presque correct, mais pas tout à fait. L "XXX" spécifie une chaîne de caractères large. Pour LPCTSTR, qui permet la compatibilité avec ANSI et Unicode, vous avez besoin de _T ("XXX"). http://msdn.microsoft.com/en-us/library/c426s321.aspx – ChrisN

+0

@Chris: merci, oublié à ce sujet. –

1

Pour directement le port ancien code, vous pouvez désactiver Unicode en cliquant droit sur le nom du projet, aller aux propriétés, puis en changeant le jeu de caractères à "multibyte". En supposant que votre code original n'utilisait pas déjà Unicode ...