1. 프로그램의 초기화시에 DragAcceptFiles(hWnd, TRUE) 함수를 호출한다. 첫 번째 인자인 hWnd는 드롭의 타겟이 되는 윈도우의 핸들이다.
    혹은 다이얼로그(윈도우)의 리소스에서 Accept Files 을 true로 둔다.
  2. 탐색기로부터 파일이 드롭되는 순간에 WM_DROPFILES 메시지가 날라온다. 이를 처리한다.
    혹은 해당 다이얼로드(윈도우)의 클래스에서 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, "File Name", MB_OK);
    			}
    		}
    		// drag and drop 작업을 끝낸다.
    		DragFinish((HDROP)wParam);
    		break;
    	}
    
  3. Drag&drop을 더 사용할 필요가 없어지면 DragAcceptFiles를 호출한다.
    	DragAcceptFiles(hWnd, FALSE);




+ Recent posts