본문 바로가기

Windows/MFC

탐색기에서 Drag & Drop 을 받기

유니코드 문자열을 UTF-8으로 변환하기
WideCharToMultiByte 함수를 호출할 때 첫 번째 인자로 CP_UTF8을 지정하면 된다. UTF-8은 유니코드의 인코딩 스킴 중의 하나로 쉽게 말하자면 문자열 스트림에서 0을 빼고 표현하는 방법이라고 볼 수 있다.

탐색기에서 Drag & Drop 을 받기
프로그램의 초기화시에 DragAcceptFiles(hWnd, TRUE) 함수를 호출한다. 첫 번째 인자인 hWnd는 드롭의 타겟이 되는 윈도우의 핸들이다.
탐색기로부터 파일이 드롭되는 순간에 WM_DROPFILES 메시지가 날라온다. 이를 처리한다.

case WM_DROPFILES :
{
    POINT pt;

    //
    // 어느 위치에 드롭되었는지 그 항목을 알아낸다.
    //
    if (DragQueryPoint((HDROP)wParam, &pt))
    {
        UINT i = 0;
    
        //
        // 모두 몇 개의 파일이 드롭되었는지 알아낸다.
        // 만일 폴더가 드롭되었다면 폴더의 이름만 넘어온다.
        //
        UINT uCount = DragQueryFile((HDROP)wParam, 0xFFFFFFFF, NULL ,0);

        for(i = 0;i < uCount;i++)
        {
            //
            // 드롭된 파일의 이름을 알아온다.
            //
            DragQueryFile((HDROP)wParam, i, buffer ,255);

            //
            // 드롭된 파일 이름을 출력해본다.
            //
            MessageBox(hWnd, buffer, _T("File Name"), MB_OK);
        }
    }

    //
    // drag and drop 작업을 끝낸다.
    //
    DragFinish((HDROP)wParam);
    break;
}

//Drag&drop을 더 사용할 필요가 없어지면 DragAcceptFiles를 호출한다.
DragAcceptFiles(hWnd, FALSE);

'Windows > MFC' 카테고리의 다른 글

dll 에서 messagebox 사용하기  (0) 2013.10.02
CPU 정보 위치 REGISTRY  (0) 2013.10.02
Environments information path (registry)  (0) 2013.10.02
CButtonMenu  (0) 2013.10.02
global memory CreateFileMapping MapViewOfFile  (0) 2013.10.02