win32 sdk에서 ListView 목록 컨트롤 사용

ListView 컨트롤을 사용하려면 공공 컨트롤 라이브러리를 초기화해야 하기 때문에 초기화할 때InitCommon Controls () 함수를 호출해야 합니다.
만약 호출에 링크 오류가 발생하면, 이 함수를 가진 라이브러리 파일을 연결하지 않았음을 의미합니다.해당 헤더와 라이브러리 DLL은 각각 #include comctl32.lib comctl32.dll 
다음은CreateWindow 방법이나CreateWindowEx 방법을 이용하여ListView 컨트롤을 만들고 필요한 스타일을 설정해야 한다(LVS REPORT | LVS SHOWSELALWAYS 등).
ListView에서 가장 흔히 볼 수 있는 동작은 삽입항과 열입니다. 여기에 두 개의 구조체가 필요합니다: LVITEM과 LVCOLUMN
두 구조체 정의는 다음과 같습니다.
typedef struct _LVITEM { 
    UINT mask; 
    int iItem; 
    int iSubItem; 
    UINT state; 
    UINT stateMask; 
    LPTSTR pszText; 
    int cchTextMax; 
    int iImage; 
    LPARAM lParam;
#if (_WIN32_IE >= 0x0300)
    int iIndent;
#endif
#if (_WIN32_IE >= 0x560)
    int iGroupId;
    UINT cColumns; // tile view columns
    PUINT puColumns;
#endif

typedef struct _LVCOLUMN { 
    UINT mask; 
    int fmt; 
    int cx; 
    LPTSTR pszText; 
    int cchTextMax; 
    int iSubItem; 
#if (_WIN32_IE >= 0x0300)
    int iImage;
    int iOrder;
#endif
} LVCOLUMN, *LPLVCOLUMN; 

} LVITEM, *LPLVITEM;

이 두 구조체가 있으면, 우리는 SendMessage를 이용하여ListView 컨트롤에 메시지와 열을 추가할 수 있다.우리는 각각 아래 두 개의 메시지를 통해 항목과 열을 추가합니다.SendMessage(hButton, LVM_INSERTITEM, 0, (LPARAM)&item); SendMessage(hButton, LVM_INSERTCOLUMN, 0, (LPARAM)&colmn); LVM_INSERTITEM은 추가 항목 LVM을 나타냅니다.INSERTCOLUMN은 추가 열을 나타냅니다.
기타 일부 조작은 msdn을 보면서 배울 수 있습니다.
			//    
			LV_COLUMN   lvc;
			lvc.mask = LVCF_TEXT | LVCF_WIDTH;
			for(i = 0 ; i < 5 ; i ++)
			{
				lvc.cx = 50 ;
				lvc.pszText = _T("test") ;
				ListView_InsertColumn(ListView , i , &lvc );
			}


			//   

			LVITEM lvitem;
			lvitem.mask=LVIF_TEXT;
			lvitem.cchTextMax=MAX_PATH;
			lvitem.iSubItem=0;
                        lvitem.pszText = TEXT("");
			lvitem.iItem=0;//     , 0  
			
			ListView_InsertItem(Detail_List,&lvitem);
			for(i = 0 ;i < 5 ;i ++)
				ListView_SetItemText(ListView,lvitem.iItem,i,TEXT(_T("test"));
		}

좋은 웹페이지 즐겨찾기