Konvwertierung von CString in LPSTR

langer1801

Erfahrenes Mitglied
Hallo,
ich habe ein Projekt mit geteiltem Fenster, in dem die linke Ansicht vom Typ CTreeView ist (Explorer-Stil).
Dort will ich jetzt Items einfügen und dann SubItems. Das klappt auch gut, solange ich Bezeichnungen vom Typ char verwende. Die Bezeichnungen, die verwenden will, sind aber vom Typ CString. Hier der Codeschnipsel, in dem ich den Text zuweise.
Code:
   item.mask = TVIF_TEXT | TVIF_PARAM;
   buffer=((CDaten*)pDoc->m_Daten[i])->sName+", "+((CDaten*)pDoc->m_Daten[i])->sVorname;
   item.pszText = buffer;
   item.iIntegral = 1;
   item.lParam = 0;
Leider bekomme ich dann immer die Fehlermeldung "CString kann nicht in LPSTR konvertiert werden". Ich hab schon alles mögliche probiert, aber immer meckert der Compiler. Wie kann ich das Problem lösen? Gibts da ein Konvertierungsmakro? In der MSDN hab ich nichts gefunden.

Mfg

langer
 
Du könntest über GetBuffer von CString arbeiten. Nicht vergessen, danach wieder ReleaseBuffer aufrufen, sonst gibt's ein Leck.

Über dieses LPSTR-Problem habe ich mich auch schon geärgert. Der Grund dafür ist vermutlich, dass man dasselbe Struct auch zum Auslesen benutzen kann, und da nutzt ein LPCSTR natürlich nichts.
 
Das sollte auch mit einem doppelten Cast funktionieren:

Code:
CString strText;

item.pszText = (LPSTR)(LPCSTR)strText;
 
Zurück