闲的没事,偶然发现一个可以将文本朗读出来的MFC应用程序。
甚是好奇,决定琢磨琢磨源码自己实现一遍。
下面便是我整理的开发这个小巧的文本朗读程序的步骤,步骤比较详细,可能有点繁琐,不过适合新手借此尝试体验MFC的魅力(以下示例基于VS2012完成)
示例源码及需要的资料在此处下载:
http://download.csdn.net/detail/pengz0807/9070099
首先建立一个名为Speaker的基于对话框的MFC应用程序:
删除原有控件后如下图所示:
在工具箱添加编辑框控件和按钮控件:
打开编辑框属性,更改ID为IDC_TEXT:
继续更改编辑框属性:
打开按钮控件属性,更改按钮控件ID为IDC_SPEAK:
继续更改按钮属性:
试运行一下:
为编辑框控件IDC_TEXT添加控件变量m_UserText:
为按钮控件IDC_SPEAK添加消息处理函数,双击按钮控件即可自动添加如下消息处理函数:
将资料包里的头文件”ComAutoInit.h”和”TextSpeaker.h” 放到…\Speaker\Speaker目录下:
然后将这两个头文件添加到项目头文件里:
打开头文件SpeakerDlg.h,添加以下语句包含头文件”ComAutoInit.h”和”TextSpeaker.h”:
#include "ComAutoInit.h"
#include "TextSpeaker.h"
打开类向导,为CSpeakerDlg类添加成员变量m_TextSpeaker,类型为gds::CTextSpeaker:
添加完成后如下图所示:
打开SpeakerDlg.cpp,为函数voidCSpeakerDlg::OnBnClickedSpeak() 添加如下代码:
//获取编辑框里用户输入的文字
staticconst int cchMaxUserTextLen = 20000;//可朗读文字最大长度
WCHARszUserText[cchMaxUserTextLen + 1];
m_UserText.GetWindowText(szUserText,cchMaxUserTextLen);
//用一个方便的字符串实例包裹用户输入的文字
CStringWtext(szUserText);
if(text.Trim().IsEmpty())
{
//编辑框里用户输入的文字不能为空
AfxMessageBox(_T("编辑框为空!"),MB_OK|MB_ICONERROR);
return;
}
//朗读文字
m_TextSpeaker.Speak(text);
如下图所示:
到此基本已经完成,试运行如图所示:
接下来添加一些小部件:
添加静态文本框,可以写上自己的签名哦~
设置窗口最小化:
Ok 运行~
大功告成!快去享受成功的喜悦吧!~~
可能需要的资料在此处下载:
http://download.csdn.net/detail/pengz0807/9070099