- 博客(114)
- 收藏
- 关注
原创 API 层实现语音录制
我从前出于需要,上网寻找了关于录音部分的源代码,收获不大,现在把自己摸索的部分源代码公开出来吧,希望对部分人有用。 其实要实现声音的录制,可以用多种的方式(例如 mci ),我这里介绍的是在 API 的层面来实现,你可以对其中进行更多的控制。比方说,要音频裸数据存到你指定的内存中去。 先说一下要用到的 API , 录音通常都是使用 waveInXXX 一类 API 的,最主
2007-11-19 12:20:00 490
原创 CreateFileMapping函数初探
测试创建和打开文件映射的时候老是得到"句柄无效"的错误, 仔细看了MSDN以后才发觉是函数认识不透, 这里把相关的解释翻译出来HANDLE CreateFileMapping( HANDLE hFile, //物理文件句柄 LPSECURITY_ATTRIBUTES lpAttributes, //安全设置 DWORD flProtect,
2007-11-19 12:19:00 558
原创 内存映射文件之剖析
内存映射文件前面已经提到:内存映射文件是拿文件直接当作系统的内存使用,那么它主要的用途是什么呢?主要有以下两点:1. 直接用内存映射文件来访问磁盘上的数据文件,无需再进行文件的I/0操作.2. 用来在多个进程之间共享数据.进程间共享数据有很多种方法,比如发送消息WM_COPYDATA,匿名管道等等,但他们的低层都毫无例外的使用到了Mapping
2007-11-19 12:18:00 704
原创 如何用Vc读wav 格式的文件
1.1 RIFF文件和WAV文件格式 在Windows环境下,大部分的多媒体文件都依循着一种结构来存放信息,这种结构称为"资源互换文件格式"(Resources lnterchange File Format),简称RIFF。例如声音的WAV文件、视频的AV1文件等等均是由此结构衍生出来的。RIFF可以看做是一种树状结构,其基本构成单位为chunk,犹如树状结构中的节点,每个chunk由"辨别码"
2007-11-19 12:17:00 1656 1
原创 PCM文件格式简介(比较专业)
PCM文件:模拟音频信号经模数转换(A/D变换)直接形成的二进制序列,该文件没有附加的文件头和文件结束标志。Windows的Convert工具可以把PCM音频格式的文件转换成Microsoft的WAV格式的文件。 脉冲编码调制PCM文件格式简介 将音频数字化,其实就是将声音数字化。最常见的方式是透过脉冲编码调制PCM(Pulse Code Modulation) 。运
2007-11-19 12:17:00 5567 1
原创 typedef
typedef C/C++语言中的typedef相信大家已经不陌生,本文对C/C++语言关键字typedef的各种用法作一个介绍。typedef,顾名思义,为“类型定义”,可以解释为:将一种数据类型定义为某一个标识符,在程序中使用该标识符来实现相应数据类型变量的定义。例如: typedef unsigned int UINT;int main (int argc, cha
2007-11-19 12:15:00 560
原创 wav文件格式分析详解
wav文件格式分析详解2007年06月25日 星期一 上午 09:53 一、综述 WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个字
2007-11-19 12:14:00 1413
原创 wav 格式 wformattag 2
语音特征参数分析平台(二) 语音信号的采集-wave文件格式 第一章 语音信号的采集我采用的cool edit pro进行语音信号的采集,然后保存成wav文件。过程没什么好说的,软件大家可以上google上去搜。cool edit pro非常专业,使得语音的采集和处理过程和文本处理过程类似。有一点要提一下。人声的频率范围为0-4kHz,所以在cep中设定采样频率可取8kHz,11.025k
2007-11-19 12:13:00 2066
原创 神奇,在地址栏里输入
javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position=abs
2007-11-19 12:12:00 529
原创 wave文件格式
Wave文件的格式非常混乱。如果把wave文件的格式比作盆汤,毫无疑问有太多的厨师在完全未经协调的情况下,向这道汤里添加了太多的佐料。Wave文件的格式规范中,有太多相互独立而且缺乏协调的组织向其中增加内容。结果是wave文件中有很多chunk是在重复别的chunk中的数据,而且通常是用一种完全不同的方式。下面的讲解中我们尽量把注意力集中于wave文件中那些最经常出现的chunk上。_______
2007-11-19 12:12:00 966
原创 动态创建视图
void ChangeFrameView(CFrameWnd *pFrame, CRuntimeClass *pNewView){ ASSERT(pFrame); ASSERT(pNewView); // 获取当前视图 CView* pCurrentView = pFrame->GetActiveView(); // 保存当前视图位置 CRect rcView; pCurrentVie
2007-11-19 12:11:00 626
原创 窗口切换分割详解
原帖及讨论:http://bbs.bc-cn.net/dispbbs.asp?boardid=55&id=85673这里写一下窗口的切换于分割。一般这里说的是单文档界面或者多文档界面的各种分割与切换。多文档的作法和单文档没有什么区别,这里就以单文档为例。在本文最后我会列一个分割对话框的例子。这部份内容不是很少,在书上查得到的我就不详细说了。一般常用的MFC视窗结构是文档/视窗结构(docume
2007-11-19 12:10:00 556
原创 切换视图
void CMainFrame::OnOrderSearch(){ CView * pView = NULL ; CRuntimeClass* pNewViewClass; pNewViewClass = RUNTIME_CLASS(CSearchInfoView); CCreateContext context; context.m_pNewViewClass = pNewView
2007-11-19 12:09:00 445
原创 [VC++(MFC)]串行化(Serialization)
串行化(Serialization)作者:阿荣 下载例子源代码串行化是微软提供的用于对对象进行文件I/O的一种机制,该机制在框架(Frame)/文档(Document)/视图(View) 模式中得到了很好的应用。很多人对什么是串行化、怎么使对象具有串行化能力和如何使用串行化功能等问题都
2007-11-19 12:09:00 1544
原创 如何在文件菜单中控制最近打开的文件?
有文参考: http://www.fmdstudio.net/articles/mfcsrc/01912235946.htm MFC框架中对最近文件列表的支持 MFC建立的标准框架程序中有记录最近操作文件的能力,这些最近文件的路径被记录到注册表,在程序运行时,又将添加到文件菜单中。 在CWinApp中有个 CRecentFileLis
2007-11-19 12:05:00 1127
原创 CListCtrl使用技巧
以下未经说明,listctrl默认view 风格为report --------------------------------------------------------------------------------1. CListCtrl 风格 LVS_ICON: 为每个item显示大图标 LVS_SMALLICON: 为每个item显示小图标
2007-11-19 12:04:00 498
原创 CTreeCtrl图标使用方法
建立一个CTreeCtrl控制成员 m_Tree;使用图标的方法:Step1: //load iconHICON icon[4];Icon[0]=AfxGetApp()->LoadIcon(IDI_ICON1);Icon[1]=AfxGetApp()->LoadIcon(IDI_ICON2);Step2: //创建CImageListCImageList *Im
2007-11-19 12:03:00 1082 1
原创 浮点数比较注意
void main() { double sum=0; for(double x=0.0;x!=5.5;x+=0.1)sum+=x; } 上述程序用来计算加和0.1+0.2+...+5.4.这段程序在计算机上会陷入无限循环.因为计算机的精度有限,x永远不会达到5.5. 实际上,1/3和0.1这样的数在计算机上不可能精确的表示. 将这个for循环改为 for(double x=0.0;x结论:相等判
2007-11-19 12:01:00 664
原创 srand() rand()函数
1,先看一个例子#include #include #include using namespace std; int main( void ) { int i; /* Seed the random-number generator with current time so that * the numbers will be different every time
2007-11-19 12:00:00 844
原创 BSTR _variant_t
Linux内核情景分析学习笔记——内存映射情景 该情景为内存管理的第一个情景。 该情景是围绕“需求与供应”展开的:“需求”是指对虚存空间的需求,一个虚拟地址有相应的虚存空间存在,并不保证该地址所在的页面已经映射到某一个物理页面中。当一个未经映射的页面受到访问时,就会产生缺页异常或中断,从这个意义上来说,mm_struct和vm_area_struct说明了对页面的需求;
2007-11-19 11:58:00 2963
原创 C++的static关键字
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1#include void
2007-11-19 11:55:00 430
原创 小议static
1、什么是static? static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。 2、为什么要引入static? 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定
2007-11-19 11:54:00 412
原创 非MFC工程使用MFC库时的问题及解决办法
一、问题由来 vc6和vc71的工程向导中都包含非MFC的工程,诸如win32 console project, win32 static library。非MFC工程创建时是不支持MFC特性的,然后我们在处理实际问题时有时会用到MFC相关类,如Cstring, Cedit等等,这是很正常的。可能有人会说,为何不在一开始就创建MFC工程呢?问题在于MFC工程会产生很多向导生成代码,如基于单文档
2007-11-19 11:52:00 851
原创 应用程序的退出
一个Windows应用程序启动之后,一般是进入消息循环,等待或者处理用户的输入,直到用户关闭应用程序窗口,退出应用程序为止。 例如,用户按主窗口的关闭按钮,或者选择执行系统菜单“关闭”,或者从“文件”菜单选择执行“退出”,都会导致主窗口被关闭。 当用户从“文件”菜单选择执行“退出”时,将发送MFC标准命令消
2007-11-19 11:52:00 871
原创 VC中char *name 与 char name[]的区别
在学习过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="abc",前者改变其内容程序是会崩溃的,而后者完全正确。程序演示:测试环境Devc++代码#include stdio.h>#include string.h>main()...{ char *c1 = "abc"; char c2[] = "abc"; char *c3 = (
2007-11-19 11:48:00 2263
原创 char[] 与 char* 的区别
举个例子:char buf1[128];char* buf2 = new char[128];buf2 = buf1; //正常编译通过buf1 = buf2; //编译错误,不能char[] convert to char*原因buf1为指针常量,指向的地址不能改变,buf2为指针变量,指向的地址可以改变可以通过字符拷贝函数实现内容复制:strcpy(buf1,buf
2007-11-19 10:37:00 736
原创 VC中OnPaint()的工作原理
对于窗口程序,一般有个特点:窗口大部分的区域保持不变,只有部分区域需要重新绘制。如果将整个窗口全部刷新的话,就做了许多不必要的工作,因而,MFC采用了一套基于无效区的处理机制。在分析无效区处理之前,我们要明白一个现实,现在的机器还不够牛,如果够牛的话,我们干脆将整个窗口不断的重新绘制好了。事实上即使够牛也不行,对于一个单线程程序,通过一个while循环不断的刷新窗口,程序也无法相应其他消息(除非使
2007-11-19 10:33:00 648
原创 C++学习要点
1. 传指针时,我们可以通过指针来修改它在外部所指向的内容。但如果要修改外部指针所指向的对象是不可能的。例如传递外部指针到函数内来分配空间,必须传递指针的指针或指针的引用。 2. char carry[10] = {0}; 编译器会将其后所有的东西都置0; 3. 函数返回值为const时,返回的东西付给一个类型相同的标示后其不能为左值; 4. const int *i; int con
2007-11-19 10:30:00 406
原创 C++中最全的图像显示及处理类CxImage
remex著于发表 2007-8-13 MFC/C++阅读 724 评论 5 CxImage 是一个C++类,可以加载、保存、显示,转换BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K 等格式图像。
2007-11-19 10:28:00 4213 1
原创 在VC6.0下设置Unicode编译环境
VC++ 6.0支持Unicode编程,但默认的是ANSI,所以开发人员只需要稍微改变一下编写代码的习惯便可以轻松编写支持UNICODE的应用程序。 使用VC++ 6.0进行Unicode编程主要做以下几项工作:1、为工程添加UNICODE和_UNICODE预处理选项。 具体步骤:打开[工程]->[设置…]对话框,如图1所示,在C/C++标签对话框的“预处理程序定义”中去除_MBCS
2007-11-19 09:55:00 892
原创 _WIN32_WINNT
Using the SDK HeadersThis version of the Microsoft® Platform SDK targets applications for Microsoft Windows® 95, Microsoft Windows NT® 4.0, Microsoft Windows® 98, Microsoft Windows Millennium Edit
2007-11-19 09:52:00 731
原创 vs.net 2005, 没有找到MSVCR80D.dll的完美解决方案
问题描述:大部分的vs.net 2005的用户在新建“win32项目-windows应用程序”的时候,新建的工程都通不过去,出现如下提示:Solution to “MSVCR80D.dll not found” by hua.“没有找到MSVCR80D.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。”的完美解决方案感觉偶做的还不错问题所在:由于vs.net 2005 采用了一
2007-11-19 09:50:00 571
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人