如何从内存中拷贝数据???

trazan 2005-05-09 02:07:20
在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);
}

是不是使用了指针影响到了数据的拷贝?
...全文
213 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
trazan 2005-05-09
  • 打赏
  • 举报
回复
GlobalAllocPtr和new分配内存有什么区别?
trazan 2005-05-09
  • 打赏
  • 举报
回复
sujer() :你的关于m_ClipboardDataSize有多大是什么意思?它是根据我给出的2个坐标来确定的啊

KevinWon(Kevin) :memcpy有什么问题吗?

--------------------------
另外,我已经解决了,不是逻辑上的问题或者是其他的,是我在画波形的时候X轴上除了100,在选取的时候没有乘以100,所以造成像是噪音的感觉。
KevinWon 2005-05-09
  • 打赏
  • 举报
回复
memcpy?
sujer 2005-05-09
  • 打赏
  • 举报
回复
m_ClipboardDataSize有多大?
tanhan 2005-05-09
  • 打赏
  • 举报
回复
up !
trazan 2005-05-09
  • 打赏
  • 举报
回复
我是用这个函数来播放声音文件的。m_soundio.PlayWave(&m_wv,m_lpClipboardData,m_ClipboardDataSize,(DWORD)GetView()->GetSafeHwnd());
播放原来的文件m_lpData是没有问题,但是播放m_lpClipboardData数据的时候就只有噪音。
  • 打赏
  • 举报
回复
数据拷贝就是通过指针进行的,不知道你到底是出了什么问题
auly403 2005-05-09
  • 打赏
  • 举报
回复
up

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧