如何从内存中拷贝数据???
在Doc中定义了HPSTR m_lpData;用于存放声音数据,用m_lpData=(HPSTR)GlobalAllocPtr(
GMEM_MOVEABLE|GMEM_SHARE,dwDataSize);分配内存。用mmioRead读取数据。我想这样从m_lpData这块内存中的一个区域内copy一段数据到一个m_lpClipboardData临时内存区域中。
void CEmotionRecognizerDoc::OnEditCopy()
{
// TODO: Add your command handler code here
//区域中包括2边界
//
DWORD m_startPoint;
m_index=m_index+1;//用鼠标选取的2个点确定的区域差值。points[0],points[1]中
//存放的是选取区域的2点,是通过鼠标左键的down,up来取得的。
//这个m_index是全局变量。
//下面的判断鼠标左键确定的2点的前后位置
if((points[1].x)>(points[0].x))
{
m_startPoint=(DWORD)(points[0].x);//得到左面那点的X坐标值,以便后面确
//定m_lpData的偏移量
// m_index=points[1].x-points[0].x+1;
}
else
{
m_startPoint=(DWORD)(points[1].x);
// m_index=points[0].x-points[1].x+1;
}
//确定选取区域实际大小,m_index是坐标差,m_wv.nBlockAlign每个坐标的块大小
m_ClipboardDataSize=(DWORD)(m_index*m_wv.nBlockAlign);
//从坐标得到实际偏移量
DWORD nTmp=m_startPoint*m_wv.nBlockAlign;
//分配内存
m_lpClipboardData=(HPSTR)GlobalAllocPtr(GMEM_MOVEABLE|GMEM_SHARE,m_ClipboardDataSize);
if(!m_lpClipboardData)
{
//分配内存出错
m_lpClipboardData=NULL;
}
//从m_lpData偏移处开始拷贝选取区域的数据
memcpy(m_lpClipboardData,m_lpData+nTmp,m_ClipboardDataSize);
}
是不是使用了指针影响到了数据的拷贝?