Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Ich füge verschiedene Nodes in ein TreeView ein, manchmal wird jedoch beim Namen der letzte Buchstabe abgeschnitten, was ich mir nicht erklären kann.


HTREEITEM CMyClass::AddFolder(MyComInterface::IFolder* pFolder, HTREEITEM hParent)
{
TV_INSERTSTRUCT tvinsert;
memset(&tvinsert, 0, sizeof(tvinsert));
tvinsert.hParent = hParent;
tvinsert.hInsertAfter = TVI_SORT;
tvinsert.item.mask = TVIF_TEXT | TVIF_PARAM | TVIF_STATE;
BSTR name = NULL;
pFolder->get_Name(&name);
tvinsert.item.pszText = CString(name).GetBuffer();
tvinsert.item.lParam = (LPARAM)pFolder;
m_FolderList.push_back(pFolder);
return TreeView_InsertItem(GetDlgItem(IDC_TREE1), &tvinsert);
}[/PHP]

Ursprünglich hab ich CW2A benutzt um den BSTR name in einen LPTSTR umzuwandeln, allerdings kam da in vielen Fällen Zeichensalat raus. Mit dem Umweg über den CString passiert das nicht mehr und wenn ich den Code im Debugger durchgehe steht in name und pszText das Gleiche drin mit allen Buchstaben.

Im TreeView wird aber wie gesagt manchmal der letzte Buchstabe abgeschnitten :confused:

Geschrieben

Der Zeiger, den CString::GetBuffer liefert, ist nur solange gültig, wie der dazugehörige CString lebt. Wenn du TreeView_InsertItem aufrufst, ist er also schon ungültig.

Den BSTR leakst du übrigens.

Geschrieben
  Klotzkopp schrieb:
Der Zeiger, den CString::GetBuffer liefert, ist nur solange gültig, wie der dazugehörige CString lebt. Wenn du TreeView_InsertItem aufrufst, ist er also schon ungültig.

Den BSTR leakst du übrigens.

Stimmt da fehlt noch ein SysFreeString für den BSTR.

Das andere verstehe ich aber nicht. Müsste der CString nicht erst ungültig werden wenn die Funktion verlassen wird? Also nach dem return wenn der String schon ins TreeView eingefügt wurde?

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Weiterlesen  

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...