在窗体加上个按钮单击事件:
代码如下:
void CTestClipboardDlg::OnBnClickedButtonCopy()
{
// 用户写入数据到剪贴板
CString tmp = "我是好人";
HANDLE hGlobal = GlobalAlloc(GHND, tmp.GetLength() + 1); char* pBuf=(char*)GlobalLock(hGlobal);
strcpy(pBuf,tmp.GetBuffer(tmp.GetLength()));
if(!::OpenClipboard(GetSafeHwnd())){ AfxMessageBox( "无法打开剪贴板" );
} if(!::EmptyClipboard()){
AfxMessageBox( "无法清除剪贴板" );
} if (::SetClipboardData(CF_TEXT,hGlobal) == NULL){ AfxMessageBox( "无法将数据复制到剪贴板当中" );
::CloseClipboard();
} ::CloseClipboard();
::GlobalUnlock(hGlobal);
::GlobalFree(hGlobal); /*为什么不能释放??*/
}
hGlobal释放后,在执行一次就出错,不释放后就正确.
但不释放不会出现内存泄露吗?
为什么释放一次后就执行出错??
}
代码如下:
void CTestClipboardDlg::OnBnClickedButtonCopy()
{
// 用户写入数据到剪贴板
CString tmp = "我是好人";
HANDLE hGlobal = GlobalAlloc(GHND, tmp.GetLength() + 1); char* pBuf=(char*)GlobalLock(hGlobal);
strcpy(pBuf,tmp.GetBuffer(tmp.GetLength()));
if(!::OpenClipboard(GetSafeHwnd())){ AfxMessageBox( "无法打开剪贴板" );
} if(!::EmptyClipboard()){
AfxMessageBox( "无法清除剪贴板" );
} if (::SetClipboardData(CF_TEXT,hGlobal) == NULL){ AfxMessageBox( "无法将数据复制到剪贴板当中" );
::CloseClipboard();
} ::CloseClipboard();
::GlobalUnlock(hGlobal);
::GlobalFree(hGlobal); /*为什么不能释放??*/
}
hGlobal释放后,在执行一次就出错,不释放后就正确.
但不释放不会出现内存泄露吗?
为什么释放一次后就执行出错??
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货