我有一個項目A(MFC DLG)包括該用戶控件(圖C#)MFC拖動到C#掉落
當我拖動從MFC DLG的項目(CTreeCtrl的)與C#圖表。
例如: http://i.stack.imgur.com/wkatk.png
和C#m_chartGantt_DragOver將被調用。但崩潰 「調試斷言失敗!...... Cmdtarg.cpp中43」
private void m_chartGantt_DragOver(object sender, DragEventArgs e)
private void m_chartGantt_DragDrop(object sender, DragEventArgs e)
我不知道如何解決它?或者它實際上無法工作? 任何意見將不勝感激。
這裏是MFC代碼。
void CDropButton::OnLButtonDown(UINT nFlags, CPoint point){
COleDataSource *pDataSource = new COleDataSource();
if (DoCopyData(pDataSource))
{
pDataSource->DoDragDrop(DROPEFFECT_COPY);
}
if (pDataSource)
{
delete pDataSource; **// error here!!**
}
}
BOOL CDropTreeCtrl::DoCopyData(COleDataSource *pDataSource)
{
char szText[] = _T("Here is some sample text that was copied using a COleDataSource object!");
HGLOBAL hMem = GlobalAlloc(GMEM_DDESHARE|GMEM_MOVEABLE, ::lstrlen (szText) +1);
if (hMem != NULL)
{
LPSTR pData = (LPSTR) ::GlobalLock(hMem);
::lstrcpy (pData, szText);
pDataSource->CacheGlobalData(CF_UNICODETEXT, hMem);
return TRUE;
}
return FALSE;
}
編輯
如果有幫助,這部分代碼覆蓋Cmdtarg.cpp中的第43行:
CCmdTarget::~CCmdTarget()
{
#ifndef _AFX_NO_OLE_SUPPORT
if (m_xDispatch.m_vtbl != 0)
((COleDispatchImpl*)&m_xDispatch)->Disconnect();
ASSERT(m_dwRef <= 1);
#endif
m_pModuleState = NULL;
}
ASSERT的代碼是什麼,請告訴我們失敗的條件。 – xMRi
對不起。一個好人,我再次編輯它。可以嗎? – user2894287