히히...
답변은 상당히 오랜만이군요...
드래그앤 드롭으로 화일을 받아오는거...
다른 방법이 있을지 어떤지는 모르겠는데...
전 이렇게 해결했어요...
책에서 마우스 메시지를 메시지맵으로 처리하는 걸 보고
약간 응용해서 만든건데...
제 프로그램에서는 이상없이 잘 돌아가더군요...
헤더에다가
void virtual __fastcall WMDropFiles(TWMDropFiles &Msg);
요렇게 메시지 핸들러를 선언하고...
그리고...
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_DROPFILES, TWMDropFiles, WMDropFiles);
END_MESSAGE_MAP(TForm)
이렇게 메시지맵을 정의한다음...
DragAcceptFiles(Handle, true);
이 부분을 폼 생성부분에 넣구요...
물론 Handle은 파일을 드래그해서 드롭할 폼의 핸들이겠죠...
void __fastcall TMainForm::WMDropFiles(TWMDropFiles &Msg)
{
char FilePath[MAX_PATH];
DragQueryFile((HANDLE)Msg.Drop, 0, FilePath, 100);
// 받은 화일명으로 처리할 부분 ...
}
이렇게 메시지 핸들러를 만들지요...
넘 설명이 없었나?
DragAcceptFiles는 API함수로, 화일을 드래그해서 드롭할 수 있도록
윈도(폼)를 등록하는 역할을 하지요.
그리구 DragQueryFile은 드롭되어서 넘어온 화일이름을 받아오는 역할
을 합니다.
메시지맵은 아시겠지요...
히히...
API함수 두개면 되는 겁니다...
넘 무식하게 설명했나?
저두 API함수에서 보고 해본 거니까 자세한건 API레퍼런스 같은데를
참고해 보면 될겁니다.
부산에서 해도해도 넘 무식한 임펠리테리였습니다.
|