⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtp_pc_dlg.cpp

📁 分别能运行在手机和电脑上的环境的一个有关audio的源码
💻 CPP
字号:
// PC_RTPDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "RTP_PC.h"
#include "RTP_PC_Dlg.h"
#include "AVClass.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

AVClass *avclass=new AVClass();//自定义功能类


CRTP_PC_Dlg::CRTP_PC_Dlg(CWnd* pParent /*=NULL*/)
	: CDialog(CRTP_PC_Dlg::IDD, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CRTP_PC_Dlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_IPADDRESS, m_RemoteIP);
	DDX_Control(pDX, IDC_IPADDRESS2, m_LocalIP);
}

BEGIN_MESSAGE_MAP(CRTP_PC_Dlg, CDialog)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(IDC_StartTalk, &CRTP_PC_Dlg::OnBnClickedStarttalk)
	ON_BN_CLICKED(IDC_Exit, &CRTP_PC_Dlg::OnBnClickedExit)
	ON_BN_CLICKED(IDC_StopTalk, &CRTP_PC_Dlg::OnBnClickedStoptalk)
END_MESSAGE_MAP()
// CRTP_PC_Dlg 消息处理程序

void CRTP_PC_Dlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); // 用于绘制的设备上下文
		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
		// 使图标在工作矩形中居中
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;
		// 绘制图标
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}


HCURSOR CRTP_PC_Dlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}







int local_port;//本地端口
BOOL CRTP_PC_Dlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标
    

	//--------------取得本地IP
    BYTE   *p;    
    char   temp[100];    
    struct   hostent   *hp;  
	CString tmp_remote_ip;
    if(gethostname(temp,   sizeof(temp))==   0)  
    {  
		if((hp   =gethostbyname(temp))!=0)  
		{  
			p   =(BYTE   *)hp->h_addr;    
			tmp_remote_ip.Format(L"%d.%d.%d.%d",p[0],   p[1],   p[2],   p[3]);
			m_LocalIP.SetWindowTextW(tmp_remote_ip);//设置控件显示本地IP地址
			//-----------取得本地开发端口
			local_port=p[3]*p[3];//端口为IP尾段的平方
			CString tmp_port;
			tmp_port.Format(L"%d",local_port);
			GetDlgItem(IDC_LOCAL_PORT)->SetWindowTextW(tmp_port);
		}  
	}   
	
	return TRUE;  
}
void CRTP_PC_Dlg::OnBnClickedStarttalk()
{
	//---------方便调试预设对方IP
	m_RemoteIP.SetWindowTextW(L"172.19.37.12");


    //-----------对方的端口
	unsigned   char   *pIP;  
    DWORD   dwIP;  
    m_RemoteIP.GetAddress(dwIP);  
    pIP   =   (unsigned   char*)&dwIP;  
    int remote_port=(*pIP)*(*pIP);//端口为IP尾段的平方

    CString tmp_port;
	tmp_port.Format(L"%d",remote_port);//数字转换字符串
	GetDlgItem(IDC_REMOTE_PORT)->SetWindowTextW(tmp_port);

	CString remote_ip;
	m_RemoteIP.GetWindowTextW(remote_ip);//从控件取得IP地址
	
	avclass->InitAV(GetDlgItem(IDC_VideoBox),local_port,remote_ip,remote_port);//初始化

}

void CRTP_PC_Dlg::OnBnClickedExit()
{
	::SendMessage(m_hWnd,WM_CLOSE,0,0);
}


void CRTP_PC_Dlg::OnBnClickedStoptalk()
{
	avclass->FreeAV();//关闭音频
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -