Помогите пожалуйста реализовать Drag&Drop ссылок со страницы IE.
Т.е. я переопределил DragEnter, DragOver, DragLeave, Drop я незнаю как получить инфу о самой ссылке.
Здравствуйте, Николай, Вы писали:
Н>Помогите пожалуйста реализовать 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, Вы писали:
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>
Большое спасибо
Здравствуйте, 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. В мсдне только одна ссылка на этот идентиикатор, и ни где он в хедерах не прописан.
Хелп плиз горю.
Здравствуйте, Marble, Вы писали:
M>А всё что здесь написано не компилиться, CFSTR_INETURL — undeclared identifier. В мсдне только одна ссылка на этот идентиикатор, и ни где он в хедерах не прописан.
M>Хелп плиз горю.
файл ShlObj.h Смотреть CFSTR_INETURL
W или CFSTR_INETURL
A
#define CFSTR_SHELLURL TEXT("UniformResourceLocator")
#define CFSTR_INETURLA CFSTR_SHELLURL
#define CFSTR_INETURLW TEXT("UniformResourceLocatorW")
Здравствуйте, 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 чтоб он переходил по этой ссылке?