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

📄 configdlg.cpp

📁 这是G.723和G.729的音频编解码的源代码
💻 CPP
字号:
// ConfigDlg.cpp : implementation file
//

#include "stdafx.h"
#include "VideoComm.h"
#include "commondef.h"
#include "cchannel.h"
#include "ConfigDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CConfigDlg dialog
extern LPCTSTR data_Set;
extern CSendChannel* g_pCommandSendChannel;
extern BOOL g_bBegin;

CConfigDlg::CConfigDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CConfigDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CConfigDlg)
	m_nPortRate = -1;
	m_nQuant = 0;
	m_strMyName = _T("");
	//}}AFX_DATA_INIT
	//Open the data of saved before
	HKEY hKey = NULL;
	DWORD dwDisposition = 0;

	long re0 = ::RegCreateKeyEx(HKEY_CURRENT_USER, data_Set, NULL,
		NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, 
		&hKey, &dwDisposition);
	if(re0 != ERROR_SUCCESS)//Open or create fail
		MessageBox("无法打开注册表!请输入参数。");
	else
	{
		//Query data about Port rate, video quant and this teminal's name
		BYTE byPortRate = 1;
		BYTE byVideoQuant = 4;
		DWORD dwLength = 1;
		DWORD dwType_1 = REG_DWORD;
		DWORD dwType_2 = REG_SZ;
		BYTE cUserName[MAXNAMELENGTH]="Who";
		BYTE byNameLength = 0;

		long re1 = ::RegQueryValueEx(hKey, "PortRate", NULL, &dwType_1, &byPortRate, &dwLength);
		re1 = ::RegQueryValueEx(hKey, "PortRate", NULL, &dwType_1, &byPortRate, &dwLength);
		long re2 = ::RegQueryValueEx(hKey, "VideoQuant", NULL, &dwType_1, &byVideoQuant, &dwLength);
		dwLength = MAXNAMELENGTH;
		long re3 = ::RegQueryValueEx(hKey, "Name", NULL, &dwType_2, cUserName, &dwLength);
		byNameLength = (BYTE)dwLength-1;//Get rid of the last '\0'
		if(re1 != ERROR_SUCCESS || re2 != ERROR_SUCCESS || re3 != ERROR_SUCCESS)
		{
			LPVOID lpMsgBuf;
			FormatMessage( 
				FORMAT_MESSAGE_ALLOCATE_BUFFER | 
				FORMAT_MESSAGE_FROM_SYSTEM | 
				FORMAT_MESSAGE_IGNORE_INSERTS,
				NULL,
				GetLastError(),
				MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
				(LPTSTR) &lpMsgBuf,
				0,
				NULL 
			);
			// Process any inserts in lpMsgBuf.
			// ...
			// Display the string.
			MessageBox((LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
			// Free the buffer.
			LocalFree( lpMsgBuf );
 			MessageBox("错误:无法读取注册表!请重新输入参数。");
		}
		m_nPortRate=byPortRate;
		m_nQuant=byVideoQuant;
		m_strMyName=CString(cUserName);
		::RegCloseKey(hKey);
	}
}


void CConfigDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CConfigDlg)
	DDX_Radio(pDX, IDC_PORTRATE16K, m_nPortRate);
	DDX_Slider(pDX, IDC_QUANLITY, m_nQuant);
	DDX_Text(pDX, IDC_MYNAME, m_strMyName);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CConfigDlg, CDialog)
	//{{AFX_MSG_MAP(CConfigDlg)
	ON_BN_CLICKED(IDC_CHANGENAME, OnChangeName)
	ON_WM_HSCROLL()
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CConfigDlg message handlers

void CConfigDlg::OnChangeName() 
{
	// TODO: Add your control notification handler code here
	//char Name[MAXNAMELENGTH];
	BYTE byLength;

	UpdateData();
	byLength = m_strMyName.GetLength();	
	if(byLength > 4)
	{
		MessageBox("名字太长,必须小于等于4个字符!");
		return;
	}

	//Save the name to registry
	HKEY hKey = NULL;
	DWORD dwDisposition = 0;

	long re0 = ::RegCreateKeyEx(HKEY_CURRENT_USER, data_Set, NULL,
		NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, 
		&hKey, &dwDisposition);
	if(re0 != ERROR_SUCCESS)//Open or create fail
		MessageBox("无法打开注册表!");
	else
	{
		//Query data about Port rate, video quant and this teminal's name
		DWORD dwLength = byLength;
		BYTE cUserName[MAXNAMELENGTH+1];

		::CopyMemory(cUserName, m_strMyName, byLength);
		cUserName[byLength] = 0;
		//cUserName[byLength]=0;
		long re1 = ::RegSetValueEx(hKey, "Name", NULL, REG_SZ, cUserName, dwLength);
		if(re1 != ERROR_SUCCESS)
			MessageBox("错误:无法写入注册表!");
		//delete cUserName;
		::RegCloseKey(hKey);
	}	
}

void CConfigDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	// TODO: Add your message handler code here and/or call default
	if(nSBCode==SB_ENDSCROLL)
	{		
		int nQuant=((CSliderCtrl*)pScrollBar)->GetPos();

		//Save the port rate to registry
		HKEY hKey = NULL;
		DWORD dwDisposition = 0;

		long re0 = ::RegCreateKeyEx(HKEY_CURRENT_USER, data_Set, NULL,
			NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, 
			&hKey, &dwDisposition);
		if(re0 != ERROR_SUCCESS)//Open or create fail
			MessageBox("无法打开注册表!");
		else
		{
			//Query data about Port rate, video quant and this teminal's name
			DWORD dwLength = sizeof(DWORD);
			BYTE cQuant[4];

			::CopyMemory(cQuant, &nQuant, sizeof(nQuant));
			long re1 = ::RegSetValueEx(hKey, "VideoQuant", NULL, REG_DWORD, cQuant, dwLength);
			if(re1 != ERROR_SUCCESS)
				MessageBox("错误:无法写入注册表!");
			::RegCloseKey(hKey);
		}

		if(g_pCommandSendChannel)
		{
			BYTE byTemp=(BYTE)nQuant;
			g_pCommandSendChannel->SendData(&byTemp,1);
			byTemp=255;
			g_pCommandSendChannel->SendData(&byTemp,1);
		}
		m_nQuant = nQuant;
	}

	CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}

BOOL CConfigDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	if(g_bBegin)//Have begin
	{
		GetDlgItem(IDC_PORTRATE16K)->EnableWindow(FALSE);
		GetDlgItem(IDC_PORTRATE32K)->EnableWindow(FALSE);
		GetDlgItem(IDC_PORTRATE64K)->EnableWindow(FALSE);
		GetDlgItem(IDC_QUANLITY)->EnableWindow(TRUE);
		GetDlgItem(IDC_QUANLITYTEXT)->EnableWindow(TRUE);
		GetDlgItem(IDC_SPEEDTEXT)->EnableWindow(TRUE);
		//Cann't change terminal name
		GetDlgItem(IDC_CHANGENAME)->EnableWindow(FALSE);
	}
	else
	{
		//set quant
		CSliderCtrl * pQuanlitySlider=(CSliderCtrl*)GetDlgItem(IDC_QUANLITY);
		pQuanlitySlider->SetRange(1,31);
		pQuanlitySlider->SetPos(m_nQuant);
		GetDlgItem(IDC_PORTRATE16K)->EnableWindow(TRUE);
		GetDlgItem(IDC_PORTRATE32K)->EnableWindow(TRUE);
		GetDlgItem(IDC_PORTRATE64K)->EnableWindow(TRUE);
		GetDlgItem(IDC_QUANLITY)->EnableWindow(FALSE);
		GetDlgItem(IDC_QUANLITYTEXT)->EnableWindow(FALSE);
		GetDlgItem(IDC_SPEEDTEXT)->EnableWindow(FALSE);
	}
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CConfigDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	
	// TODO: Add your message handler code here
	UpdateData();
	//Save the port rate to registry
	HKEY hKey = NULL;
	DWORD dwDisposition = 0;

	long re0 = ::RegCreateKeyEx(HKEY_CURRENT_USER, data_Set, NULL,
		NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, 
		&hKey, &dwDisposition);
	if(re0 != ERROR_SUCCESS)//Open or create fail
		MessageBox("无法打开注册表!");
	else
	{
		//Query data about Port rate, video quant and this teminal's name
		DWORD dwLength = sizeof(DWORD);
		BYTE cPortRate[4];
		DWORD dwType_1 = REG_DWORD;

		::CopyMemory(cPortRate, &m_nPortRate, sizeof(m_nPortRate));
		long re1 = ::RegSetValueEx(hKey, "PortRate", NULL, dwType_1, cPortRate, dwLength);
		if(re1 != ERROR_SUCCESS)
			MessageBox("错误:无法写入注册表!");
		::RegCloseKey(hKey);
	}	
}

⌨️ 快捷键说明

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