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

📄 dlgbeacon.cpp

📁 VC&Matlab混合编程实现无线电导航指示器
💻 CPP
字号:
// DlgBeacon.cpp : implementation file
//

#include "stdafx.h"
#include "RADIO.h"
#include "DlgBeacon.h"
#include "APPStatic.h"
#include "BeaconManage.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDlgBeacon dialog


CDlgBeacon::CDlgBeacon(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgBeacon::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgBeacon)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CDlgBeacon::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgBeacon)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgBeacon, CDialog)
	//{{AFX_MSG_MAP(CDlgBeacon)
	ON_WM_DRAWITEM()
	ON_WM_DESTROY()
	ON_BN_CLICKED(IDB_LOADCONFIG, OnLoadconfig)
	ON_BN_CLICKED(IDB_SAVECONFIG, OnSaveconfig)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgBeacon message handlers

BOOL CDlgBeacon::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	//创建TABSHEET
	CRect rect;
	GetClientRect(&rect);
	rect.DeflateRect(6,6);
	m_tab.Create(WS_CHILD|WS_VISIBLE|TCS_FIXEDWIDTH|TCS_OWNERDRAWFIXED|TCS_FOCUSNEVER ,CRect(0,0,0,0),this,IDS_SHEETBEACON);//TCS_OWNERDRAWFIXED指示Tab由父窗口画,WM_DRAWITEM
	m_tab.SetItemSize(CSize(100,22));
	m_tab.AddPage("",&m_dlgBeacon1,IDD_BEACON1);
	m_tab.AddPage("",&m_dlgBeacon2,IDD_BEACON2);
	m_tab.MoveWindow(&rect,TRUE);
	m_tab.Show();	
 	m_tab.SetCurSel(0);	

	CopyFromBM2Dlg();
	m_dlgBeacon1.UpdateListBox();
	m_dlgBeacon2.UpdateData(FALSE);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}


void CDlgBeacon::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
	// TODO: Add your message handler code here and/or call default
	
	//DRAWITEMSTRUCT *pDs=lpDrawItemStruct; 
	CDC *pDC=m_tab.GetDC();
	int iIndex=m_tab.GetCurSel();
	int iConunt=m_tab.GetRowCount();
	CRect rectItem;
	m_tab.GetItemRect(iIndex,&rectItem);
	POINT pt;
	for(int i=0;i<=iConunt;i++){
		pt.x=i*rectItem.Width();
		pt.y=rectItem.top;
		pt.x+=20;pt.y+=5;
		if(i==iIndex){
			pt.x=pt.x+2;
			pt.y=pt.y-3;
		}	
		CFont *pFont=m_tab.GetFont();
		LOGFONT logFont;
        pFont->GetLogFont(&logFont);
        lstrcpy(logFont.lfFaceName,TEXT("幼圆"));
		logFont.lfHeight=13;
		CFont font;
		font.CreateFontIndirect(&logFont);
	    pDC->SelectObject(&font);
		pDC->SetBkColor(::GetSysColor(COLOR_BTNFACE));
		pDC->SetTextColor(RGB(10,67,24));
		if(i==0){
		pDC->TextOut(pt.x,pt.y,"添加信标");
		}else
		{pDC->TextOut(pt.x,pt.y,"参数设置");
		}
		
	}
}

void CDlgBeacon::OnDestroy() 
{
	CDialog::OnDestroy();
	
	delete(this);
	
}

void CDlgBeacon::OnOK() 
{
	// TODO: Add extra validation here
	m_dlgBeacon1.UpdateData(TRUE);
	m_dlgBeacon2.UpdateData(TRUE);
    CopyFromDlg2BM();

	CDialog::OnOK();
}

void CDlgBeacon::OnLoadconfig() 
{   
	CString strName;
	CFileDialog fileDlg(TRUE,_T("cfg"),NULL,OFN_OVERWRITEPROMPT,
		_T("Beacon Config Files(*.cfg)|*.cfg|All Files (*.*)|*.*||"));
	if(fileDlg.DoModal()==IDOK){
		strName=fileDlg.GetPathName();
	}
	else{
		return;
	}

	CFileException fileExcep;
	CFile fileBeaconConfig;
	fileBeaconConfig.Open(strName, CFile::modeRead,&fileExcep );
	if(fileExcep.m_cause!=CFileException::none)	
	{  fileExcep.ReportError();
	    return;
	}
	CArchive ar( &fileBeaconConfig, CArchive::load);
    UINT iSchema;
	
	ar>>iSchema;
	m_dlgBeacon1.m_tempBeaconList.Serialize(ar);
    m_dlgBeacon2.Serialize(ar);

	m_dlgBeacon1.UpdateListBox();
	m_dlgBeacon2.UpdateData(FALSE);

}

void CDlgBeacon::OnSaveconfig() 
{

	CString strName;
	CFileDialog fileDlg(FALSE,_T("cfg"),NULL,OFN_OVERWRITEPROMPT,
 		_T("Beacon Config Files(*.cfg)|*.cfg|All Files (*.*)|*.*||"));
	if(fileDlg.DoModal()==IDOK){
		strName=fileDlg.GetPathName();
	}
	else{
		return;
 	}

	CFileException fileExcep;
	CFile fileBeaconConfig;
	fileBeaconConfig.Open(strName, CFile::modeWrite|CFile::modeCreate,&fileExcep );
	if(fileExcep.m_cause!=CFileException::none)	
	{  fileExcep.ReportError();
	    return;
	}
	CArchive ar( &fileBeaconConfig, CArchive::store);

	ar<<SCHEMA_BEACON;
	m_dlgBeacon1.m_tempBeaconList.Serialize(ar);
	m_dlgBeacon2.Serialize(ar);
	
}

void CDlgBeacon::CopyFromBM2Dlg(){
	CBeaconManage *pBe=APPStatic::GetMainView()->GetBeaconManage();
    m_dlgBeacon1.m_tempBeaconList.Copy(*(pBe->GetBeaconList()));
    
    m_dlgBeacon2.m_dMavInitErDisAir=pBe->m_dMavInitErDisAir;
	m_dlgBeacon2.m_dMavInitErDisGround=pBe->m_dMavInitErDisGround;
	m_dlgBeacon2.m_dMavTimeDisAir=pBe->m_dMavTimeDisAir;
	m_dlgBeacon2.m_dMavTimeDisGround=pBe->m_dMavTimeDisGround;
	m_dlgBeacon2.m_dMavWhiteErDisAir=pBe->m_dMavWhiteErDisAir;
	m_dlgBeacon2.m_dMavWhiteErDisGround=pBe->m_dMavWhiteErDisGround;
	m_dlgBeacon2.m_dBlindAir=pBe->m_dBlindAir;
	m_dlgBeacon2.m_dBlindGround=pBe->m_dBlindGround;
	m_dlgBeacon2.m_dMavInitErAzAir=pBe->m_dMavInitErAzAir;
	m_dlgBeacon2.m_dMavInitErAzGround=pBe->m_dMavInitErAzGround;
	m_dlgBeacon2.m_dMavTimeAzAir=pBe->m_dMavTimeAzAir;
	m_dlgBeacon2.m_dMavTimeAzGround=pBe->m_dMavTimeAzGround;
	m_dlgBeacon2.m_MavWhiteErAzAir=pBe->m_MavWhiteErAzAir;
	m_dlgBeacon2.m_MavWhiteErAzGround=pBe->m_MavWhiteErAzGround;
	m_dlgBeacon2.m_dDistAir=pBe->m_dDistAir;
	m_dlgBeacon2.m_dDistGround=pBe->m_dDistGround;
	m_dlgBeacon2.m_dFreq=pBe->m_dFreq;



}

void CDlgBeacon::CopyFromDlg2BM(){

	CBeaconManage *pBe=APPStatic::GetMainView()->GetBeaconManage();
    pBe->GetBeaconList()->Copy(m_dlgBeacon1.m_tempBeaconList);

    
    pBe->m_dMavInitErDisAir=m_dlgBeacon2.m_dMavInitErDisAir;
	pBe->m_dMavInitErDisGround=m_dlgBeacon2.m_dMavInitErDisGround;
	pBe->m_dMavTimeDisAir=m_dlgBeacon2.m_dMavTimeDisAir;
	pBe->m_dMavTimeDisGround=m_dlgBeacon2.m_dMavTimeDisGround;
	pBe->m_dMavWhiteErDisAir=m_dlgBeacon2.m_dMavWhiteErDisAir;
	pBe->m_dMavWhiteErDisGround=m_dlgBeacon2.m_dMavWhiteErDisGround;
	pBe->m_dBlindAir=m_dlgBeacon2.m_dBlindAir;
	pBe->m_dBlindGround=m_dlgBeacon2.m_dBlindGround;
	pBe->m_dMavInitErAzAir=m_dlgBeacon2.m_dMavInitErAzAir;
	pBe->m_dMavInitErAzGround=m_dlgBeacon2.m_dMavInitErAzGround;
	pBe->m_dMavTimeAzAir=m_dlgBeacon2.m_dMavTimeAzAir;
	pBe->m_dMavTimeAzGround=m_dlgBeacon2.m_dMavTimeAzGround;
	pBe->m_MavWhiteErAzAir=m_dlgBeacon2.m_MavWhiteErAzAir;
	pBe->m_MavWhiteErAzGround=m_dlgBeacon2.m_MavWhiteErAzGround;
	pBe->m_dDistAir=m_dlgBeacon2.m_dDistAir;
	pBe->m_dDistGround=m_dlgBeacon2.m_dDistGround;
	pBe->m_dFreq=m_dlgBeacon2.m_dFreq;


}

⌨️ 快捷键说明

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