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

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

?? visepdlg.cpp

?? 一個簡單的視頻會議VC++MFC工程文件
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
		case ConnNotExist:
			m_statusBar.SetText("不在會議中",0,0);
			break;
		case IncomingCallWait:
			m_statusBar.SetText("有呼叫到來...",0,0);
			break;
		case WaitingForAnswer:
			m_statusBar.SetText("等待對方應(yīng)答...",0,0);
			break;
		case MakingCall:
			m_statusBar.SetText("正在呼叫...",0,0);
			break;
		case HangingUp:
			m_statusBar.SetText("正在掛斷...",0,0);
			break;
	
			
		}
	}
	
}

void CVISEPDlg::OnOK() 
{

}

void CVISEPDlg::OnCancel() 
{
}

void CVISEPDlg::OnAnswer() 
{
	//接聽
	m_pep->AnswerCall(m_connID,TRUE);
}

//VIS MCU和VIS EP示例程序中利用nonstandard message來實(shí)現(xiàn)簡單的會議控制
//開發(fā)者可以利用nonstandard message實(shí)現(xiàn)符合自己需求的會議控制,以及電子
//白板、文件共享等功能
//
//VIS MCU\VIS EP中使用的簡單的控制命令如下
//  [前綴]                  含義
//  "MADD"     由MCU發(fā)給EP,告訴EP有人加入會議
//  "MDEL"     由MCU發(fā)給EP,告訴EP有人離開會議
//  "LIST"     由EP發(fā)給MCU,向MCU索取會議成員列表
//  "ROOM"     由MCU發(fā)給EP,告訴EP當(dāng)前所在會議名
//  "ANNO"     通知信息,由MCU發(fā)給所有EP
//  "MSGA"     某個EP向所有人發(fā)話,由MCU發(fā)給EP
//  "MSGP"     某個EP發(fā)話給另一個EP,由MCU發(fā)給EP
//  "SMSG"     EP發(fā)話給另一個EP,由EP發(fā)給MCU,MCU然后轉(zhuǎn)發(fā)成"MSGA"或者"MSGP"
//  "SETA"     EP發(fā)給MCU,告訴MCU要切換音頻
//  "SETV"     EP發(fā)給MCU,告訴MCU要切換視頻

void CVISEPDlg::OnReceiveNonStandardMsg(CString value)
{
	CString prefix=value.Left(4);
	CString content=value.Right(value.GetLength()-4-1);
	if(prefix=="MADD")//有人加入會議
	{
		int index=content.Find(' ');
		DWORD id=StrToInt(content.Left(index));
		CString body=content.Right(content.GetLength()-index-1);
		index=m_memberList.InsertItem(m_memberList.GetItemCount(),body);
		m_memberList.SetItemData(index,id);
		index=m_ctlTalkTo.AddString(body);
		m_ctlTalkTo.SetItemData(index,id);
		
	}
	else if(prefix=="MDEL")//有人離開會議
	{
		int index;
		DWORD id=StrToInt(content);
		LVFINDINFO lfi;
		lfi.flags=LVFI_PARAM;
		lfi.lParam=id;

		index=m_memberList.FindItem(&lfi);
		if(index>=0)
		{
			m_memberList.DeleteItem(index);
			m_ctlTalkTo.DeleteString(index);
		}
	}
	else if(prefix=="ROOM")//會議名稱
	{
		GetDlgItem(IDC_ROOM_NAME)->SetWindowText(content);
		Output("加入會議:\"%s\"",content);
	}
	else if(prefix=="ANNO")
	{
		Output("服務(wù)器消息: %s",content);
	}
	else if(prefix=="MSGA")//對所有人說
	{	
		int index=content.Find(' ');
		DWORD id=StrToInt(content.Left(index));
		CString body=content.Right(content.GetLength()-index-1);
		LVFINDINFO lfi;
		lfi.flags=LVFI_PARAM;
		lfi.lParam=id;
		index=m_memberList.FindItem(&lfi);
		if(index>=0)
		{
			Output("%s 對所有人說: %s",m_memberList.GetItemText(index,0),body);
		}
	}
	else if(prefix=="MSGP")//對我說
	{
		int index=content.Find(' ');
		DWORD id=StrToInt(content.Left(index));
		CString body=content.Right(content.GetLength()-index-1);
		LVFINDINFO lfi;
		lfi.flags=LVFI_PARAM;
		lfi.lParam=id;
		index=m_memberList.FindItem(&lfi);
		if(index>=0)
		{
			Output("%s 說: %s",m_memberList.GetItemText(index,0),body);
		}
	}
	else if(prefix=="SMSG")//為了使VISEP之間能夠互發(fā)消息
	{
		int index=content.Find(' ');
		DWORD id=StrToInt(content.Left(index));
		CString body=content.Right(content.GetLength()-index-1);
		Output("%s 說: %s",m_pep->GetRemoteName(m_connID),body);
	}

	
}

void CVISEPDlg::OnRefresh() 
{
	//刷新會議成員列表
	m_memberList.DeleteAllItems();
	m_memberList.InsertItem(0,"所有人");
	m_memberList.SetItemData(0,0);
	m_ctlTalkTo.ResetContent();
	m_ctlTalkTo.AddString("所有人");
	m_ctlTalkTo.SetItemData(0,0);
	m_ctlTalkTo.SetCurSel(0);
	//向MCU發(fā)送成員列表請求
	m_pep->SendNonStandardMsg(m_connID,"LIST");
}

HBRUSH CVISEPDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	
	if(nCtlColor==CTLCOLOR_STATIC&&pWnd->GetDlgCtrlID()==IDC_MSG_LIST)
	{
		pDC->SetBkColor(0x00ffffff);
		return m_brush;
	}
	// TODO: Return a different brush if the default is not desired
	return hbr;
}

void CVISEPDlg::OnSend() 
{
	//向其他終端發(fā)話
	UpdateData();
	int index=m_ctlTalkTo.GetCurSel();
	if(index>=0&&!m_msg.IsEmpty())
	{
		DWORD id=m_ctlTalkTo.GetItemData(index);
		//如果id==0表示向所有人說
		CString str;
		str.Format("SMSG %d %s",id,m_msg);
		m_pep->SendNonStandardMsg(m_connID,str);
		CString talkTo;
		m_ctlTalkTo.GetWindowText(talkTo);
		str.Format("你對 %s說: %s",talkTo,m_msg);
		Output(str);
		m_msg="";
		UpdateData(FALSE);
		
	}
}

void CVISEPDlg::Output(LPCTSTR str,...)
{
	CString out;
	va_list argList;

	va_start(argList, str);
	out.FormatV(str,argList);
	va_end(argList);
	CEdit *edit=(CEdit*)GetDlgItem(IDC_MSG_LIST);

	CString output;
	char t[20];
    _strtime(t);
	output.Format("[%s] %s\r\r\n",t,out);
	edit->SetSel(edit->GetWindowTextLength(),-1);
	edit->ReplaceSel(output);
}

void CVISEPDlg::Output(UINT nID,...)
{
	CString str;
	str.LoadString(nID);
	CString out;
	va_list argList;
	va_start(argList, nID);
	out.FormatV(str,argList);
	va_end(argList);
	
	Output(out);
}

void CVISEPDlg::OnLocalVideo() 
{
	if(m_localVideo.m_hWnd==NULL)
	{
		m_localVideo.Create(this,0,"本地視頻",WS_OVERLAPPEDWINDOW|WS_VISIBLE,CW_USEDEFAULT,CW_USEDEFAULT,0,0);
		if(m_pep->m_grabber.IsOpened())
			m_pep->m_grabber.StartStream(176,144);
		else
		{
			//打開視頻捕獲設(shè)備,實(shí)現(xiàn)本地視頻預(yù)覽
			CWinApp *app=AfxGetApp();
			m_pep->m_grabber.Open(app->GetProfileInt("",KEY_VIDEO_DEVICE,0));
			m_pep->m_grabber.StartStream(176,144);
		}
	}
	else
	{
		m_pep->m_grabber.StopStream();
		if(!m_pep->IsVideoSending(m_connID))
			m_pep->m_grabber.Close();
		m_localVideo.DestroyWindow();
	}
}

void CVISEPDlg::OnRemoteVideo() 
{
	if(m_remoteVideo.m_hWnd==NULL)
	{
		m_remoteVideo.Create(this,0,"對方視頻",WS_OVERLAPPEDWINDOW|WS_VISIBLE,CW_USEDEFAULT,CW_USEDEFAULT,0,0);
	}
	else
	{
		m_remoteVideo.DestroyWindow();
	}
}

void CVISEPDlg::OnItemchangedMemberList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	//切換會議成員
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	if(m_pep->GetConnectionStatus(m_connID)==ConnEstablished)
	{
		
		int index=m_memberList.GetNextItem(-1,LVNI_SELECTED);
		DWORD id=0;
		if(index>=0)
		{
			id=m_memberList.GetItemData(index);
		}
		CString str;
		str.Format("SETA %d",id);
		//向MCU發(fā)送切換音頻的請求
		m_pep->SendNonStandardMsg(m_connID,str);

		str.Format("SETV %d",id);
		//向MCU發(fā)送切換視頻的請求
		m_pep->SendNonStandardMsg(m_connID,str);
	
	}
	*pResult = 0;
}

void CVISEPDlg::OnAudio() 
{
	//音頻設(shè)置
	COptionAudio dlg;
	CWinApp *app=AfxGetApp();
	dlg.m_outputDevice=app->GetProfileInt("",KEY_AUDIO_OUTPUT_DEVICE,0);
	dlg.m_inputDevice=app->GetProfileInt("",KEY_AUDIO_INPUT_DEVICE,0);
	dlg.m_jitter=app->GetProfileInt("",KEY_AUDIO_JITTER,60);
	//默認(rèn)禁用靜音抑制
	dlg.m_silenceDetection=app->GetProfileInt("",KEY_SILENCE_DETECTION_MODE,0);
	dlg.m_threshold=app->GetProfileInt("",KEY_SILENCE_DETECTION_THRESHOLD,0);
	dlg.m_preferredCodec=m_pep->GetPreferredAudioCodec();
	if(dlg.DoModal()==IDOK)
	{
		app->WriteProfileInt("",KEY_AUDIO_OUTPUT_DEVICE,dlg.m_outputDevice);
		app->WriteProfileInt("",KEY_AUDIO_INPUT_DEVICE,dlg.m_inputDevice);
		app->WriteProfileInt("",KEY_AUDIO_JITTER,dlg.m_jitter);
		m_pep->SetMaxAudioDelayJitter(0,dlg.m_jitter);
		m_pep->SetMaxAudioDelayJitter(m_connID,dlg.m_jitter);
		app->WriteProfileInt("",KEY_SILENCE_DETECTION_MODE,dlg.m_silenceDetection);
		app->WriteProfileInt("",KEY_SILENCE_DETECTION_THRESHOLD,dlg.m_threshold);
		m_pep->SetSilenceDetectionMode(0,(enum SilenceDetectionMode)dlg.m_silenceDetection,dlg.m_threshold);
		m_pep->SetSilenceDetectionMode(m_connID,(enum SilenceDetectionMode)dlg.m_silenceDetection,dlg.m_threshold);
		app->WriteProfileInt("",KEY_PREFERRED_AUDIO_CODEC,dlg.m_preferredCodec);
		m_pep->SetPreferredAudioCodec(dlg.m_preferredCodec);
	}
}

void CVISEPDlg::OnVideo() 
{
	//視頻設(shè)置
	COptionVideo dlg;
	CWinApp *app=AfxGetApp();

	dlg.m_device=app->GetProfileInt("",KEY_VIDEO_DEVICE,0);
	dlg.m_directShow=app->GetProfileInt("",KEY_USE_DIRECTSHOW,1)>0;
	dlg.m_autoSend=app->GetProfileInt("",KEY_AUTO_SEND_VIDEO,1)>0;
	dlg.m_format=app->GetProfileInt("",KEY_VIDEO_FORMAT,0)==0?0:1;
	dlg.m_quality=app->GetProfileInt("",KEY_VIDEO_QUALITY,100);
	if(dlg.DoModal()==IDOK)
	{
		app->WriteProfileInt("",KEY_VIDEO_DEVICE,dlg.m_device);
		app->WriteProfileInt("",KEY_USE_DIRECTSHOW,dlg.m_directShow?1:0);
		m_pep->m_grabber.SetGrabberMode(dlg.m_directShow?VG_DS:VG_VFW);
		app->WriteProfileInt("",KEY_AUTO_SEND_VIDEO,dlg.m_autoSend?1:0);
		m_pep->AutoSendVideo(dlg.m_autoSend);
		app->WriteProfileInt("",KEY_VIDEO_FORMAT,dlg.m_format);
		m_pep->SetVideoSize(0,dlg.m_format==0?VS_QCIF:VS_CIF);
		m_pep->SetVideoSize(m_connID,dlg.m_format==0?VS_QCIF:VS_CIF);
		app->WriteProfileInt("",KEY_VIDEO_QUALITY,dlg.m_quality);
		m_pep->SetVideoQuality(0,dlg.m_quality);
		m_pep->SetVideoQuality(m_connID,dlg.m_quality);
	}
}

void CVISEPDlg::OnNetwork() 
{
	//網(wǎng)絡(luò)設(shè)置
	COptionNetwork dlg;	
	CWinApp *app=AfxGetApp();
	dlg.m_bandwidth=m_pep->GetInitialBandwidth()/1000;
	dlg.m_listenPort=app->GetProfileInt("",KEY_LISTEN_PORT,H323_LISTEN_PORT);
	//默認(rèn)禁用fast-start
	dlg.m_faststart=app->GetProfileInt("",KEY_FASTSTART,0)>0;
	dlg.m_h245insetup=app->GetProfileInt("",KEY_H245INSETUP,1)>0;
	dlg.m_h245tunnel=app->GetProfileInt("",KEY_H245TUNNEL,1)>0;
	if(dlg.DoModal()==IDOK)
	{
		app->WriteProfileInt("",KEY_BANDWIDTH,dlg.m_bandwidth);
		m_pep->SetInitialBandwidth(dlg.m_bandwidth*1000);
		app->WriteProfileInt("",KEY_LISTEN_PORT,dlg.m_listenPort);
		m_pep->StartListen(NULL,(WORD)dlg.m_listenPort);
		app->WriteProfileInt("",KEY_FASTSTART,dlg.m_faststart?1:0);
		app->WriteProfileInt("",KEY_H245INSETUP,dlg.m_h245insetup?1:0);
		app->WriteProfileInt("",KEY_H245TUNNEL,dlg.m_h245tunnel?1:0);
		m_pep->EnableFastStart(dlg.m_faststart);
		m_pep->EnableH245inSetup(dlg.m_h245insetup);
		m_pep->EnableH245Tunnel(dlg.m_h245tunnel);
	}
}

void CVISEPDlg::OnGatekeeper() 
{
	//網(wǎng)守設(shè)置
	COptionGatekeeper dlg;
	CWinApp *app=AfxGetApp();
	char name[256]="";
	m_pep->GetUserName(name,256);
	dlg.m_userName=name;
	m_pep->GetUserAlias(name,256);
	dlg.m_userAlias=name;
	dlg.m_password=app->GetProfileString("",KEY_PASSWORD);
	dlg.m_gkAddr=app->GetProfileString("",KEY_GK_ADDRESS);
	if(dlg.DoModal()==IDOK)
	{
		app->WriteProfileString("",KEY_USER_NAME,dlg.m_userName);
		app->WriteProfileString("",KEY_USER_ALIAS,dlg.m_userAlias);
		m_pep->SetUserName(dlg.m_userName,dlg.m_userAlias);
		app->WriteProfileString("",KEY_PASSWORD,dlg.m_password);
		app->WriteProfileString("",KEY_GK_ADDRESS,dlg.m_gkAddr);
	}
}

void CVISEPDlg::OnLogin() 
{
	//登錄網(wǎng)守
	CWinApp *app=AfxGetApp();
	if(m_pep->UseGatekeeper(app->GetProfileString("",KEY_GK_ADDRESS),
		app->GetProfileString("",KEY_PASSWORD)))
	{
		GetMenu()->EnableMenuItem(ID_LOGIN,MF_BYCOMMAND|MF_GRAYED);
		m_statusBar.SetText("正在登錄網(wǎng)守...",3,0);
	}
}

void CVISEPDlg::OnLogout() 
{
	//從網(wǎng)守注銷
	m_pep->UnuseGatekeeper();
	GetMenu()->EnableMenuItem(ID_LOGOUT,MF_BYCOMMAND|MF_GRAYED);
	m_statusBar.SetText("未登錄到網(wǎng)守",3,0);
}

void CVISEPDlg::OnTimer(UINT nIDEvent) 
{
	if(nIDEvent==1)	
	{
		m_micVolume.SetPos(m_pep->GetAudioSignalLevel(m_connID,TRUE));
		m_spkVolume.SetPos(m_pep->GetAudioSignalLevel(m_connID,FALSE));
	}
	else if(nIDEvent==2)
	{
		CString s;
		DWORD dur;
		m_pep->GetConnectionDuration(m_connID,dur);
		s.Format("正在會議...%02d:%02d:%02d",dur/3600,dur/60%60,dur%60);
		m_statusBar.SetText(s,0,0);
	}
	CDialog::OnTimer(nIDEvent);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一色屋精品亚洲香蕉网站| 欧美一区二区三区影视| 国产精品女同互慰在线看| 国产福利一区二区三区| 国产欧美日韩亚州综合| 成人av在线一区二区三区| 亚洲天堂免费看| 欧美在线视频不卡| 日本在线不卡视频一二三区| 日韩美一区二区三区| 国产成人啪免费观看软件 | 久久婷婷久久一区二区三区| 国产主播一区二区| 国产精品日韩精品欧美在线| 在线看国产日韩| 日韩av一二三| 国产精品美女久久久久久久| 欧洲生活片亚洲生活在线观看| 亚洲成人精品一区| 精品美女一区二区三区| 不卡的av在线播放| 亚洲成人免费在线| 久久久久久黄色| 91性感美女视频| 蜜臀av国产精品久久久久| 国产午夜精品理论片a级大结局| 一本色道久久加勒比精品 | 亚洲欧洲综合另类| 日韩欧美中文字幕公布| 成人性生交大片免费看中文网站| 一区二区三区视频在线看| 欧美电影在哪看比较好| 国产成人亚洲综合a∨婷婷| 亚洲最色的网站| 久久综合av免费| 欧美在线观看禁18| 高清在线观看日韩| 日本女人一区二区三区| 亚洲卡通欧美制服中文| 2023国产一二三区日本精品2022| 91免费版pro下载短视频| 久久99在线观看| 一卡二卡欧美日韩| 国产网站一区二区| 91精品国产乱码| 色8久久精品久久久久久蜜| 九九热在线视频观看这里只有精品| 尤物视频一区二区| 日本一区二区不卡视频| 精品久久五月天| 欧美肥妇bbw| 欧洲生活片亚洲生活在线观看| 国产精品66部| 久久97超碰色| 青青草视频一区| 亚洲午夜一区二区三区| 成人免费在线视频| 久久久亚洲午夜电影| 日韩视频一区二区三区在线播放| 91激情五月电影| 成人开心网精品视频| 国产精品一区免费视频| 免费成人在线视频观看| 亚洲国产视频一区| 一区二区三区免费观看| 国产精品久久免费看| 国产日韩欧美麻豆| 国产无人区一区二区三区| 亚洲精品在线电影| 精品免费日韩av| 日韩精品综合一本久道在线视频| 91精品国产综合久久福利软件| 欧美在线免费视屏| 欧美日韩亚州综合| 欧美日韩亚洲丝袜制服| 欧美日韩国产免费一区二区 | 91丨porny丨首页| 成人午夜电影小说| 国产精品主播直播| 国产成人精品综合在线观看| 国产精华液一区二区三区| 国产老肥熟一区二区三区| 国产福利精品一区二区| 成人午夜看片网址| 91在线无精精品入口| 色婷婷狠狠综合| 欧美乱妇15p| 欧美一区二区三区不卡| 日韩免费福利电影在线观看| 久久久www免费人成精品| 日本一区二区视频在线| 亚洲色图.com| 亚洲成a人在线观看| 青青青伊人色综合久久| 国产一区二区网址| 成人avav在线| 在线看日本不卡| 欧美一区二区三区婷婷月色| 日韩欧美国产一二三区| 久久先锋影音av鲁色资源 | 亚洲欧美在线观看| 亚洲老司机在线| 三级不卡在线观看| 国产自产2019最新不卡| 不卡的av中国片| 在线成人小视频| 久久五月婷婷丁香社区| 亚洲丝袜自拍清纯另类| 偷拍一区二区三区四区| 激情欧美日韩一区二区| 91小视频免费观看| 欧美日韩你懂的| 国产欧美精品在线观看| 亚洲成人激情av| 国产一区二区导航在线播放| 欧美一a一片一级一片| 精品成人免费观看| 亚洲精品国产一区二区精华液| 免费观看在线综合色| 成人一道本在线| 91精品国产手机| 中文字幕免费在线观看视频一区| 亚洲福利视频导航| 国产老妇另类xxxxx| 欧美体内she精高潮| 久久精品一区二区| 亚洲一区二区在线免费观看视频| 国产一区视频网站| 欧美日韩精品一区视频| 国产午夜精品在线观看| 日韩精品一二三四| 91亚洲精华国产精华精华液| 亚洲精品在线三区| 视频精品一区二区| 色综合天天综合给合国产| 精品国产第一区二区三区观看体验| 一区二区欧美精品| 成人白浆超碰人人人人| 欧美mv日韩mv亚洲| 亚洲一区二区三区在线| 99久久久久久| 久久久一区二区三区捆绑**| 丝袜美腿亚洲一区| 色综合久久中文综合久久97| 亚洲国产精华液网站w| 久久国产精品99久久久久久老狼| 色综合久久88色综合天天6| 国产欧美日韩激情| 国产一区激情在线| 精品国免费一区二区三区| 天堂av在线一区| 欧美日韩中文字幕一区| 亚洲视频免费看| 99精品视频一区二区三区| 久久色.com| 国产专区综合网| 精品日韩欧美在线| 久久99久久99| 精品99久久久久久| 麻豆国产精品777777在线| 欧美乱妇20p| 日韩av一区二区在线影视| 欧美高清精品3d| 日本美女一区二区三区视频| 欧美精品v日韩精品v韩国精品v| 亚洲美女电影在线| 一本久久精品一区二区| 亚洲视频综合在线| 99精品国产热久久91蜜凸| 国产精品网站在线观看| 97精品久久久久中文字幕| 亚洲欧美日韩小说| 91黄色激情网站| 亚洲第一会所有码转帖| 91精品国产一区二区| 久久99精品久久久久久国产越南| 欧美成人官网二区| 国产精品一级片在线观看| 国产欧美日韩视频在线观看| 93久久精品日日躁夜夜躁欧美| 亚洲美腿欧美偷拍| 欧美日韩精品欧美日韩精品| 日韩精品国产精品| 久久看人人爽人人| 成人免费av在线| 一区二区在线观看不卡| 91福利在线看| 美腿丝袜一区二区三区| 久久一二三国产| 972aa.com艺术欧美| 亚洲二区视频在线| 日韩精品一区二区三区在线播放 | 丁香网亚洲国际| 亚洲桃色在线一区| 欧美精品精品一区| 国产福利91精品| 亚洲夂夂婷婷色拍ww47| 欧美成人a∨高清免费观看| 成人中文字幕在线| 午夜av一区二区三区|