Veröffentlicht 28. März 200718 j 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
28. März 200718 j 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
28. März 200718 j 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.
28. März 200718 j 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
28. März 200718 j 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.
28. März 200718 j 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.
28. März 200718 j 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...
28. März 200718 j 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:
29. März 200718 j Danke Klotzkopp! Deinen Beitrag hatte ich überlesen. Ich habe nur den untersten Beitrag gelesen als ich die E-Mail bekam. Jetzt kalppts wieder :-)
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.