Hi,
I'm currently subclassing a listbox, with a view to turning it into a property viewer as featured in the Visual Basic IDE. The thing is, I've added a new message to the WindowProc which adds a property to the window and at this early stage that effectively means some basic formatting and using LB_ADDSTRING twice. It looks something like this:-
Code:
case PVM_INSERTITEM:
{
PVITEM *pvi = (PVITEM *)lParam;
char szTemp[32];
long ret;
ret = SendMessage(hwnd, LB_ADDSTRING, 0, (LPARAM)pvi->pszText);
// I do some formatting stuff here (tons of switch(...) :p)
ret = SendMessage(hwnd, LB_ADDSTRING, 0, (LPARAM)szTemp);
return TRUE;
}
The property's name is immediately added to the listbox (Because this window is a subclassed listbox, I'm sending it to itself). After the data is formatted into the szTemp string it's also added. However, while the first LB_ADDSTRING message seems to work properly (The name is visible in the listbox), the second one, while a valid string is passed to it, doesn't (Lovely big row of "í" ).
What is strange is that ret, which is supposed to give the index of the new string, doesn't appear to change between the two commands. Replacing "szTemp" with a string constant (such as "0") works, so I think the memory the string's occupying is being freed before the call is finished, some sort of reentrant problem. Help?