读书人

自定义拖放传自定义结构的有关问题

发布时间: 2012-01-14 20:02:35 作者: rapoo

自定义拖放,传自定义结构的问题。
1 开始拖放

COleDataSourceOleDataSrc;
HGLOBALhgDrop;
DROPFILES*pDropFiles;
FORMATETCFormat = {CF_HDROP/*|CF_TEXT*/, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL };

int BufSize = ;//

//Allocate memory from the heap for the DROPFILES struct.
hgDrop = GlobalAlloc(GHND, BufSize);
if(hgDrop == NULL)
{
return 0;
}

//锁
pDropFiles = (DROPFILES*)GlobalLock(hgDrop);
if(pDropFiles == NULL)
{
GlobalFree(hgDrop);
return 0;
}


TCHAR *pBuf = (TCHAR *)((LPBYTE(pDropFiles) + DropSize));
//把自定义的结构copy到pBuf的后面。


GlobalUnlock(hgDrop);
OleDataSrc.CacheGlobalData(CF_HDROP, hgDrop, &Format);

2 拖放结束
在OnDropFiles(HDROP hDropInfo)中得到结构。

发现得到的结构不对。

3 有知道的朋友说下:
3.1 可以这样传自定义结构么?
3.2 我发现 hDropInfo 这个地址,在开始拖放 和 拖放结束 中不一样。这是正常的么?

4 谢谢。





[解决办法]
OnDropFiles(HDROP hDropInfo)
怎么写的?
HGLOBAL hg = pDataObject-> GetGlobalData ( CF_HDROP );
这样看看

读书人网 >VC/MFC

热点推荐