首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

VS2008中SINT是什么数据类型?解决方案

2013-11-09 
VS2008中SINT是什么数据类型?我一直用VS2005,网上的代码有SINT数据类型,是否就是int? //申请内存空间,存放

VS2008中SINT是什么数据类型?
我一直用VS2005,网上的代码有SINT数据类型,是否就是int?

 //申请内存空间,存放波形数据
 SINT *pDataTemp = (SINT *)malloc(sizeof(SINT));
 memset(pDataTemp,0,sizeof(SINT));



//波形绘制函数
void DrawWave(FILE * WavFile,int SumPot)
{
     //获取客户窗口大小位置
     CWnd *LeftWnd = GetDlgItem(IDC_WAVEL);
     CRect leftrect;
     LeftWnd->GetClientRect(&leftrect);

     CWnd *RightWnd = GetDlgItem(IDC_WAVER);
     CRect rightrect;
     RightWnd->GetClientRect(&rightrect);

     int leftHeight = leftrect.Height(),leftWidth = leftrect.Width();
     int rightHeight = rightrect.Height(),rightWidth = rightrect.Width();

     //将客户窗口背景色设置为黑色
     CClientDC leftdc(LeftWnd);
     leftdc.FillSolidRect(&leftrect,RGB(0,0,0));
     CClientDC rightdc(RightWnd);
     rightdc.FillSolidRect(&rightrect,RGB(0,0,0));

     //画中线,白色
     CPen pen(PS_SOLID,0,RGB(255,255,255));
     leftdc.SelectObject(&pen);
     leftdc.MoveTo(0,leftHeight/2);
     leftdc.LineTo(leftWidth,leftHeight/2);

     rightdc.SelectObject(&pen);
     rightdc.MoveTo(0,rightHeight/2);
     rightdc.LineTo(rightWidth,rightHeight/2);

     //选择绿色实线画笔,并将画笔移动到起点
     pen.DeleteObject();
     pen.CreatePen(PS_SOLID,1,RGB(0,255,0));
     leftdc.SelectObject(&pen);
     leftdc.MoveTo(0,leftHeight/2);

     //申请内存空间,存放波形数据
     SINT *pDataTemp = (SINT *)malloc(sizeof(SINT));
      memset(pDataTemp,0,sizeof(SINT));

     //画左声道波形
     int xl,yl;

     for(int i=0;i<SumPot;i++)
     {
          //读取波形数据进入内存临时空间
          fseek(WavFile,44+i*4,SEEK_SET);
          fread(pDataTemp,sizeof(SINT),1,WavFile);
          //将波形数据存入数组中
          leftData[i] = *pDataTemp + 32768;

          //计算画图比例
          yl = leftHeight/2*abs(*pDataTemp)/32768;
          xl = leftWidth*i/SumPot;

          if(*pDataTemp>=0)
               leftdc.LineTo(xl,leftHeight/2-yl);
          else
               leftdc.LineTo(xl,leftHeight/2+yl);
     }

     //选择绿色画笔作为右声道图形颜色,并将画笔移动至起点
     int xr,yr;
     rightdc.SelectObject(&pen);
     rightdc.MoveTo(0,rightHeight/2);

     //画右声道波形
     for(int i=0;i<SumPot;i++)
     {
          //读取波形数据进入内存临时空间
          fseek(WavFile,46+i*4,SEEK_SET);
          fread(pDataTemp,sizeof(SINT),1,WavFile);
          //将波形数据存入数组中
          rightData[i] = *pDataTemp + 32768;

          //计算画图比例
          yr= rightHeight/2*abs(*pDataTemp)/32768;
          xr = rightWidth*i/SumPot;

          if(*pDataTemp>=0)
               rightdc.LineTo(xr,rightHeight/2-yr);
          else
               rightdc.LineTo(xr,rightHeight/2+yr);
      }
     free(pDataTemp);

}





参数说明:

WavFile是一个指向FILE文件类型的指针,可以用WavFile = fopen("文件路径","r")获得,SumPot是总采样点数,可以通过WAV文件头中的信息得到,函数中的IDC_WAVEL何IDC_WAVER分别是左右声道的绘图控件ID。




本代码在windows7下的VS2008编译环境中编译通过。



[解决办法]
可能是SHORT
左声道2个字节,右声道2个字节 一个采样数据占4字节

[解决办法]
VS2008下没有SINT,应该是自定义的
[解决办法]
右键-〉查看定义。。。

热点排行