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

📄 irdlg.cpp

📁 它是一个可以实时交互的嵌入式软件系统
💻 CPP
字号:
// IrDlg.cpp : implementation file
//

#include "stdafx.h"
//nclude "DvrClientDemo.h"
#include "IrDlg.h"
extern CNetSDKDemoApp theApp;

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

/////////////////////////////////////////////////////////////////////////////
// CIrDlg dialog
extern CNetSDKDemoApp theApp;

CIrDlg::CIrDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CIrDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CIrDlg)
	m_cmb_port = -1;
	m_check_preview = FALSE;
	//}}AFX_DATA_INIT
}


void CIrDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CIrDlg)
	DDX_Control(pDX, IDC_BUTTON, m_lst_btn);
	DDX_CBIndex(pDX, IDC_CMB_PORT, m_cmb_port);
	DDX_Check(pDX, IDC_CHECK_PREVIEW, m_check_preview);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CIrDlg, CDialog)
	//{{AFX_MSG_MAP(CIrDlg)
	ON_MESSAGE(WM_IR_RECIEVE, OnIRRecieve) 
	ON_NOTIFY(NM_DBLCLK, IDC_BUTTON, OnDblclkButton)
	ON_CBN_SELCHANGE(IDC_CMB_PORT, OnSelchangeCmbPort)
	ON_BN_CLICKED(IDC_CHECK_PREVIEW, OnCheckPreview)
	ON_BN_CLICKED(IDC_BUTTON1, OnClose)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CIrDlg message handlers

BOOL CIrDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	CRect rc;
	GetParent()->GetClientRect(&rc);
	((CTabCtrl*)GetParent())->AdjustRect(FALSE, &rc);
	MoveWindow(&rc);
	rc.SetRect(10,40,rc.Width()-10,rc.Height()-10);
	//rc.DeflateRect(10,20,10,20);
//	rc.OffsetRect(10,10);
	m_lst_btn.MoveWindow(&rc);
	DWORD dwStyle = ListView_GetExtendedListViewStyle(m_lst_btn.m_hWnd);
    dwStyle |=  LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES  | LVS_EX_HEADERDRAGDROP ;
    ListView_SetExtendedListViewStyle(m_lst_btn.m_hWnd, dwStyle);
	m_cmb_port=theApp.m_ComPort.GetCurPortNum()-1;
	m_lst_btn.InsertColumn(0,"遥控器按键",LVCFMT_LEFT,100);
	m_lst_btn.InsertColumn(1,"按键码",LVCFMT_LEFT,250);
	m_lst_btn.InsertColumn(2,"电视按键码",LVCFMT_LEFT,rc.Width()-360);

	m_lst_btn.InsertItem(0,"开/关");
	m_lst_btn.InsertItem(1,"Av/Tv");
	m_lst_btn.InsertItem(2,"频道+");
	m_lst_btn.InsertItem(3,"频道-");
	m_lst_btn.InsertItem(4,"音量+");
	m_lst_btn.InsertItem(5,"音量-");
	m_lst_btn.InsertItem(6,"菜单");
	m_lst_btn.InsertItem(7,"Dvr");
	m_lst_btn.InsertItem(8,"聚焦");
	m_lst_btn.InsertItem(9,"回放");
	m_lst_btn.InsertItem(10,"通道");
	m_lst_btn.InsertItem(11,"焦距");
	m_lst_btn.InsertItem(12,"云台");
	m_lst_btn.InsertItem(13,"上");
	m_lst_btn.InsertItem(14,"下");
	m_lst_btn.InsertItem(15,"左");
	m_lst_btn.InsertItem(16,"右");
	m_lst_btn.InsertItem(17,"确认");
	CString sData,stmp;
	int i,j;
	for (i=0;i<COUNT_BUTTON;i++)
		if (theApp.m_ir_data[i].GetSize()>0)
		{
			sData="";
			for (j=0;j<theApp.m_ir_data[i].GetSize();j++)
			{
				stmp.Format("%.2x",theApp.m_ir_data[i].GetAt(j));
				sData+=stmp;
			}
			m_lst_btn.SetItemText(i,1,sData);
		}
	for (i=0;i<8;i++)
		if (theApp.m_tv_data[i].GetSize()>0)
		{
			sData="";
			for (j=0;j<theApp.m_tv_data[i].GetSize();j++)
			{
				stmp.Format("%.2x",theApp.m_tv_data[i].GetAt(j));
				sData+=stmp;
			}
			m_lst_btn.SetItemText(i,2,sData);
		}
	m_lst_btn.SetItemState(0,  0 ,    LVIS_SELECTED);
	m_check_preview=theApp.m_preview;//sxw
	UpdateData(false);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CIrDlg::OnIRRecieve(WPARAM wParam, LPARAM lParam)
{
	
	int sel=m_lst_btn.GetNextItem(-1,LVNI_SELECTED);
	if (sel>=0 && wParam>=1)
	{
//		theApp.m_learn_count=0;
		CString sData,stmp;
		//if (learn_dlg.m_tv)
		if (::SendMessage(learn_dlg.GetDlgItem(IDC_CK_TV)->m_hWnd,BM_GETCHECK,0,0)==BST_CHECKED)
		{		//电视机遥控器按键
			theApp.m_tv_data[sel].Copy(theApp.m_learn_data[0]);
			for (int i=0;i<theApp.m_learn_data[0].GetSize();i++)
			{
				stmp.Format("%.2x",theApp.m_learn_data[0].GetAt(i));
				sData+=stmp;
			}
			m_lst_btn.SetItemText(sel,2,sData);
			stmp.Format("tv%d",sel);
			theApp.WriteProfileString(REMOTE_CONTROL,stmp,sData);
		}
		else
		{	//电脑遥控器按键
			theApp.m_ir_data[sel].Copy(theApp.m_learn_data[0]);
			for (int i=0;i<theApp.m_learn_data[0].GetSize();i++)
			{
				stmp.Format("%.2x",theApp.m_learn_data[0].GetAt(i));
				sData+=stmp;
			}
			m_lst_btn.SetItemText(sel,1,sData);
			stmp.Format("key%d",sel);
			theApp.WriteProfileString(REMOTE_CONTROL,stmp,sData);
		}
	}
	learn_dlg.PostMessage(WM_IR_RECIEVE,1,0);		//theApp.m_learn_count
}

void CIrDlg::OnDblclkButton(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int sel=m_lst_btn.GetNextItem(-1,LVNI_SELECTED);
	if (sel>=0)
	{
		CString sKey;
		sKey=m_lst_btn.GetItemText(sel,0);
		learn_dlg.m_hint.Format("请按遥控器'%s'键",sKey);
		learn_dlg.m_1="";
		learn_dlg.m_2="";
		learn_dlg.m_3="";
		theApp.m_learn=true;
		learn_dlg.DoModal();
		theApp.m_learn=false;
		theApp.m_learn_count=0;
	}
	*pResult = 0;
}

void CIrDlg::OnCancel() 
{
	// TODO: Add extra cleanup here
	
//	CDialog::OnCancel();
}

void CIrDlg::OnOK() 
{
	// TODO: Add extra validation here
	
	CDialog::OnOK();
}


void CIrDlg::OnSelchangeCmbPort() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	if (m_cmb_port+1!=theApp.m_ComPort.GetCurPortNum())
	{
		theApp.InitComm(m_cmb_port+1);
		theApp.WriteProfileInt(REMOTE_CONTROL,"port",m_cmb_port+1);
	}
}

void CIrDlg::OnCheckPreview() 
{
	// TODO: Add your control notification handler code here
	int m_int_pre;
	if(theApp.m_preview==0)
		m_int_pre=1;
	if(theApp.m_preview==1)
		m_int_pre=0;
	theApp.WriteProfileInt(REMOTE_CONTROL,"pre",m_int_pre);
	int m_int=GetProfileInt(REMOTE_CONTROL,"pre",-1);
	if (m_int>0)
	{
		if(m_int==1)
			theApp.m_preview=true;
		else if(m_int==0) 
			theApp.m_preview=false;
	}
}

void CIrDlg::OnClose() 
{
	// TODO: Add your control notification handler code here
	//this->ShowWindow(SW_HIDE);
	OnOK();
	
}

⌨️ 快捷键说明

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