Re: Как реализовать Drag&Drop ссылок со страницы IE?
От: OlegO Россия http://www.mediachase.ru
Дата: 19.11.02 07:56
Оценка:
Здравствуйте, Николай, Вы писали:

Н>Помогите пожалуйста реализовать Drag&Drop ссылок со страницы IE.

Н>Т.е. я переопределил DragEnter, DragOver, DragLeave, Drop я незнаю как получить инфу о самой ссылке.

Примерно так:

static UINT _MC_CF_INETURL            =    RegisterClipboardFormat(CFSTR_INETURL);
static UINT _MC_CF_LINKDESCRIPTOR    =    RegisterClipboardFormat(CFSTR_FILEDESCRIPTOR);

...::OnDrop(..)
{

FORMATETC stFormatInetUrl = {_MC_CF_INETURL,NULL,DVASPECT_CONTENT,-1,TYMED_HGLOBAL};

if(pDataObject->IsDataAvailable(_MC_CF_INETURL,&stFormatInetUrl))
{
                    CString strLinkDscr;
                    // Get link Description [4/17/2002]
                    HGLOBAL    hMemLinkDscr    =    pDataObject->GetGlobalData(_MC_CF_LINKDESCRIPTOR);

                    if(hMemLinkDscr)
                    {
                        LPVOID  pData    =    GlobalLock(hMemLinkDscr);

                        if(!IsBadReadPtr(pData,sizeof(FILEGROUPDESCRIPTOR)))
                        {
                            FILEGROUPDESCRIPTOR   *pLinkDescriptor    =    (FILEGROUPDESCRIPTOR*)pData;

                            if(!IsBadReadPtr(pLinkDescriptor->fgd,sizeof(FILEDESCRIPTOR)))
                            {
                                strLinkDscr =  pLinkDescriptor->fgd[0].cFileName;
                                if(!strLinkDscr.IsEmpty())
                                    strLinkDscr = strLinkDscr.Left(strLinkDscr.GetLength()-4);
                            }
                        }
                        GlobalUnlock(hMemLinkDscr);
                    }

                    HGLOBAL    hMem    =    pDataObject->GetGlobalData(_MC_CF_INETURL);
                    long UrlSize    =    GlobalSize(hMem);
                    LPVOID   hUrl    =    GlobalLock(hMem);
                    
                    if(hUrl)
                    {
                        CString    strUrl    =    (LPTSTR)hUrl;
                    
    
                    }
                    GlobalUnlock(hMem);

}

}
С уважением, OlegO.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.