2012-05-28 2 views
2

일부 데이터를 표시하기 위해 WINAPI Treeview를 사용하고 있습니다. TV 항목을 선택하면 선택한 TV_ITEM 텍스트를 가져와야합니다. 내가 정확한 값을 얻을 수없는 다음과 같은 코드받는 방법 treeview 항목의 텍스트

case WM_NOTIFY: 
switch(((LPNMHDR)lParam)->code) 
{ 
case TVN_SELCHANGED: 
    { 
     NMTREEVIEW* pnmtv = (LPNMTREEVIEW)lParam; 
     LPTSTR str = (pnmtv->itemNew.pszText); 
     MessageBox(hWnd, str,"load",MB_OK); 
    } 
    break;       
} 

를 사용하고, 나는 쓰레기 값의 어떤 종류를 얻었다. MessageBox에 특수 문자가 표시됩니다 (키보드에없는 문자)

선택한 항목 텍스트를 가져 오는 방법에 대해 도움을 줄 사람이 있습니까? 미리 감사드립니다.

답변

2

TVN_SELCHANGED에 대한 문서를 읽어 보셨습니까? pszText는 언급하지 않습니다. 당신은

TVITEM item; 
item.hItem = pnmtv->itemNew.hItem; 
item.mask = TVIF_TEXT; 
item.pszText = // allocate buffer 
item.cchTextMax = // length of buffer 
::SendMessage(hWnd, TVM_GETITEM, 0, (LPARAM)&item); 

필요하고 당신은 item.pszText에게

P.S.를 얻을 수 있습니다 Windows API로 작업하는 경우 Windows에서 문자열을 할당하고 관리하는 빈도를 얼마나 자주 보았습니까? 그것은 단지 일어나지 않습니다.

관련 문제