Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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:

  • Autor
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 Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.