📄 configdlg.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 + -