티스토리 뷰
◈ 개발 환경
1. OS 환경 : WindowXP
2. 사용 언어 : VC++ 6.0
3. 개발에 필요한 환경
1) Dialog Properties -> Extended Styles 탭에서 Accept files 항목을 선택합니다.
선택합니다.
3) MFC ClassWizard -> Message Maps 탭에 Messages : 에서 WM_DROPFILES를 선택합니다.
◈ 프로그램 설명
1. 기존의 기능 설명
1) AcceptFile 을 이용하여 드래그 앤 드랍을 통하여 파일 또는 폴더의 경로명을 얻어 리스트에
추가하는 기능입니다.
2. Step2에서 추가된 기능설명
1) 드래그 앤 드랍만 한 파일 및 폴더의 경로뿐만 아니라, 폴더안에 있는 존재하는 하위폴더의
파일들까지 경로명을 얻어 리스트에 추가하는 기능을 구현했습니다.
2) 다른 프로그램을 선택해도 UseAcceptFile의 실행화면이 사라지지 않게 최상위 윈도우로
설정하였습니다.
◈ 중요 소스 설명
CDialog에서 계승받은 UseAcceptFileDlg클래스에 GetFilesFromDirectory()함수에서 파일 및 폴더의
경로뿐만 아니라, 폴더안에 있는 존재하는 하위폴더의 파일들까지 경로명을 얻기 위한 코드입니다.
void CUseAcceptFileDlg::GetFilesFromDirectory(const char *parm_path)
{ CString path, file_path; WIN32_FIND_DATA file_data; path.Format("%s\\*.*", parm_path); // 지정된 경로에 존재하는 모든 파일에 대한 목록을 구성하고 해당 정보의 핸들값을 얻는다. // 만약 해당 경로에 파일이나 자식 폴더가 존재하지 않는다면 INVALID_HANDLE_VALUE 값을 // 반환한다. 그리고 이 함수가 성공적으로 목록을 구성한 경우에는 file_data 변수에 // 구성된 목록중에서 첫번째 존재하는 파일의 정보를 넣어준다. HANDLE search_handle = FindFirstFile(path, &file_data); if(INVALID_HANDLE_VALUE != search_handle){ // 파일 목록을 성공적으로 구성한 경우.. do { if(FILE_ATTRIBUTE_DIRECTORY & file_data.dwFileAttributes){ // "." 이나 ".."은 무시한다. if(file_data.cFileName[0] != '.'){ // 현재 정보가 폴더인 경우, file_data.cFileName에 폴더이름이 들어있다. file_path.Format("%s\\%s", parm_path, file_data.cFileName); GetFilesFromDirectory(file_path); } } else { // 현재 정보가 파일인 경우, file_data.cFileName에 파일이름이 들어있다. file_path.Format("%s\\%s", parm_path, file_data.cFileName); m_drop_path_list.AddString(file_path); } // 구성된 목록에서 다음 파일의 정보를 file_data에 복사하여 가져온다. // 더이상의 정보가 없다면 FindNextFile 함수는 0을 반환한다. } while(FindNextFile(search_handle, &file_data)); // 구성된 파일 목록을 삭제한다. FindClose(search_handle); } } |
Continue...(추가적으로 코드가 필요하신 경우에는 소스를 다운받아 참조하세요.)
◈ 참고 사항
MFC ClassWizard에 Message Maps 탭에서 Messages에는WM_DROPFILES가 등록되어 있으나,
다이얼로그의 Dialog Properties에 Extended Styles 탭에서 Accept files 항목을 선택하지 않으면
메시지가 발생하지 않습니다.
최상위 윈도우로 만들려면, Dialog Properties에 More Styles탭에서 System modal를 선택하시면
됩니다.
'Study > Language >' 카테고리의 다른 글
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을 이용한 드래그& 드랍 예제 Step-1 (0) | 2009.09.10 |
- Total
- Today
- Yesterday
- watchface
- Developing on AWS
- AndroidWear
- gdg watchfacehack
- 리눅스
- 리눅스2.6
- 해커톤
- 창조경제혁신센터
- WatchFaceHack
- 릴레이대회본선
- 창의과학교구
- GDG
- 리눅스 커널 2.6
- 안드로이드폰
- Linux
- 하쭈서쭈
- GDG SSU
- 숭실대
- 윤재석
- gdgssu
- 소설네트워크2
- yjaeseok
- 안드로이드
- 리눅스 커널 2.6 구조와 원리
- jaeseokyoon
- 핸즈온머신러닝
- 그래비트랙스
- Jake Yoon
- jakeyoon
- 서버개발자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |