[출처 : http://crowback.tistory.com/247 ]
제가 구현하던 프로그램에 File을 Drag & Drop하여 파일을 열도록 하는 기능을 추가한적이 있습니다.
구현할 때는 별문제 없이 구현하였고 테스트를 마쳤는데...
다음주 쯤이었나 릴리즈 버젼에서 파일을 열려고 드래그를 해보니 안 되는겁니다!!!
으아니!!!! 왜 안 되는거야!
알아보니까 출처 블로그에서 적은 내용처럼, 관리자 권한으로 얻은 Application은 일반적인 권한의 프로세스가 메시지를 날릴경우 필터링을 거칩니다.
그리고 차단당하는것 같습니다.
그래서 다음과 같이 처리합니다.
드래그 & 드롭에 관한 메시지는 다음과 같은 메시지 일부를 필터에 추가하여 줌으로써, 기능이 동작하도록 설정할 수 있습니다.
(MSDN 의 Remark 에 따르면 안전한 프로세스 관리를 위하여, 필요한 메시지만 필터하도록 권고 하므로
기능이 잘 안된다고 루프를 돌려서 모든 메시지를 추가하는 일이 없도록 주의 하십시오.)
ChangeWindowMessageFilter (WM_DROPFILES, MSGFLT_ADD);
ChangeWindowMessageFilter (WM_COPYDATA, MSGFLT_ADD);
ChangeWindowMessageFilter (0x0049, MSGFLT_ADD);
이 코드를 InitDialog, Init하는 부분에서 넣어주시면 잘 동작합니다. 저 같은 경우는 View의 Init부분에 넣어줬습니다.
이와 비슷한 기능을 구현하시는 분들은 참고하세요ㅎ
[출처 : http://crowback.tistory.com/247 ]
'코드^학습 > 메모한 지식' 카테고리의 다른 글
[C++] InternetReadFile API로 파일 다운로드 (2) | 2016.07.05 |
---|---|
[C++]SHBrowseForFolder함수 (1) | 2016.07.05 |
[MFC] GetPrivateProfileString 함수 사용 (0) | 2016.05.10 |
[MFC] MDI의 구조 (4) | 2016.05.02 |
[MFC] MDI 리본UI, APP에서 비활성 View 포인터 얻기 (0) | 2016.04.06 |