'CListCtrl'에 해당되는 글 2건

  1. 2006.09.05 Drag & Drop 되는 리스트컨트롤... 2
  2. 2006.09.05 리스트컨트롤 기본 사용법...




Drag & Drop 되는 리스트컨트롤


서브클래싱을 통해서 Drag&Drop이 되는 리스트컨트롤을 만드는 방법...

일단 서브클래싱을 하기 위해서 CListCtrl을 상속 받은 클래스 생성...

Drag&Drop을 할때 발생되는 메시지인 "WM_DROPFILES"과 관련된 함수인 "OnDropFiles()" 함수를 오버라이딩 한다...

"OnDropFiles()" 안에서 다음 과정을 통해 Drag&Drop된 파일, 폴더의 기본적인 정보를 얻을 수 있다...

일단 사용할 변수를 선언한다...
CHAR  szPath[1024];     // Drag&Drop된 파일, 폴더의 절대경로 저장
UINT  uiFileNum;            // Drag&Drop된 파일, 폴더의 갯수 저장

아래와 같은 방법으로 DragQueryFile() 함수를 이용해서 기본적인 정보를 얻어올 수 있다.
uiFileNum = DragQueryFile(hDropInfo, 0xffffffff, NULL, 0);
for ( UINT i = 0 ; i < uiFileNum ; i++ )
{
     DragQueryFile(hDropInfo, i, (LPTSTR)szPath, 1023);
      // 데이터 처리...
}

소스를 대략적으로 보면 소스의 첫줄처럼 DragQueryFile() 함수의 매개변수를 주면 Drag&Drop된 파일, 폴더의 갯수를 얻어올 수 있다. (MSDN에 그렇게 나온다 ㅡㅡ;)

이렇게 얻어온 갯수로 반복문을 돌면서 반복문 안쪽의 DragQueryFile() 함수처럼 매개변수를 줌으로써 Drag&Drop된 파일, 폴더의 절대경로를 얻어올 수 있다...

이렇게 얻어온 정보를 이용 다양한 데이터 처리가 가능하다...

이렇게 만든 클래스를 CListCtrl로 선언된 객체에서 바꾸고 리스트컨트롤의 속성에서 "Accept Files"를 TRUE로 설정함으로서 사용가능하다...


기본 내용 출처 : 데브피아 -> [짱!!선임] 파일 드래그&드롭 리스트 컨트롤입니다.
(사용언어 및 제작툴 : MFC / VS2003)

Posted by Gungume
,

- 스타일 -
CListCtrl.SetExtendedStyle( LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT );

- 칼럼 초기화 -
CListCtrl.InsertColumn(0, "칼럼명", LVCFMT_LEFT, 100, -1);
(인덱스, 칼람명, 정렬방향, 칼럼길이, 서브아이템 갯수)

- 데이터 삽입 -
CListCtrl.InsertItem(nCnt, "문자열");
(인덱스, 삽입될 문자열)

- 서브아이템 추가 -
CListCtrl.SetItem(nCnt, 1, LVIF_TEXT, "문자열", NULL, NULL, NULL, NULL);
(인덱스, 서브아이템 인덱스, 데이터 형식, 삽입될 문자열, ~~~~)

Posted by Gungume
,