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

📄 bcframedlg.cpp

📁 1553B板卡的源代码,只有购买板卡才能得到的好资料
💻 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 + -