📄 bcframedlg.cpp
字号:
// BCFrameDlg.cpp : implementation file
//
#include "stdafx.h"
#include "SF1553.h"
#include "BCFrameDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBCFrameDlg dialog
CBCFrameDlg::CBCFrameDlg(CWnd* pParent /*=NULL*/)
: CDialog(CBCFrameDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CBCFrameDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CBCFrameDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBCFrameDlg)
DDX_Control(pDX, IDC_BCFRAME_ED_FMCNT, m_edFMsgCnt);
DDX_Control(pDX, IDC_BCFRAME_ED_MCNT, m_edMsgCnt);
DDX_Control(pDX, IDC_BCF_LS_FRM, m_lsFrm);
DDX_Control(pDX, IDC_BCF_LS_MSG, m_lsMsg);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBCFrameDlg, CDialog)
//{{AFX_MSG_MAP(CBCFrameDlg)
ON_BN_CLICKED(IDC_BCF_BT_ADD, OnBcfBtAdd)
ON_BN_CLICKED(IDC_BCF_BT_INS, OnBcfBtIns)
ON_BN_CLICKED(IDC_BCF_BT_DEL, OnBcfBtDel)
ON_LBN_DBLCLK(IDC_BCF_LS_MSG, OnDblclkBcfLsMsg)
ON_LBN_DBLCLK(IDC_BCF_LS_FRM, OnDblclkBcfLsFrm)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBCFrameDlg message handlers
BOOL CBCFrameDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
char c[80];
int len=0;
int i = 0, j = 0;
int rt=0;
WORD pid=0, eid=0;
len = g_MsgsVec.num;
// Init Message List
//
this->m_lsMsg.ResetContent();
for (i = 0; i < len; i++)
{
m_lsMsg.AddString(g_MsgsVec.msgAry[i].msgname);
}
itoa(len, c, 10);
m_edMsgCnt.SetWindowText(c);
// Init Frame Message List
//
len = g_FrameConf.num;
this->m_lsFrm.ResetContent();
for (i = 0; i < len; i++)
{
m_lsFrm.AddString(g_FrameConf.msgname[i]);
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CBCFrameDlg::OnBcfBtAdd()
{
// TODO: Add your control notification handler code here
int cnt=0;
char c[80];
//char c2[80];
int selid=0;
cnt = this->m_lsFrm.GetCount(); // check message count
if (cnt >= MSG_MAX)
{
MessageBox(TEXT("帧中最多只能添加4095条消息!"), TEXT("信息提示"), MB_OK | MB_ICONINFORMATION);
return;
}
selid = this->m_lsMsg.GetCurSel();
if (selid == LB_ERR)
{
MessageBox(TEXT("请从消息列表中选择一条消息!"), TEXT("信息提示"), MB_OK | MB_ICONINFORMATION);
return;
}
memset(c, 0, sizeof(c));
this->m_lsMsg.GetText(selid, c);
/*
cnt = this->m_lsFrm.GetCount(); // get list count of frame
for (int i = 0; i < cnt; i++) // Periods Message
{
memset(c2, 0, sizeof(c2));
m_lsFrm.GetText(i, c2);
if(strcmp(c, c2) == 0)
{
return;
}
}
*/
this->m_lsFrm.AddString(c);
cnt = this->m_lsFrm.GetCount(); // check message count
itoa(cnt, c, 10);
m_edFMsgCnt.SetWindowText(c);
return;
}
void CBCFrameDlg::OnBcfBtIns()
{
// TODO: Add your control notification handler code here
int cnt=0;
char c[80];
int selid=0;
cnt = this->m_lsFrm.GetCount(); // check message count
if ((cnt>=MSG_MAX))
{
MessageBox(TEXT("帧中最多只能添加4095条消息!"), TEXT("信息提示"), MB_OK | MB_ICONINFORMATION);
return;
}
selid = this->m_lsMsg.GetCurSel();
if (selid==LB_ERR)
{
MessageBox(TEXT("请从消息列表中选择一条消息!"), TEXT("信息提示"), MB_OK | MB_ICONINFORMATION);
return;
}
memset(c, 0, sizeof(c));
this->m_lsMsg.GetText(selid, c);
selid = this->m_lsFrm.GetCurSel();
if (selid==LB_ERR)
{
this->m_lsFrm.InsertString(0, c);
}
else
{
this->m_lsFrm.InsertString(selid, c);
}
cnt = this->m_lsFrm.GetCount(); // check message count
itoa(cnt, c, 10);
this->m_edFMsgCnt.SetWindowText(c);
}
void CBCFrameDlg::OnBcfBtDel()
{
// TODO: Add your control notification handler code here
int selid=0;
int cnt=0;
char c[80];
cnt = this->m_lsFrm.GetCount(); // check message count
if ((cnt==0)||(cnt==LB_ERR))
{
MessageBox(TEXT("帧列表为空!"), TEXT("信息提示"), MB_OK | MB_ICONINFORMATION);
return;
}
selid = this->m_lsFrm.GetCurSel();
if (selid==LB_ERR)
{
this->m_lsFrm.DeleteString(cnt-1);
}
else
{
this->m_lsFrm.DeleteString(selid);
}
cnt = this->m_lsFrm.GetCount(); // check message count
itoa(cnt, c, 10);
this->m_edFMsgCnt.SetWindowText(c);
}
void CBCFrameDlg::OnOK()
{
// TODO: Add extra validation here
int i=0, j=0, k=0;
int idx=0, id=0;
int len=0;
int cnt=0;
WORD fid=0;
char c[80];
// clear Frm Conf Block
//
memset(&g_FrameConf, 0, sizeof(STRUCT_FRM_CONF));
memset(&g_Frame, 0, sizeof(g_Frame));
cnt = this->m_lsFrm.GetCount(); // get list count of frame
if (cnt > 0)
{
// Configure Conf Frame Block
//
g_FrameConf.num = 0;
for (i=0; i<cnt; i++) // Periods Message
{
// find message by name in Msg Queue
//
memset(c, 0, sizeof(c));
m_lsFrm.GetTextLen(i);
m_lsFrm.GetText(i, c);
id = Msg_isExist(&g_MsgsVec, c);
if (id >= 0)
{
//Frame conf
g_FrameConf.num += 1;
for (j = 0; j < MSGNAME_MAX; j++)
{
g_FrameConf.msgname[i][j] = g_MsgsVec.msgAry[id].msgname[j];
}
//Frame self
g_Frame.MSGNum += 1;
g_Frame.SelfMSG[i].RetryEnable = g_MsgsVec.msgAry[id].msg.RetryEnable;
g_Frame.SelfMSG[i].ChannelSelect = g_MsgsVec.msgAry[id].msg.ChannelSelect;
g_Frame.SelfMSG[i].InterMSGGapTime = g_MsgsVec.msgAry[id].msg.InterMSGGapTime;
g_Frame.SelfMSG[i].MSGFormat = g_MsgsVec.msgAry[id].msg.MSGFormat;
for( j = 0; j < MSGBLOCKSIZE; j++)
{
g_Frame.SelfMSG[i].MSGBlock[j] = g_MsgsVec.msgAry[id].msg.MSGBlock[j];
}
}
}
} // end of if (cnt>0)
CDialog::OnOK();
}
void CBCFrameDlg::OnCancel()
{
// TODO: Add extra cleanup here
CDialog::OnCancel();
}
void CBCFrameDlg::OnDblclkBcfLsMsg()
{
// TODO: Add your control notification handler code here
OnBcfBtAdd();
}
void CBCFrameDlg::OnDblclkBcfLsFrm()
{
// TODO: Add your control notification handler code here
OnBcfBtDel();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -