2015-01-19 5 views
0

ListView_GetItem()을 호출하고 FALSE (오류)를 반환하는 Windows 응용 프로그램이 있습니다. 아래 코드를 참조하십시오. 전달 된 값은 sel_index의 경우 10 줄이고 Col의 경우 1 줄입니다. buf는 충분히 큽니다. GetLastError()는 0을 반환합니다.
ListView_GetItem 매크로의 Windows 온라인 설명서에서 오류 또는 가능한 오류 코드의 원인을 알 수 없습니다. 누군가가 잘못된 것일 수 있다고 말해 줄 수 있습니까?
나는 당신이 초기화되지 않은 분야의 대부분을 왼쪽ListView_GetItem()은 FALSE를 반환합니다.

hList = CreateWindow(WC_LISTVIEW, "", WS_CHILD | WS_BORDER | LVS_REPORT | WS_HSCROLL | WS_VSCROLL | WS_EX_CLIENTEDGE, ... etc 


{ 
    LV_ITEM Item;    // List view item structure 
    char buf[10]; 

    Item.mask=LVIF_TEXT; 
    Item.pszText = buf;  // buffer 
    Item.iItem = sel_index; // selected line 
    Item.iSubItem = Col;  // want subitem 
    if(!ListView_GetItem(hList, &Item)) 
    { 
     PrintErr("\r\nGetSubItem failed, error=%d",GetLastError()); 
     return ""; 
    } 
    return (Item.pszText); 
} 
+0

대부분의 필드가 초기화되지 않은 채로 있습니다. 'cchTextMax'를 설정하지 않으면 특히 심각합니다. struct :'LV_ITEM Item = {0};'을 초기화하고'cchTextMax'를'10'으로 설정하십시오. –

+0

바로 그 문제였습니다. 정말 고마워요!. 코멘트 대신 답을 적어 주시면 문제를 해결 된 것으로 표시 할 수 있습니까? – Alfred

답변

0

와의 ListView를 만들었습니다. cchTextMax을 설정하지 않으면 가장 큰 상처입니다.

LV_ITEM Item = {0}; 

10cchTextMax을 설정 같은 구조체를 초기화한다.

Item.pszText = buf; 
Item.cchTextMax = 10; 
관련 문제