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