Thinking Different




지난 시간에 대화상자에 파일 끌어놓기 기능을 구현하였는데 이번 시간에는 리스트컨트롤에 파일을 끌어놓기하여 파일 경로를 추가하는 기능을 구현하겠습니다.

 

리스트 컨트롤에 파일 끌어놓기 기능을 추가하기 위해서는 해당 기능을 포함하는 클래스를 재정의해서 구현하면 간단히 할 수 있습니다.

 

 

 

 

1. 클래스 마법사를 실행하고 MFC 클래스를 추가합니다. 재정의할 클래스는 CListControl 클래스를 선택하면 됩니다. 클래스명은 자신이 하고 싶은 이름으로 하시면 됩니다. 여기서는 CMyListCtrl 로 지정하였습니다.

 

 

 

2. 생성된 CMyListCtrl 클래스를 확인해보면 아무것도 없습니다. 간단히 상속 재정의한 클래스입니다.

여기서 클래스마법사를 실행하고 WM_DROPFILES 기능을 추가합니다.

 

 

 

3. 아래와 같이 재정의된 OnDropFiles() 함수에 아래와 같이 작성합니다.

 

 

 

4. 다이얼로그에 리스트 컨트롤을 추가하고 리스트컨트롤 속성 - 동작 - 파일허용을 TRUE로 설정합니다.

그 다음 리스트 컨트롤 변수명을 지정합니다.

 

 

5. 다이얼로그 헤더파일에서 우리가 재정의한 리스트 컨트롤 클래스로 이름을 변경합니다.

 

상단에 재정의한 리스트컨트롤 헤더파일을 추가하고 변경해줍니다.

 

 

 

6. OnInitDialog() 함수에 아래 3줄을 추가한다.

 

ChangeWindowMessageFilter(0x0049, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);
DragAcceptFiles();

 



7. 컴파일 후 실행하여 리스트컨트롤에 파일을 끌어와서 놓아주면 아래와 같이 추가되는 것을 확인할 수 있습니다.