• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 290
  • Last Modified:

Question about COleDropTarget .

Environment: Win95 OSR2 & VC++5

Hi all,
     I have a question about using COleDropTarget to
make a drop-file support app .  My question is ,when a
drag-drop operation is over how to get the file's name
and path in the OnDrop() function ?
     Although I can handle the WM_DROPFILES to get
what I want , I think there also should be these infos in the COleDataObject type object come along with the OnDrop()
function .  

      I'v made below call :
CFile *pFile = pDataObject->GetFileData(CF_HDROP);

It seemed successful and return a value , but I can't get the file's name and path with :  pFile-> GetFilePath () .

      Did I do something wrong ? Can anyone tell me the correct method to do this ?

      Any idea will be greatly appreciated !
0
demonP
Asked:
demonP
  • 3
  • 2
1 Solution
 
demonPAuthor Commented:
Edited text of question
0
 
Andy_KeysCommented:
You use the DragQueryFile to get fileneme from the CF_HDROP struct.
0
 
demonPAuthor Commented:
Hi Andy,
   Thanks for your answer , could you explain it
more clearly ?
   DragQueryFile() can just accept HDROP handle as
parameter , how can I get it in OnDrop() function ?

0
 
Andy_KeysCommented:
Sorry I was a bit vague
try something like

FORMATETC fmte = {CF_HDROP,(DVTARGETDEVICE FAR *)NULL,DVASPECT_CONTENT,-1,TYMED_HGLOBAL };
STGMEDIUM medium;
unsigned int a, uiFiles


HRESULT hres = pDataObject->GetData(this->_pdtobj, &fmte, &medium);
if (SUCCEEDED(hres))
{
HDROP hdrop = medium.hGlobal;
uiFiles = DragQueryFile(hdrop, (UINT)-1, NULL, 0);
char szFile[MAX_PATH];
char szBuf[MAX_PATH*2+64];
//now loop to get the individual names
for(a =0; a < uiFiles; a++ )
{
DragQueryFile(hdrop, a, szFile, sizeof(szFile));
.
}
}
GlobalFree(medium.hGlobal);
This may need a bit of tiding but I hope it helps

0
 
demonPAuthor Commented:
Hi Andy,
     I have tried your code , it worked very well .
But it seemed I found a relatively simple method to
do it .

    I just called:
hDropFile = (HDROP)GetGlobalData(CF_HDROP);

Now the handle can be used by DragQueryFile() and
everything is OK ,too .

    Thank you for the answer !

Regards,
Demon.

0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now