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

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

?? avdlg.cpp

?? 這是一個vc下的完成基于h。323協(xié)議的視頻會議的代碼
?? 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一区二区三区免费野_久草精品视频
美女国产一区二区| 亚洲狠狠丁香婷婷综合久久久| 免费精品99久久国产综合精品| 欧美理论片在线| 日本中文一区二区三区| 久久色中文字幕| 99久久精品国产精品久久| 亚洲免费观看高清在线观看| 欧美日韩国产在线播放网站| 久久se精品一区二区| 亚洲国产精华液网站w| 91极品视觉盛宴| 日本色综合中文字幕| 国产欧美视频在线观看| 色综合天天做天天爱| 石原莉奈一区二区三区在线观看| 精品精品国产高清a毛片牛牛| 国产成人精品综合在线观看 | 国产福利一区二区三区视频| 欧美国产亚洲另类动漫| 91久久精品一区二区三| 麻豆国产欧美一区二区三区| 中文字幕乱码亚洲精品一区| 在线亚洲精品福利网址导航| 久草精品在线观看| 亚洲视频综合在线| 国产精品全国免费观看高清| 欧美日韩国产天堂| 丁香桃色午夜亚洲一区二区三区| 亚洲欧美日韩一区| 337p粉嫩大胆色噜噜噜噜亚洲 | 精品一区二区影视| 亚洲欧美日韩在线不卡| 亚洲精品一区二区在线观看| 在线视频一区二区免费| 国产乱人伦偷精品视频免下载| 亚洲午夜激情网页| 国产精品久久久久久久久免费相片 | 色88888久久久久久影院按摩| 老司机一区二区| 最新日韩av在线| 精品美女一区二区三区| 日本乱人伦一区| 成人综合婷婷国产精品久久蜜臀| 日韩高清一区在线| 亚洲精品国产精品乱码不99| 日本一区二区三区高清不卡 | 精品无人码麻豆乱码1区2区 | 亚洲精品中文字幕乱码三区| 精品免费国产二区三区| 欧美日韩综合色| 91丨porny丨蝌蚪视频| 国产成人在线看| 久久99精品一区二区三区| 午夜日韩在线观看| 亚洲免费大片在线观看| 中文字幕一区二区三区av| 久久久久国产精品麻豆| 日韩限制级电影在线观看| 欧美男女性生活在线直播观看| 91视频一区二区三区| www.视频一区| 成人18精品视频| 成人污视频在线观看| 国产白丝网站精品污在线入口| 激情综合五月婷婷| 开心九九激情九九欧美日韩精美视频电影 | 欧美性一级生活| 91色在线porny| 91视频在线看| 色综合久久久久综合99| 91麻豆国产精品久久| 成人永久aaa| 国产91丝袜在线播放0| 国产精品系列在线播放| 国产在线不卡一区| 国产成人夜色高潮福利影视| 国产精品一二三区在线| 国产福利91精品一区二区三区| 欧美老年两性高潮| 欧美探花视频资源| 制服丝袜日韩国产| 555www色欧美视频| 日韩精品一区二区三区视频| 亚洲精品一区二区在线观看| 中文字幕二三区不卡| 亚洲视频一区在线观看| 一区二区三区四区蜜桃| 午夜欧美在线一二页| 看片的网站亚洲| 国产成人福利片| 色婷婷国产精品综合在线观看| 欧美日韩一区二区三区不卡| 欧美一级日韩一级| 国产欧美视频在线观看| 亚洲精品免费看| 日本午夜精品视频在线观看| 极品尤物av久久免费看| 不卡在线观看av| 欧美视频一区二| 日韩免费一区二区三区在线播放| 久久久.com| 亚洲色大成网站www久久九九| 午夜在线成人av| 国产一区二区三区高清播放| 99精品热视频| 91麻豆精品国产91久久久更新时间| 精品国产在天天线2019| 亚洲色图一区二区| 免费成人av在线播放| 成人av免费观看| 91精品国产综合久久久久久漫画 | 国产精品的网站| 午夜久久久久久电影| 国产一区二区三区日韩| 在线观看亚洲一区| 欧美mv日韩mv国产网站app| 亚洲欧美色一区| 精品亚洲国产成人av制服丝袜 | 琪琪久久久久日韩精品| 成人小视频免费观看| 国产欧美一区二区精品性色| 亚洲大尺度视频在线观看| 国产高清在线精品| 欧美久久免费观看| 中文字幕制服丝袜成人av| 青草av.久久免费一区| 日本韩国欧美在线| 欧美国产精品中文字幕| 喷白浆一区二区| 91成人免费在线| 久久久久久久久久电影| 无码av中文一区二区三区桃花岛| 成人一级视频在线观看| 日韩美女一区二区三区| 亚洲一区二区三区国产| 成人免费观看av| 精品国产乱码久久久久久夜甘婷婷| 亚洲精品成人悠悠色影视| 国产成人午夜片在线观看高清观看| 欧美美女黄视频| 有码一区二区三区| 波多野结衣亚洲一区| 久久综合久色欧美综合狠狠| 日日嗨av一区二区三区四区| 91官网在线免费观看| 国产精品成人一区二区艾草| 国产精品自拍一区| 精品久久久久久久久久久院品网 | 色素色在线综合| 国产精品私人自拍| 国产成人在线网站| 欧美精品一区男女天堂| 狠狠色综合色综合网络| 亚洲男女一区二区三区| 成人性视频网站| 国产精品无人区| 福利一区福利二区| 国产视频一区在线播放| 国产精品一线二线三线精华| 久久综合九色综合欧美亚洲| 久久机这里只有精品| 日韩精品一区二区三区在线播放 | 亚洲色图丝袜美腿| 99re热视频这里只精品 | 亚洲综合一区二区三区| 色综合色狠狠综合色| 亚洲视频在线一区| 91久久一区二区| 亚洲 欧美综合在线网络| 欧美日韩国产天堂| 日本不卡不码高清免费观看| 日韩视频免费观看高清完整版在线观看| 五月激情综合婷婷| 欧美sm美女调教| 国产成人免费视频精品含羞草妖精 | 欧美性色欧美a在线播放| 亚洲gay无套男同| 日韩视频国产视频| 国产一区二区在线影院| 国产精品卡一卡二| 色呦呦国产精品| 亚洲午夜久久久| 日韩午夜激情视频| 国产成a人亚洲| 亚洲三级在线观看| 欧美日本一区二区三区四区| 美腿丝袜亚洲三区| 亚洲国产精华液网站w| 色悠久久久久综合欧美99| 日韩国产欧美三级| 久久精品一级爱片| 在线免费不卡电影| 久久精品国产99国产精品| 国产精品天天看| 欧美蜜桃一区二区三区| 国产大片一区二区| 亚洲小说春色综合另类电影| 欧美xxxx老人做受| 色妞www精品视频|