?? ~rightchannel.~cpp
字號:
// RightChannel.cpp : implementation file
//
#include "stdafx.h"
#include "..\dvrmanager.h"
#include "net.h"
#include "RightChannel.h"
#include "../utils/common.h"
#include "../video/video_channel.h"
#include "../utils/custom_msgs.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CRightChannel dialog
CRightChannel::CRightChannel(CWnd* pParent /*=NULL*/)
: baseclass(CRightChannel::IDD, pParent), mask(&m_grid)
{
//{{AFX_DATA_INIT(CRightChannel)
m_channel = -1;
m_motor = -1;
m_which = -1;
m_channel_title = _T("");
m_video_lost_alert = 0;
//}}AFX_DATA_INIT
ZeroMemory(&opt, sizeof(opt));
}
void CRightChannel::DoDataExchange(CDataExchange* pDX)
{
baseclass::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CRightChannel)
DDX_Control(pDX, ID_S, m_s);
DDX_Control(pDX, IDC_RADIO1, m_rd2);
DDX_Control(pDX, IDRD_VIDEO_LOST_ALERT, m_rd1);
DDX_Control(pDX, IDCB_WHICH, m_cbwhich);
DDX_Control(pDX, IDCB_CHANNEL, m_cbchannel);
DDX_Control(pDX, IDBTN_SET, m_btn_set);
DDX_Control(pDX, IDBTN_REFRESH, m_btn_refresh);
DDX_Control(pDX, ID_TITLE, m_title);
DDX_Control(pDX, ID_FLOWER, m_grid);
DDX_Control(pDX, ID_6, m_6);
DDX_Control(pDX, ID_2, m_2);
DDX_Control(pDX, ID_7, m_7);
DDX_Control(pDX, ID_5, m_5);
DDX_Control(pDX, ID_4, m_4);
DDX_Control(pDX, ID_3, m_3);
DDX_Control(pDX, ID_1, m_1);
DDX_CBIndex(pDX, IDCB_CHANNEL, m_channel);
DDX_CBIndex(pDX, IDCB_MOTOR, m_motor);
DDX_CBIndex(pDX, IDCB_WHICH, m_which);
DDX_Text(pDX, IDED_CHNL_TITLE, m_channel_title);
DDX_Radio(pDX, IDRD_VIDEO_LOST_ALERT, m_video_lost_alert);
//}}AFX_DATA_MAP
// if( !pDX->m_bSaveAndValidate )
// {
// m_grid.update();
// }
/*
* 當(dāng)允許/禁止MD時, 更新控件狀態(tài)
*/
/*
static UINT ids[] =
{
ID_FLOWER, //IDCB_REC_DAY,
// IDED_CHNL_TITLE
};
for( int i=0; i<SIZE_OF(ids); i++ )
{
GetDlgItem(ids[i])->EnableWindow(m_video_lost_alert);
}
*/
}
BEGIN_MESSAGE_MAP(CRightChannel, baseclass)
//{{AFX_MSG_MAP(CRightChannel)
ON_CBN_SELCHANGE(IDCB_WHICH, OnSelchangeWhich)
ON_BN_CLICKED(IDBTN_REFRESH, OnRefresh)
ON_CBN_SELCHANGE(IDCB_CHANNEL, OnSelchangeChannel)
ON_BN_CLICKED(IDBTN_SET, OnSet)
ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
ON_BN_CLICKED(IDRD_VIDEO_LOST_ALERT, OnVideoLostAlert)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_UPDATE_DATA, on_update_data)
MSG2(NTM_OPT_GET_OK, on_get_ok)
MSG2(NTM_OPT_SET_OK, on_set_ok)
MSG2(WM_LOGGED_OUT, on_logged_out)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRightChannel message handlers
BOOL CRightChannel::OnInitDialog()
{
baseclass::OnInitDialog();
init_label(m_1).SetFontBold(TRUE);
init_label(m_3);
init_label(m_4);
init_label(m_5);
init_label(m_7);
init_title(m_title);
m_grid.init();
m_grid.set_grid(8,8);
m_grid.update();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
LRESULT CRightChannel::on_update_data(WPARAM w, LPARAM)
{
if( w == FALSE )
{
char* str = new char [opt.channel_name_length+1];
strncpy(str, (char*)opt.channel_name, opt.channel_name_length);
str[opt.channel_name_length] = 0;
m_channel = opt.channel;
m_channel_title = str;
memcpy(mask->mask_data(), opt.image_mask, 8);
m_motor = opt.camera_type;
m_video_lost_alert = opt.alarm;
delete[] str;
}
UpdateData(w);
return 0;
}
//void CRightChannel::on_get_ok(DWORD ip, USHORT port, NET_OPTIONS no, void* stuff)
MSG3(on_get_ok, CRightChannel)
{
NET_OPTIONS no = (NET_OPTIONS)w;
void* stuff = (void*)l;
memcpy(&opt, stuff, sizeof(opt));
PostMessage(WM_UPDATE_DATA, FALSE);
info_balloon(IDS_CHNL_GET);
return 0;
}
//void CRightChannel::on_set_ok(DWORD ip, USHORT port, NET_OPTIONS no)
MSG3(on_set_ok, CRightChannel)
{
info_balloon(IDS_CHNL_SET);
return 0;
}
void CRightChannel::on_join()
{
if( m_cbwhich.GetCount() == 0)
{
fill_combo(&m_cbwhich);
m_cbchannel.EnableWindow(FALSE);
}
mask = &m_grid;
}
void CRightChannel::on_leave()
{
//m_cbchannel.ResetContent();
mask->clear_grid();
}
CString CRightChannel::get_alias()
{
CString alias;
UpdateData();
if( m_which == -1 )
return CString();
m_cbwhich.GetLBText(m_which, alias);
return alias;
}
void CRightChannel::OnSelchangeWhich()
{
GET_ALIAS;
fill_combo_chnls(alias, &m_cbchannel);
m_cbchannel.EnableWindow(!alias.IsEmpty());
m_channel = 0;
UpdateData(FALSE);
OnSelchangeChannel();
}
void CRightChannel::OnRefresh()
{
GET_ALIAS;
get_net_opt(alias, OPT_TITLE, m_channel, m_hWnd);
}
void CRightChannel::OnSelchangeChannel()
{
OnRefresh();
update_mask();
}
void CRightChannel::OnSet()
{
GET_ALIAS;
opt.alarm = m_video_lost_alert;
opt.camera_type = m_motor;
memcpy(opt.image_mask, mask->mask_data(), 8);
opt.channel = m_channel;
strcpy((char*)opt.channel_name, m_channel_title);
opt.channel_name_length = strlen(m_channel_title);
set_net_opt(alias, OPT_TITLE, &opt, m_hWnd);
}
void CRightChannel::OnRadio1()
{
UpdateData();
update_mask();
}
void CRightChannel::OnVideoLostAlert()
{
UpdateData();
update_mask();
}
void CRightChannel::update_mask()
{
GET_ALIAS;
video_channel* vc = who_opened_it(alias, m_channel);
if( vc )
{
m_grid.clear_grid();
mask = vc;
}
else
{
if( mask != &m_grid )
{
mask->clear_grid();
mask = &m_grid;
}
}
mask->set_grid(8,8);
// if( m_video_lost_alert )
// mask->set_grid(8,8);
// else
// mask->clear_grid();
}
ON_LOGGED_OUT(CRightChannel);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -