自定义拖放,传自定义结构的问题。
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 );
这样看看