Re[2]: Как реализовать Drag&Drop ссылок со страницы IE?
От: Николай Украина http://www.nickolya.wallst.ru
Дата: 06.12.02 08:55
Оценка:
Здравствуйте, OlegO, Вы писали:

OO>Здравствуйте, Николай, Вы писали:


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

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

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


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

OO>...::OnDrop(..)
OO>{

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

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

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

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

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

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

OO>}

OO>}

OO>
OO>


Большое спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.