Как реализовать Drag&Drop ссылок со страницы IE?
От: Николай Украина http://www.nickolya.wallst.ru
Дата: 18.11.02 16:11
Оценка:
Помогите пожалуйста реализовать Drag&Drop ссылок со страницы IE.
Т.е. я переопределил DragEnter, DragOver, DragLeave, Drop я незнаю как получить инфу о самой ссылке.
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.
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>


Большое спасибо
Re[2]: Как реализовать Drag&Drop ссылок со страницы IE?
От: Marble  
Дата: 04.05.03 12:27
Оценка:
Здравствуйте, 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};

OO>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>                    if(hUrl)
OO>                    {
OO>                        CString    strUrl    =    (LPTSTR)hUrl;
                    
    
OO>                    }
OO>                    GlobalUnlock(hMem);

OO>}

OO>}


OO>


А не подкинет ли мне кто нибудь ссылку на пример этого. Во всем инете не могу ни чего найти ( Ни ужели ни кто ни когда такого не писал?

А всё что здесь написано не компилиться, CFSTR_INETURL — undeclared identifier. В мсдне только одна ссылка на этот идентиикатор, и ни где он в хедерах не прописан.
Хелп плиз горю.
Re[3]: Как реализовать Drag&Drop ссылок со страницы IE?
От: Mika Soukhov Stock#
Дата: 04.05.03 16:16
Оценка:
Здравствуйте, Marble, Вы писали:

M>А всё что здесь написано не компилиться, CFSTR_INETURL — undeclared identifier. В мсдне только одна ссылка на этот идентиикатор, и ни где он в хедерах не прописан.

M>Хелп плиз горю.

файл ShlObj.h Смотреть CFSTR_INETURLW или CFSTR_INETURLA

#define CFSTR_SHELLURL                      TEXT("UniformResourceLocator")
#define CFSTR_INETURLA                      CFSTR_SHELLURL
#define CFSTR_INETURLW                      TEXT("UniformResourceLocatorW")
Re[4]: Как реализовать Drag&Drop ссылок со страницы IE?
От: Marble  
Дата: 05.05.03 12:00
Оценка:
Здравствуйте, Mika Soukhov, Вы писали:

MS>Здравствуйте, Marble, Вы писали:


M>А всё что здесь написано не компилиться, CFSTR_INETURL — undeclared identifier. В мсдне только одна ссылка на этот идентиикатор, и ни где он в хедерах не прописан.

M>Хелп плиз горю.

MS>файл ShlObj.h Смотреть CFSTR_INETURLW или CFSTR_INETURLA


MS>
MS>#define CFSTR_SHELLURL                      TEXT("UniformResourceLocator")
MS>#define CFSTR_INETURLA                      CFSTR_SHELLURL
MS>#define CFSTR_INETURLW                      TEXT("UniformResourceLocatorW")
MS>


Ух разобрался, спасибо.
Если CFSTR_INETUR = CFSTR_INETURLA = CFSTR_SHELLURL, так и пишем:
RegisterClipboardFormat(CFSTR_SHELLURL);

Интересно, а как обратно сделать? Т.е. выташить из из своей программы и сделать доступным для IE чтоб он переходил по этой ссылке?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.