Filou Geschrieben 28. März 2007 Teilen Geschrieben 28. März 2007 Hi! ich habe mich heute erstmals mit C++ unter Visual Studio 2005 befasst. Leider funktioniere einige der Klassen nicht mehr, die ich früher verwendet habe. Darunter die "Label.cpp", mit der man einen Text formatieren kann, Farbe, Fett, Hyperlink,usw... Ich bekomme immer die Fehlermeldung: label.cpp(119) : error C2664: 'strcpy': Konvertierung des Parameters 2 von 'const CString' in 'const char *' nicht möglich Hier ist der Code dazu: CLabel& CLabel::SetFontName(const CString& strFont) { strcpy(m_lf.lfFaceName,strFont); ReconstructFont(); RedrawWindow(); return *this; } Ein weiterer Fehler: CWnd::SetWindowTextW': Konvertierung des Parameters 1 von 'const char [1]' in 'LPCTSTR' nicht möglich Code: SetWindowText(""); Wieso hat das unter VS6 geklappt und jetzt gehts nicht mehr? Könnt Ihr mir helfen? LG, Filou Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hexagon Geschrieben 28. März 2007 Teilen Geschrieben 28. März 2007 Moin, Ich glaub bei deinem zweiten Problem sollte ein SetWindowtext(_T("")); oder so ähnlich abhilfe schaffen. Bei dem ersten Problem stehts doch schon fast da. error C2664: 'strcpy': Konvertierung des Parameters 2 von 'const CString' in 'const char *' nicht möglich Entweder du versuchst mal ein paar Dereferenzierungsoperatoren oder gibts vielleicht eine Get-Methode? MfG Hexagon Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Filou Geschrieben 28. März 2007 Autor Teilen Geschrieben 28. März 2007 Moin, Ich glaub bei deinem zweiten Problem sollte ein SetWindowtext(_T("")); oder so ähnlich abhilfe schaffen. Bei dem ersten Problem stehts doch schon fast da. error C2664: 'strcpy': Konvertierung des Parameters 2 von 'const CString' in 'const char *' nicht möglich Entweder du versuchst mal ein paar Dereferenzierungsoperatoren oder gibts vielleicht eine Get-Methode? MfG Hexagon Zum ersten Teil DANKE!!! Ich werde es testen. Zum zweiten... Das habe ich nicht verstanden. Diese Klasse ist nicht von mir. Ich hab kein Schimmer wie das gestrickt ist geschweige denn, wieso es plötzlich nicht mehr funktioniert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Filou Geschrieben 28. März 2007 Autor Teilen Geschrieben 28. März 2007 WIESO GEHT IN VS2005 DAS HIER NICHT MEHR: LPCTSTR extensions = "Hallo Welt"; Ich verstehe es nicht? EDIT: es liegt auch hier an diesem _T was immer das auch macht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hexagon Geschrieben 28. März 2007 Teilen Geschrieben 28. März 2007 Zum zweiten... Das habe ich nicht verstanden. Diese Klasse ist nicht von mir. Ich hab kein Schimmer wie das gestrickt ist geschweige denn, wieso es plötzlich nicht mehr funktioniert. Weil Microsoft die Klasse CString in ein template geändert hat. Dabei ist wohl der Operator LPCTSTR "verloren" gegangen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 28. März 2007 Teilen Geschrieben 28. März 2007 Nein, da ist nichts verlorengegangen. Das (erste) T in LPCTSTR steht für TCHAR. Das ist aber in VS2005 per default nicht mehr char, sondern WCHAR, als ein wide character. Alle Literale, die mit TCHAR zu tun haben, müssen in _T() eingeschlossen werden, damit das Literal je nach Compilereinstellung mit einem führenden L versehen wird, also: LPCTSTR extensions = _T("Hallo Welt"); Mann kann natürlich auch in den Projekteinstellungen den Zeichensatz wieder von Unicode auf Multibyte stellen. Für die Portierung eines bestehenden Projekts ist das sicher einfacher. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Filou Geschrieben 28. März 2007 Autor Teilen Geschrieben 28. März 2007 Weil Microsoft die Klasse CString in ein template geändert hat. Dabei ist wohl der Operator LPCTSTR "verloren" gegangen. Achso... Danke Dir!! :-) Das is aber ziemlich schei**! Jetzt kann ich meinn alten code nicht mehr verwenden. Hab schon verschiedene Sachen getestet... Es knallt fas immer in irgendeiner Funktion... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hexagon Geschrieben 28. März 2007 Teilen Geschrieben 28. März 2007 Achso... Danke Dir!! :-) Das is aber ziemlich schei**! Jetzt kann ich meinn alten code nicht mehr verwenden. Hab schon verschiedene Sachen getestet... Es knallt fas immer in irgendeiner Funktion... Bitte, bitte. Gern geschehen, aber... Mann kann natürlich auch in den Projekteinstellungen den Zeichensatz wieder von Unicode auf Multibyte stellen. Für die Portierung eines bestehenden Projekts ist das sicher einfacher. Hast Du das gelesen und auch verstanden? :nett: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Filou Geschrieben 29. März 2007 Autor Teilen Geschrieben 29. März 2007 Danke Klotzkopp! Deinen Beitrag hatte ich überlesen. Ich habe nur den untersten Beitrag gelesen als ich die E-Mail bekam. Jetzt kalppts wieder :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.