我自己实现了IDataObject,IDropSourceFORMATETC fmtetc = {CF_UNICODETEXT, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
STGMEDIUM stgmed = {TYMED_HGLOBAL, {0}, 0};
stgmed.hGlobal = StringToHandle (L"Hello, World!", -1);if (CreateDataObject(&fmtetc, &stgmed, 1, &pDataObject) != S_OK)
{
return FALSE;
}
if( CreateDropSource(&pDropSource) != S_OK )
{
return FALSE;
}
DWORD dwResult = DoDragDrop(pDataObject,pDropSource,DROPEFFECT_MOVE|DROPEFFECT_COPY,&dwEffect);
if( dwResult == DRAGDROP_S_DROP )
{
if( dwEffect == DROPEFFECT_MOVE )
{
}
}
pDropSource->Release();
pDataObject->Release();
ReleaseStgMedium(&stgmed);我准备好了,IDataObject对象,和IDropSource对象,然后调用 DoDragDrop,如上所示,但是一旦我松开鼠标左键,DoDragDrop便会出现非法地址访问,但那句“hello world”确实传递成功了,鼠标释放时,所在窗口里显示了“hello world”。不知哪里除了问题?
STGMEDIUM stgmed = {TYMED_HGLOBAL, {0}, 0};
stgmed.hGlobal = StringToHandle (L"Hello, World!", -1);if (CreateDataObject(&fmtetc, &stgmed, 1, &pDataObject) != S_OK)
{
return FALSE;
}
if( CreateDropSource(&pDropSource) != S_OK )
{
return FALSE;
}
DWORD dwResult = DoDragDrop(pDataObject,pDropSource,DROPEFFECT_MOVE|DROPEFFECT_COPY,&dwEffect);
if( dwResult == DRAGDROP_S_DROP )
{
if( dwEffect == DROPEFFECT_MOVE )
{
}
}
pDropSource->Release();
pDataObject->Release();
ReleaseStgMedium(&stgmed);我准备好了,IDataObject对象,和IDropSource对象,然后调用 DoDragDrop,如上所示,但是一旦我松开鼠标左键,DoDragDrop便会出现非法地址访问,但那句“hello world”确实传递成功了,鼠标释放时,所在窗口里显示了“hello world”。不知哪里除了问题?
解决方案 »
- 组合列表框怎么初始化值?
- 向好心高手们请教!感激万分。。。
- 比如一个网页的URL:http://it.topcool.net/ShowThreadMessage.do?m=1&threadID=20715&forumID=10&threadPage=1
- 键盘消息
- 一个基本 COM 问题,希望高手给个解答,谢了,百分相送
- 怎样把Dos程序重定向到windows窗口?
- COblist使用中的问
- 大家能说说在用VC++新建项目的时候有一栏是"生成的类"里面各个类有什么用吗随便选行吗?
- mfc 编写网络程序,发送数据时,如何定义通信协议啊?
- listcontrol控件鼠标响应
- MFC线程的奇怪表现??
- 求助关于简单C语言的
pDropSource->Release();
pDataObject->Release();
ReleaseStgMedium(&stgmed);
DWORD dwResult = DoDragDrop(pDataObject,pDropSource,DROPEFFECT_MOVE|DROPEFFECT_COPY,&dwEffect);
这里就崩溃了,字符串确实传递过去了。