티스토리 뷰

◈ 실행 화면
 
 
 
 

개발 환경

 

1. OS 환경   : WindowXP

2. 사용 언어 : VC++ 6.0

3. 개발에 필요한 환경

   1) Dialog Properties -> Extended Styles 탭에서 Accept files 항목을 선택합니다. 

 

 

   2) MFC ClassWizard -> Class Info 탭에 Advanced options 항목에서 Message filter: Window

       선택합니다.

 

 

  3) MFC ClassWizard -> Message Maps 탭에 Messages : 에서 WM_DROPFILES를 선택합니다.
 

 

◈ 프로그램 설명

 

 1. AcceptFile 을 이용하여 드래그 앤 드랍을 통하여 파일 또는 폴더의 경로명을 얻어 리스트에

    추가하는 기능입니다.

 

 

◈ 중요 소스 설명

 

CDialog에서 계승받은 UseAcceptFileDlg클래스에 OnDropFiles()함수에서 드롭된 파일 및 폴더의

경로명을 리스트에 추가하는 코드입니다.

 
    void CUseAcceptFileDlg::OnDropFiles(HDROP hDropInfo)
    {
        if(hDropInfo != NULL){
            // 드랍된 파일의 갯수를 얻는다.
            int count = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0), file_name_size = 0;
            char *p_name = NULL;
              
            for(int i = 0; i < count; i++){
                // 드랍된 파일 또는 폴더 이름에 대한 길이를 얻는다.
                file_name_size = DragQueryFile(hDropInfo, i, NULL, 0);
                
                // 이름을 저장할 메모리를 할당한다.
                p_name = new char[file_name_size + 1];
               
                // 드랍된 파일 또는 폴더의 이름을 얻는다.
                file_name_size = DragQueryFile(hDropInfo, i, p_name, file_name_size + 1);
               
                // 이름을 리스트에 추가한다.
                m_drop_path_list.AddString(p_name);
                
                // 이름을 얻기 위해 사용한 메모리를 해제한다.
                delete[] p_name;
            }
        }
       
        CDialog::OnDropFiles(hDropInfo);
    }
 

 

Continue...(추가적으로 코드가 필요하신 경우에는 소스를 다운받아 참조하세요.)

 

 

◈ 참고 사항

 

 MFC ClassWizard에 Message Maps 탭에서 Messages에는 WM_DROPFILES가 등록되어 있으나,

 다이얼로그의 Dialog Properties에 Extended Styles 탭에서 Accept files 항목을 선택하지 않으며

 메시지가 발생하지 않습니다.

 


출처: http://www.tipssoft.com/bulletin/board.php?bo_table=update&wr_id=146&page=8 (팁스소프트)

'Study > Language &gt;' 카테고리의 다른 글

Export Gridview to Excel in C#  (0) 2009.10.19
Dev C++ 인스톨파일  (0) 2009.10.18
OnDropFiles()  (0) 2009.09.16
MFC 다이얼로그기반 종료방지코드  (0) 2009.09.14
AcceptFile을 이용한 드래그&드랍 예제 - Step2  (0) 2009.09.10
댓글