【VC开源代码栏目提醒】:网学会员鉴于大家对VC开源代码十分关注,论文会员在此为大家搜集整理了“AVDlg.cpp”一文,供大家参考学习
#include "stdafx.h"
#include "rtccore.h"
#include "AVDConf.h"
#include "AVDlg.h"
#include "defines.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAVDlg dialog
CAVDlg::CAVDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAVDlg::IDD, pParent)
{
m_pParentClient = NULL;
//{{AFX_DATA_INIT(CAVDlg)
//}}AFX_DATA_INIT
}
void CAVDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAVDlg)
DDX_Control(pDX, IDC_SPEAKERMUTE, m_cSpeakerMute);
DDX_Control(pDX, IDC_SPEAKER_BAR, m_cSpeakerLevel);
DDX_Control(pDX, IDC_MIC_BAR, m_cMicLevel);
DDX_Control(pDX, IDC_SPEAKER_SLIDER, m_cSpeakerSlider);
DDX_Control(pDX, IDC_MICMUTE, m_cMicMute);
DDX_Control(pDX, IDC_SPEAKER_TEXT, m_cSpeakerText);
DDX_Control(pDX, IDC_MIC_TEXT, m_cMicText);
DDX_Control(pDX, IDC_MIC_SLIDER, m_cMicSlider);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAVDlg, CDialog)
//{{AFX_MSG_MAP(CAVDlg)
ON_NOTIFY(NM_OUTOFMEMORY, IDC_SPEAKER_SLIDER, OnSpeakerSlider)
ON_NOTIFY(NM_OUTOFMEMORY, IDC_MIC_SLIDER, OnMicSlider)
ON_BN_CLICKED(IDC_SPEAKERMUTE, OnSpeakermute)
ON_BN_CLICKED(IDC_MICMUTE, OnMicmute)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CAVDlg::OnOK()
{
if (m_pSession)
{
HRESULT hr = m_pSession->Terminate(RTCTR_NORMAL);
}
CDialog::OnOK();
}
void CAVDlg::OnCancel ()
{
return;
}
void CAVDlg::OnSpeakerSlider(NMHDR* pNMHDR, LRESULT* pResult)
{
long lPos = m_cSpeakerSlider.GetPos ();
DoVolume (RTCAD_SPEAKER, lPos);
*pResult = 0;
}
void CAVDlg::OnMicSlider(NMHDR* pNMHDR, LRESULT* pResult)
{
long lPos = m_cMicSlider.GetPos ();
DoVolume (RTCAD_MICROPHONE, lPos);
*pResult = 0;
}
void CAVDlg::OnMicmute()
{
if (m_cMicMute.IsDlgButtonChecked (IDC_MICMUTE) != 0)
m_cMicSlider.EnableWindow (FALSE);
else
m_cMicSlider.EnableWindow (TRUE);
DoMute (RTCAD_MICROPHONE);
}
void CAVDlg::OnSpeakermute()
{
if (IsDlgButtonChecked (IDC_SPEAKERMUTE) != 0)
m_cSpeakerSlider.EnableWindow (FALSE);
else
m_cSpeakerSlider.EnableWindow (TRUE);
DoMute (RTCAD_SPEAKER);
}
HRESULT CAVDlg::SetParentClient(IRTCClient *pClient)
{
m_pParentClient = pClient;
ShowAudio();
return S_OK;
}
HRESULT CAVDlg::DoMute(RTC_AUDIO_DEVICE enDevice)
{
IRTCClient * pClient = NULL;
BOOL fMute = FALSE;
HWND hWnd = NULL;
HRESULT hr;
if (m_pParentClient == NULL)
return -1;
fMute = IsDlgButtonChecked ( (enDevice == RTCAD_SPEAKER) ? IDC_SPEAKERMUTE : IDC_MICMUTE);
hr = m_pParentClient->put_AudioMuted(enDevice, fMute ? VARIANT_TRUE : VARIANT_FALSE);
if (FAILED(hr))
{
return hr;
}
return S_OK;
}
HRESULT CAVDlg::DoVolume(RTC_AUDIO_DEVICE enDevice, long lVolume)
{
HRESULT hr;
if (m_pParentClient == NULL)
return -1;
hr = m_pParentClient->put_Volume(enDevice, lVolume);
if (FAILED(hr))
{
return hr;
}
return S_OK;
}
HRESULT CAVDlg::ShowAudio()
{
VARIANT_BOOL fMute = FALSE;
long lVolume = 0;
long lMediaCaps = 0;
HRESULT hr;
if (m_pParentClient == NULL)
return -1;
hr = m_pParentClient->get_MediaCapabilities(&lMediaCaps);
if (FAILED(hr))
{
return hr;
}
if (lMediaCaps & RTCMT_AUDIO_RECEIVE)
{
hr = m_pParentClient->get_AudioMuted(RTCAD_SPEAKER, &fMute);
if (FAILED(hr))
{
return hr;
}
m_cSpeakerMute.SetCheck ( fMute ? BST_CHECKED : BST_UNCHECKED);
hr = m_pParentClient->get_Volume(RTCAD_SPEAKER, &lVolume);
if (FAILED(hr))
{
return hr;
}
m_cSpeakerSlider.SetPos (lVolume);
}
if (lMediaCaps & RTCMT_AUDIO_SEND)
{
hr = m_pParentClient->get_AudioMuted(RTCAD_