2019-01-05 20:21:43 +08:00
|
|
|
|
// AudioDlg.cpp : ʵ<><CAB5><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
|
#include "2015Remote.h"
|
|
|
|
|
|
#include "AudioDlg.h"
|
|
|
|
|
|
#include "afxdialogex.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// CAudioDlg <20>Ի<EFBFBD><D4BB><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
IMPLEMENT_DYNAMIC(CAudioDlg, CDialog)
|
|
|
|
|
|
|
|
|
|
|
|
CAudioDlg::CAudioDlg(CWnd* pParent, IOCPServer* IOCPServer, CONTEXT_OBJECT *ContextObject)
|
2025-06-28 23:52:26 +08:00
|
|
|
|
: DialogBase(CAudioDlg::IDD, pParent, IOCPServer, ContextObject, IDI_ICON_AUDIO)
|
2019-01-05 20:21:43 +08:00
|
|
|
|
, m_bSend(FALSE)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_bIsWorking = TRUE;
|
2019-01-12 18:21:42 +08:00
|
|
|
|
m_bThreadRun = FALSE;
|
2025-06-28 23:52:26 +08:00
|
|
|
|
|
2019-01-05 20:21:43 +08:00
|
|
|
|
m_hWorkThread = NULL;
|
|
|
|
|
|
m_nTotalRecvBytes = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CAudioDlg::~CAudioDlg()
|
|
|
|
|
|
{
|
2019-01-12 18:21:42 +08:00
|
|
|
|
m_bIsWorking = FALSE;
|
|
|
|
|
|
while (m_bThreadRun)
|
|
|
|
|
|
Sleep(50);
|
2019-01-05 20:21:43 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CAudioDlg::DoDataExchange(CDataExchange* pDX)
|
|
|
|
|
|
{
|
|
|
|
|
|
CDialog::DoDataExchange(pDX);
|
|
|
|
|
|
DDX_Check(pDX, IDC_CHECK, m_bSend);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CAudioDlg, CDialog)
|
|
|
|
|
|
ON_WM_CLOSE()
|
2019-01-26 11:53:11 +08:00
|
|
|
|
ON_BN_CLICKED(IDC_CHECK, &CAudioDlg::OnBnClickedCheck)
|
2019-01-05 20:21:43 +08:00
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// CAudioDlg <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CAudioDlg::OnInitDialog()
|
|
|
|
|
|
{
|
|
|
|
|
|
CDialog::OnInitDialog();
|
|
|
|
|
|
|
|
|
|
|
|
SetIcon(m_hIcon,FALSE);
|
|
|
|
|
|
|
|
|
|
|
|
CString strString;
|
2025-06-28 23:52:26 +08:00
|
|
|
|
strString.Format("%s - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", m_IPAddress);
|
2019-01-05 20:21:43 +08:00
|
|
|
|
SetWindowText(strString);
|
|
|
|
|
|
|
|
|
|
|
|
BYTE bToken = COMMAND_NEXT;
|
|
|
|
|
|
m_iocpServer->OnClientPreSending(m_ContextObject, &bToken, sizeof(BYTE));
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD> <20>ж<EFBFBD>CheckBox
|
2025-03-30 20:18:18 +08:00
|
|
|
|
m_hWorkThread = CreateThread(NULL, 0, WorkThread, (LPVOID)this, 0, NULL);
|
2019-01-05 20:21:43 +08:00
|
|
|
|
|
2019-01-12 18:21:42 +08:00
|
|
|
|
m_bThreadRun = m_hWorkThread ? TRUE : FALSE;
|
|
|
|
|
|
|
2025-01-15 00:04:39 +08:00
|
|
|
|
GetDlgItem(IDC_CHECK)->EnableWindow(TRUE);
|
2019-01-26 11:53:11 +08:00
|
|
|
|
|
2019-01-05 20:21:43 +08:00
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
|
|
|
|
// <20>쳣: OCX <20><><EFBFBD><EFBFBD>ҳӦ<D2B3><D3A6><EFBFBD><EFBFBD> FALSE
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
DWORD CAudioDlg::WorkThread(LPVOID lParam)
|
|
|
|
|
|
{
|
|
|
|
|
|
CAudioDlg *This = (CAudioDlg *)lParam;
|
|
|
|
|
|
|
|
|
|
|
|
while (This->m_bIsWorking)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!This->m_bSend)
|
|
|
|
|
|
{
|
2025-02-06 04:15:34 +08:00
|
|
|
|
WAIT_n(This->m_bIsWorking, 1, 50);
|
2019-01-05 20:21:43 +08:00
|
|
|
|
continue;
|
|
|
|
|
|
}
|
|
|
|
|
|
DWORD dwBufferSize = 0;
|
|
|
|
|
|
LPBYTE szBuffer = This->m_AudioObject.GetRecordBuffer(&dwBufferSize); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
if (szBuffer != NULL && dwBufferSize > 0)
|
|
|
|
|
|
This->m_iocpServer->OnClientPreSending(This->m_ContextObject, szBuffer, dwBufferSize); //û<><C3BB><EFBFBD><EFBFBD>Ϣͷ
|
|
|
|
|
|
}
|
2019-01-12 18:21:42 +08:00
|
|
|
|
This->m_bThreadRun = FALSE;
|
|
|
|
|
|
|
2019-01-05 20:21:43 +08:00
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CAudioDlg::OnReceiveComplete(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_nTotalRecvBytes += m_ContextObject->InDeCompressedBuffer.GetBufferLength() - 1; //1000+ =1000 1
|
|
|
|
|
|
CString strString;
|
|
|
|
|
|
strString.Format("Receive %d KBytes", m_nTotalRecvBytes / 1024);
|
2019-01-26 11:53:11 +08:00
|
|
|
|
SetDlgItemText(IDC_TIPS, strString);
|
2024-12-26 17:07:43 +08:00
|
|
|
|
switch (m_ContextObject->InDeCompressedBuffer.GetBYTE(0))
|
2019-01-05 20:21:43 +08:00
|
|
|
|
{
|
|
|
|
|
|
case TOKEN_AUDIO_DATA:
|
|
|
|
|
|
{
|
2024-12-26 17:07:43 +08:00
|
|
|
|
Buffer tmp = m_ContextObject->InDeCompressedBuffer.GetMyBuffer(1);
|
|
|
|
|
|
m_AudioObject.PlayBuffer(tmp.Buf(), tmp.length()); //<2F><><EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2019-01-05 20:21:43 +08:00
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
// <20><><EFBFBD>䷢<EFBFBD><E4B7A2><EFBFBD>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD>
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CAudioDlg::OnClose()
|
|
|
|
|
|
{
|
2025-06-28 23:52:26 +08:00
|
|
|
|
CancelIO();
|
2025-06-29 03:29:35 +08:00
|
|
|
|
// <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (IsProcessing()) {
|
|
|
|
|
|
ShowWindow(SW_HIDE);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2019-01-05 20:21:43 +08:00
|
|
|
|
|
|
|
|
|
|
m_bIsWorking = FALSE;
|
|
|
|
|
|
WaitForSingleObject(m_hWorkThread, INFINITE);
|
2025-06-28 23:52:26 +08:00
|
|
|
|
DialogBase::OnClose();
|
2019-01-05 20:21:43 +08:00
|
|
|
|
}
|
2019-01-26 11:53:11 +08:00
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>
|
|
|
|
|
|
void CAudioDlg::OnBnClickedCheck()
|
|
|
|
|
|
{
|
|
|
|
|
|
UpdateData(true);
|
|
|
|
|
|
}
|