2009-08-17 3 views
1

ISo verwenden Sie CWnd :: CreateEx

CreateEx(

0, classname, "XXX", wurde unter Verwendung WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, rect, Eltern, 0); in Visual C++ 6.0.

wenn i Port gleich VS 2008 .., seine eine Fehlermeldung zu geben, dass zu sagen ..

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

wie die gleichen dank korrigieren Chitra

Antwort

2

LPCTSTR ist ein typedef Zeige die Wide-Char-Variante, wenn diese aktiviert ist (standardmäßig in neuen Versionen). ändern Sie einfach Ihre Literale Weit char (oder besser noch, verwenden Sie die entsprechende Makro die korrekten wörtlichen zurückzukehren):

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

Das ist fast richtig, aber nicht ganz. L "XXX" gibt eine breite Zeichenfolge an. Für LPCTSTR, das Kompatibilität mit ANSI und Unicode ermöglicht, benötigen Sie _T ("XXX"). http://msdn.microsoft.com/en-us/library/c426s321.aspx – ChrisN

+0

@Chris: Danke, vergaß darüber. –

1

Um direkt Port Ihren alten Code, der Sie Unicode durch einen Rechtsklick auf dem Projektnamen ausschalten kannst, gehe zu Eigenschaften und ändere dann den Zeichensatz auf "Multibyte".

Angenommen natürlich, dass Ihr ursprünglicher Code Unicode noch nicht verwendet ...