中间件底层,websocket

MakeTtsFileDlg.cpp 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. 
  2. // MakeTtsFileDlg.cpp: 实现文件
  3. //
  4. #include "pch.h"
  5. #include "framework.h"
  6. #include "MakeTtsFile.h"
  7. #include "MakeTtsFileDlg.h"
  8. #include "afxdialogex.h"
  9. #include "TtsInterface.h"
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #endif
  13. // 用于应用程序“关于”菜单项的 CAboutDlg 对话框
  14. class CAboutDlg : public CDialogEx
  15. {
  16. public:
  17. CAboutDlg();
  18. // 对话框数据
  19. #ifdef AFX_DESIGN_TIME
  20. enum { IDD = IDD_ABOUTBOX };
  21. #endif
  22. protected:
  23. virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
  24. // 实现
  25. protected:
  26. DECLARE_MESSAGE_MAP()
  27. };
  28. CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
  29. {
  30. }
  31. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  32. {
  33. CDialogEx::DoDataExchange(pDX);
  34. }
  35. BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
  36. END_MESSAGE_MAP()
  37. // CMakeTtsFileDlg 对话框
  38. CMakeTtsFileDlg::CMakeTtsFileDlg(CWnd* pParent /*=nullptr*/)
  39. : CDialogEx(IDD_MAKETTSFILE_DIALOG, pParent)
  40. , m_nBegin(0)
  41. , m_nEnd(0)
  42. , m_strFolder(_T(""))
  43. {
  44. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  45. }
  46. void CMakeTtsFileDlg::DoDataExchange(CDataExchange* pDX)
  47. {
  48. CDialogEx::DoDataExchange(pDX);
  49. DDX_Text(pDX, IDC_EDIT1, m_nBegin);
  50. DDV_MinMaxInt(pDX, m_nBegin, 0, INT_MAX);
  51. DDX_Text(pDX, IDC_EDIT2, m_nEnd);
  52. DDX_Text(pDX, IDC_MFCEDITBROWSE1, m_strFolder);
  53. DDX_Control(pDX, IDC_CHECK1, m_ckbox);
  54. DDX_Control(pDX, IDC_EDIT3, m_edit);
  55. }
  56. BEGIN_MESSAGE_MAP(CMakeTtsFileDlg, CDialogEx)
  57. ON_WM_SYSCOMMAND()
  58. ON_WM_PAINT()
  59. ON_WM_QUERYDRAGICON()
  60. ON_BN_CLICKED(IDC_BUTTON1, &CMakeTtsFileDlg::OnBnClickedButton1)
  61. ON_BN_CLICKED(IDC_BUTTON2, &CMakeTtsFileDlg::OnBnClickedButton2)
  62. END_MESSAGE_MAP()
  63. // CMakeTtsFileDlg 消息处理程序
  64. BOOL CMakeTtsFileDlg::OnInitDialog()
  65. {
  66. CDialogEx::OnInitDialog();
  67. // 将“关于...”菜单项添加到系统菜单中。
  68. // IDM_ABOUTBOX 必须在系统命令范围内。
  69. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  70. ASSERT(IDM_ABOUTBOX < 0xF000);
  71. CMenu* pSysMenu = GetSystemMenu(FALSE);
  72. if (pSysMenu != nullptr)
  73. {
  74. BOOL bNameValid;
  75. CString strAboutMenu;
  76. bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
  77. ASSERT(bNameValid);
  78. if (!strAboutMenu.IsEmpty())
  79. {
  80. pSysMenu->AppendMenu(MF_SEPARATOR);
  81. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  82. }
  83. }
  84. // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动
  85. // 执行此操作
  86. SetIcon(m_hIcon, TRUE); // 设置大图标
  87. SetIcon(m_hIcon, FALSE); // 设置小图标
  88. // TODO: 在此添加额外的初始化代码
  89. m_strFolder = "tts";
  90. UpdateData(0);
  91. return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
  92. }
  93. void CMakeTtsFileDlg::OnSysCommand(UINT nID, LPARAM lParam)
  94. {
  95. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  96. {
  97. CAboutDlg dlgAbout;
  98. dlgAbout.DoModal();
  99. }
  100. else
  101. {
  102. CDialogEx::OnSysCommand(nID, lParam);
  103. }
  104. }
  105. // 如果向对话框添加最小化按钮,则需要下面的代码
  106. // 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序,
  107. // 这将由框架自动完成。
  108. void CMakeTtsFileDlg::OnPaint()
  109. {
  110. if (IsIconic())
  111. {
  112. CPaintDC dc(this); // 用于绘制的设备上下文
  113. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
  114. // 使图标在工作区矩形中居中
  115. int cxIcon = GetSystemMetrics(SM_CXICON);
  116. int cyIcon = GetSystemMetrics(SM_CYICON);
  117. CRect rect;
  118. GetClientRect(&rect);
  119. int x = (rect.Width() - cxIcon + 1) / 2;
  120. int y = (rect.Height() - cyIcon + 1) / 2;
  121. // 绘制图标
  122. dc.DrawIcon(x, y, m_hIcon);
  123. }
  124. else
  125. {
  126. CDialogEx::OnPaint();
  127. }
  128. }
  129. //当用户拖动最小化窗口时系统调用此函数取得光标
  130. //显示。
  131. HCURSOR CMakeTtsFileDlg::OnQueryDragIcon()
  132. {
  133. return static_cast<HCURSOR>(m_hIcon);
  134. }
  135. void CMakeTtsFileDlg::OnBnClickedButton1()
  136. {
  137. // TODO: 在此添加控件通知处理程序代码
  138. UpdateData();
  139. CHAR szErrCode[MAX_PATH] = {0};
  140. memcpy(szErrCode, LPCTSTR(m_strFolder), m_strFolder.GetLength() * sizeof(CHAR));
  141. if (!ITtsInterface::getInstance().init(TTS_IBM, szErrCode, szErrCode)) {
  142. AfxMessageBox("tts初始化失败");
  143. }
  144. else {
  145. AfxMessageBox("tts初始化成功");
  146. }
  147. ITtsInterface::getInstance().setTTSParam(1, 50, 50);
  148. }
  149. void CMakeTtsFileDlg::OnBnClickedButton2()
  150. {
  151. // TODO: 在此添加控件通知处理程序代码
  152. UpdateData();
  153. if (m_ckbox.GetCheck() == 1) {
  154. AfxMessageBox("选中");
  155. CString content;
  156. m_edit.GetWindowText(content);
  157. CHAR szText[MAX_PATH] = { 0 };
  158. CHAR szAudioFile[MAX_PATH] = { 0 };
  159. memcpy(szText, LPCTSTR(content), content.GetLength() * sizeof(CHAR));
  160. if (!ITtsInterface::getInstance().string2Audio(szText, szAudioFile, MAX_PATH)) {
  161. AfxMessageBox("tts转败");
  162. }
  163. return;
  164. }
  165. for (int i = m_nBegin; i <= m_nEnd; ++i) {
  166. CString content;
  167. content.Format(" `vs40 您好, `dig`vs30 %04d `vs50 号话务员为您服务.", i);
  168. CHAR szText[MAX_PATH] = { 0 };
  169. CHAR szAudioFile[MAX_PATH] = { 0 };
  170. memcpy(szText, LPCTSTR(content), content.GetLength() * sizeof(CHAR));
  171. if (!ITtsInterface::getInstance().string2Audio(szText, szAudioFile, MAX_PATH)) {
  172. AfxMessageBox("tts转败");
  173. }
  174. }
  175. }