亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? avdlg.cpp

?? 一個簡單的視頻會議VC++MFC工程文件
?? 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_MICROPHONE, &fMute);

        if (FAILED(hr))
        {
            return hr;
        }

        m_cMicMute.SetCheck ( fMute ? BST_CHECKED : BST_UNCHECKED );
   
        hr = m_pParentClient->get_Volume(RTCAD_MICROPHONE, &lVolume);

        if (FAILED(hr))
        {
            return hr;
        }

		m_cSpeakerSlider.SetPos (lVolume);
    }
    return S_OK;
}


HRESULT CAVDlg::ShowVideo(RTC_VIDEO_DEVICE enDevice, BOOL fShow)
{
    IVideoWindow * pVid = NULL;
    long lMediaCaps = 0;
    HWND hWnd = NULL;
    HRESULT hr;

    if (m_pParentClient == NULL)
	{
		return -1;
	}

    hr = m_pParentClient->get_MediaCapabilities(&lMediaCaps);

    if (FAILED(hr))
    {
        return hr;
    }

	hr = m_pParentClient->get_IVideoWindow(enDevice, &pVid);

    if (FAILED(hr))
    {
        return hr;
    }

	if (enDevice == RTCVD_PREVIEW)
    {          
        fShow = fShow && (lMediaCaps & RTCMT_VIDEO_SEND);
        m_fShowPrev = fShow;
        hWnd = m_hPrevVideoParent;

        ::ShowWindow(m_hPrevVideoParent, fShow ? SW_SHOW : SW_HIDE);

        HRGN hRegion;

        if (fShow)
        {
            POINT rgPoints[6] =
                    { 0, 0,
                      0, m_lRecvHeight,
                      m_lRecvWidth - m_lPrevWidth, m_lRecvHeight,
                      m_lRecvWidth - m_lPrevWidth, m_lRecvHeight - m_lPrevHeight,
                      m_lRecvWidth, m_lRecvHeight - m_lPrevHeight,
                      m_lRecvWidth, 0
                    };

            hRegion = CreatePolygonRgn(rgPoints, 6, ALTERNATE);
        }
        else
        {
            hRegion = CreateRectRgn(0, 0, m_lRecvWidth, m_lRecvHeight);
        }

        ::SetWindowRgn(m_hRecvVideoParent, hRegion, TRUE);
    }
    else
    {
        fShow = fShow && (lMediaCaps & RTCMT_VIDEO_RECEIVE);
        m_fShowRecv = fShow;
        hWnd = m_hRecvVideoParent;

        ::ShowWindow(m_hRecvVideoParent, SW_SHOW);
    }

    if ( fShow == TRUE )
    {
        pVid->put_WindowStyle( WS_CHILD |
                               WS_CLIPCHILDREN |
                               WS_CLIPSIBLINGS );
        
        pVid->put_Owner( (OAHWND)hWnd );

        RECT rc;
        ::GetClientRect(hWnd, &rc );  
        
        pVid->SetWindowPosition(
            rc.left,
            rc.top,
            rc.right,
            rc.bottom
            );

        pVid->put_Visible(-1);        
    }       

    SAFE_RELEASE(pVid);    

    return S_OK;
}

HRESULT CAVDlg::DeliverMedia(long lMediaType, RTC_MEDIA_EVENT_TYPE enType, 
							 RTC_MEDIA_EVENT_REASON enReason)
{
    RTC_VIDEO_DEVICE enVideo;
    BOOL fShow;
    HRESULT hr = S_OK;

    
    switch (lMediaType)
    {
    case RTCMT_VIDEO_SEND:
        enVideo = RTCVD_PREVIEW;
        break;

    case RTCMT_VIDEO_RECEIVE:
        enVideo = RTCVD_RECEIVE;
        break;

    case RTCMT_T120_SENDRECV:
		break;

	default:
        return S_OK;
    }

    switch (enType) 
    {
    case RTCMET_STARTED:
        fShow = TRUE;
        break;

    case RTCMET_STOPPED:
		::ShowWindow(m_hRecvVideoParent, SW_HIDE);
		::SetParent(m_hRecvVideoParent, NULL);

		::ShowWindow(m_hPrevVideoParent, SW_HIDE);
		::SetParent(m_hPrevVideoParent, NULL);

		SetState (RTCSS_IDLE);

		SAFE_RELEASE(m_pSession);

		DestroyWindow();
		return S_OK;

    case RTCMET_FAILED:
        fShow = FALSE;
        break;

    default:
        return S_OK;
    }

    hr = ShowVideo(enVideo, fShow);

    return hr;

}


HRESULT CAVDlg::DeliverIntensity(RTC_AUDIO_DEVICE enDevice, long lLevel)
{
    switch(enDevice)
    {
    case RTCAD_SPEAKER:
		m_cSpeakerLevel.SetPos (lLevel);
        break;

    case RTCAD_MICROPHONE:
		m_cMicLevel.SetPos (lLevel);
        break;
    }

    return S_OK;
}


HRESULT CAVDlg::DeliverClient(RTC_CLIENT_EVENT_TYPE enEventType)
{
    switch(enEventType)
    {
    case RTCCET_VOLUME_CHANGE:
        
        ShowAudio();
        break;

    case RTCCET_DEVICE_CHANGE:
      
        ShowAudio();
        ShowVideo(RTCVD_PREVIEW, m_fShowPrev);
        ShowVideo(RTCVD_RECEIVE, m_fShowRecv);
        break;
    }

    return S_OK;
}


BOOL CAVDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	int OFFSETX = 10;
	int OFFSETY = 50;

    RECT rcWnd;
    const int SIZE_EDGE = 5;
    const int TEXT_HEIGHT = 16;
    const int LEVEL_HEIGHT = 10;
    const int VOL_HEIGHT = 20;   

    ::GetClientRect(m_hWnd, &rcWnd);    
	
	m_pParentClient = NULL;
    
    float fAspectRatio = (float)QCIF_CY_SIZE/(float)QCIF_CX_SIZE;
    m_lRecvWidth = rcWnd.right - rcWnd.left - 2*SIZE_EDGE;
    m_lRecvHeight = (long)(fAspectRatio * (float)m_lRecvWidth);
	
    m_lPrevWidth = QQCIF_CX_SIZE;
    m_lPrevHeight = QQCIF_CY_SIZE;

    RECT rcRecvVid;

    rcRecvVid.left = rcWnd.left + SIZE_EDGE; 
    rcRecvVid.right = rcWnd.left + m_lRecvWidth + SIZE_EDGE;
    rcRecvVid.top = rcWnd.top + SIZE_EDGE;
    rcRecvVid.bottom = rcWnd.top + m_lRecvHeight + SIZE_EDGE;
    
    RECT rcPrevVid;

    rcPrevVid.left = rcRecvVid.right - m_lPrevWidth; 
    rcPrevVid.right = rcRecvVid.right;
    rcPrevVid.top = rcRecvVid.bottom - m_lPrevHeight;
    rcPrevVid.bottom = rcRecvVid.bottom;         

	m_hRecvVideoParent = NULL;
	m_hPrevVideoParent = NULL;

	m_cSpeakerSlider.SetRangeMax (0xffff);
	m_cMicSlider.SetRangeMax (0xffff);

    if (m_hRecvVideoParent == NULL)
    {
        m_hRecvVideoParent = CreateWindowExW(
            WS_EX_CLIENTEDGE,
            L"STATIC",
            NULL,
            WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
			rcRecvVid.left, rcRecvVid.top,
			m_lRecvWidth, m_lRecvHeight,
            m_hWnd,
            NULL,
            GetModuleHandle(NULL),
            NULL);
    
        if ( !m_hRecvVideoParent )
        {
            return -1;
        }
    }
    else
    {
        if (!::SetParent(m_hRecvVideoParent, m_hWnd))
        {
            // SetParent failed
            return -1;
        }
    }

	if (m_hPrevVideoParent == NULL)
    {
        m_hPrevVideoParent = CreateWindowExW(
            WS_EX_CLIENTEDGE,
            L"STATIC",
            NULL,
            WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
			rcPrevVid.left, rcPrevVid.top,
			m_lPrevWidth, m_lPrevHeight,
            m_hWnd,
            NULL,
            GetModuleHandle(NULL),
            NULL);
    
        if ( !m_hPrevVideoParent )
        {
            return -1;
        }
    }
    else
    {
        if (!::SetParent(m_hPrevVideoParent, m_hWnd))
        {
            return -1;
        }
    }

	return TRUE;  
}


void CAVDlg::SetSession(IRTCSession *pSession)
{
	m_pSession = pSession;
}


void CAVDlg::SetState(RTC_SESSION_STATE enState)
{
	m_rtcState = enState;
}


RTC_SESSION_STATE CAVDlg::GetState()
{
	return m_rtcState;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线视频中文字幕一区二区| 亚洲一区二区三区自拍| 91国偷自产一区二区开放时间| av亚洲精华国产精华| av一二三不卡影片| 国产精品美女一区二区在线观看| 欧美国产欧美亚州国产日韩mv天天看完整| 国产精品美女视频| 精品一区二区成人精品| 国内精品国产三级国产a久久| 蜜臀av一级做a爰片久久| 亚洲国产精品自拍| 狠狠色丁香婷婷综合久久片| 欧美人xxxx| 国产欧美一区二区三区沐欲| 亚洲老妇xxxxxx| 麻豆精品国产91久久久久久| 91精品一区二区三区在线观看| 精品日韩一区二区| 国产欧美日本一区视频| 色婷婷亚洲一区二区三区| 欧美日韩国产精品成人| 麻豆久久久久久| 亚洲视频一区二区在线| 日韩av一二三| 欧美午夜免费电影| 日本一区二区视频在线| 成人免费视频caoporn| 欧美精品视频www在线观看| 国产视频一区在线播放| 青青青伊人色综合久久| 成人免费看视频| 香蕉影视欧美成人| 91麻豆免费看| 亚洲精品亚洲人成人网 | 日韩高清欧美激情| 亚洲狠狠丁香婷婷综合久久久| 精品日韩欧美一区二区| fc2成人免费人成在线观看播放| 亚洲综合成人在线视频| 国产女主播一区| 欧美综合天天夜夜久久| 国产精品99久久久久久久女警| 欧美日韩国产高清一区| 国产成人精品免费网站| 欧美激情在线观看视频免费| 国产一区二区调教| 麻豆国产91在线播放| 蜜桃视频一区二区三区| 中文字幕在线观看不卡| 不卡的电影网站| 亚洲欧美成aⅴ人在线观看| 92国产精品观看| 亚洲成av人片一区二区| 一区二区三区欧美| 欧美v亚洲v综合ⅴ国产v| 日韩午夜在线影院| 国产激情视频一区二区在线观看 | 国产欧美精品区一区二区三区| 精品粉嫩aⅴ一区二区三区四区 | 亚洲最新视频在线观看| 午夜精品一区在线观看| 精品国产一区二区三区久久影院| 91麻豆精品国产91久久久久久久久| 欧洲中文字幕精品| 3atv一区二区三区| 日韩精品资源二区在线| 在线一区二区三区四区| 欧美一区二区三区婷婷月色| 成人高清免费在线播放| 欧美日韩专区在线| 成人精品电影在线观看| 色婷婷综合久久久久中文一区二区| 欧美丰满高潮xxxx喷水动漫| 久久奇米777| 91精品国产美女浴室洗澡无遮挡| 亚洲精品一线二线三线| 国产精品视频免费| 日本中文字幕一区二区视频| 精品一区二区三区日韩| 欧美性欧美巨大黑白大战| 国产日本一区二区| 人人爽香蕉精品| caoporn国产一区二区| 久久五月婷婷丁香社区| 精品美女在线播放| 日韩国产欧美在线播放| 欧美性做爰猛烈叫床潮| 国产精品美女久久久久久久 | 国产精品国产三级国产aⅴ中文 | 欧美大片在线观看一区| 香蕉成人啪国产精品视频综合网| 成人av资源站| 国产精品盗摄一区二区三区| 国产一区二区视频在线播放| 欧美不卡一二三| 国产激情91久久精品导航| 中文字幕 久热精品 视频在线 | 欧美亚洲国产一区二区三区| 精品国产91九色蝌蚪| 久久不见久久见免费视频1| 六月丁香婷婷久久| 精品少妇一区二区三区免费观看 | 欧美日韩一级视频| 日韩中文字幕麻豆| 99久久久久免费精品国产 | 久久精品视频一区二区| 高清beeg欧美| 在线不卡一区二区| 激情文学综合网| 天天综合色天天综合色h| 国产精品羞羞答答xxdd| 亚洲天堂中文字幕| 欧美在线综合视频| 理论片日本一区| 18涩涩午夜精品.www| 日韩一区二区三区在线| 菠萝蜜视频在线观看一区| 亚洲第四色夜色| 欧美国产一区在线| 欧美一级日韩一级| 91九色02白丝porn| 国产一区二区导航在线播放| 伊人性伊人情综合网| 久久久精品欧美丰满| 欧美色中文字幕| www.爱久久.com| 国内精品伊人久久久久影院对白| 亚洲精品乱码久久久久| 久久精品在这里| 日韩欧美一二区| 制服丝袜av成人在线看| 欧洲视频一区二区| av电影在线观看完整版一区二区| 男人的j进女人的j一区| 一区二区三区成人在线视频| 成人欧美一区二区三区视频网页 | av网站免费线看精品| 激情文学综合丁香| 国产在线播精品第三| 久久精品国产亚洲一区二区三区 | 奇米影视7777精品一区二区| 亚洲电影一区二区三区| 一区二区三区四区在线| 国产一区美女在线| 国产成人午夜精品影院观看视频 | 奇米影视一区二区三区小说| 视频一区欧美日韩| 奇米色777欧美一区二区| 五月综合激情日本mⅴ| 日韩va亚洲va欧美va久久| 奇米影视一区二区三区| 美女网站视频久久| 免费看欧美美女黄的网站| 捆绑变态av一区二区三区| 欧洲人成人精品| 精品国产乱码久久久久久1区2区 | 成人午夜免费电影| 国产一区视频网站| 884aa四虎影成人精品一区| 亚洲精品乱码久久久久| 经典三级在线一区| 91在线免费看| 日韩欧美精品在线视频| 综合久久给合久久狠狠狠97色| 午夜私人影院久久久久| 国产激情偷乱视频一区二区三区| 91麻豆免费在线观看| 91精品国产欧美一区二区| 国产欧美一区二区精品秋霞影院 | 国产欧美一区二区三区网站 | 亚洲一区二区三区视频在线播放| 精品一区二区国语对白| 欧美在线高清视频| 亚洲欧美在线视频| 成人精品国产福利| 久久久久久久综合日本| 日本三级韩国三级欧美三级| 在线观看av不卡| 一区二区国产盗摄色噜噜| 国产成人av影院| 国产精品欧美极品| 91片黄在线观看| 美日韩黄色大片| 高清beeg欧美| 色一情一乱一乱一91av| 日韩美女视频一区二区 | 精品一区二区在线免费观看| 有码一区二区三区| 午夜精品福利一区二区三区av| 色诱亚洲精品久久久久久| 亚洲精品久久嫩草网站秘色| 欧美日韩国产123区| 日韩电影在线免费看| 精品国一区二区三区| 成人免费看的视频| 国产精品免费视频网站| 美女网站在线免费欧美精品| 欧美精品1区2区3区| 国产亚洲欧美日韩在线一区|