프로그래밍/C,C++

[wxWidgets] wxTreeCtrl에서 File Drag & Drop 처리

채윤아빠 2012. 6. 8. 02:14
728x90
반응형

서론 

윈도우 탐색기 등에서 파일의 드래그 앤 드롭을 매우 많이 편리하게 사용하고 있습니다. 이번에는 새로 만든 컨트롤에서 파일의 드래깅 시작을 처리할 수 있는 방법에 대해서 알아보겠습니다.


 

드래그 앤 드롭(Drag and Drop)

파일에 대한 드래그 앤 드롭을 wxWidgets에서 처리하기 위해서는 "wx/dnd.h", "wx/dataobj.h" 헤더를 포함해야 하고, wxDropTargetwxDropSource를 만들어서 처리해 주어야만 합니다.


 

wxTreeCtrl에서 드래깅을 시작하기 위해서는 OnTreeBeginDrag 이벤트 핸들러를 구현해 주어야 합니다. OnTreeBeginDrag 이벤트 핸들러 내부에서 wxFileDropTarget wxDropSource를 만들어서 드래깅을 시작하고 결과를 받습니다. 파일에 대한 드래그 앤 드롭을 받기 위해서는 wxWindow Class의 DragAcceptFiles(true) 함수를 호출하여 파일에 대한 드래그 앤 드롭 이벤트를 받을 수 있도록 설정합니다. 파일을 선택하여 드래깅하여 컨트롤에 Drop을 하면 wxFileDropTarget.OnDropFiles 이벤트가 발생하므로, wxFileDropTarget Class를 상속받아서 OnDropFiles 이벤트 핸들러를 구현하여 드롭된 파일 목록을 받아서 처리를 하면 됩니다.


 

예제(Sample)

다음은 wxTreeCtrl에 파일 노드를 추가하고, 해당 파일에 대한 파일 드래깅을 구현한 예제 코드입니다.


 

결론

지금까지 파일 드래깅을 시작하는 방법에 대하여 살펴보았습니다. 다음 글에서 파일들을 드래깅하여 드롭하였을 때, 드래깅한 파일ㄷ르을 받아서 처리하는 방법에 대하여 알아보겠습니다. 


참고자료