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

📄 advemulationdlg.cpp

📁 mod_RSsim
💻 CPP
字号:
// AdvEmulationDlg.cpp : implementation file
//

#include "stdafx.h"
#include "AdvEmulationDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CAdvEmulationDlg dialog


CAdvEmulationDlg::CAdvEmulationDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CAdvEmulationDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAdvEmulationDlg)
	m_numInputs = 0;
	m_numOutputs = 0;
	m_numHolding = 0;
	m_numExtended = 0;
	m_numAnalogs = 0;
	m_MOSCADchecks = FALSE;
	m_PDUSize = 0;
	m_modifyThenRespond = FALSE;
	m_disableWrites = FALSE;
	m_numSeperate = 0;
	m_seperateRegisters = FALSE;
	//}}AFX_DATA_INIT
   m_numDisabledControls = 0;
   m_topic.SetHelpTopic("Animation");
}


void CAdvEmulationDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAdvEmulationDlg)
	DDX_Control(pDX, IDC_BMPMODE, m_staticBmpMode);
	DDX_Text(pDX, IDC_INPUTS, m_numInputs);
	DDV_MinMaxDWord(pDX, m_numInputs, 0, 65535);
	DDX_Text(pDX, IDC_OUTPUTS, m_numOutputs);
	DDV_MinMaxDWord(pDX, m_numOutputs, 0, 65535);
	DDX_Text(pDX, IDC_HOLDING, m_numHolding);
	DDV_MinMaxDWord(pDX, m_numHolding, 0, 65535);
	DDX_Text(pDX, IDC_EXTENDED, m_numExtended);
	DDV_MinMaxDWord(pDX, m_numExtended, 0, 65535);
	DDX_Text(pDX, IDC_ANALOGS, m_numAnalogs);
	DDV_MinMaxDWord(pDX, m_numAnalogs, 0, 65535);
	DDX_Check(pDX, IDC_MOSCAD, m_MOSCADchecks);
	DDX_Text(pDX, IDC_PDUSIZE, m_PDUSize);
	DDV_MinMaxDWord(pDX, m_PDUSize, 1, 2048);
	DDX_Check(pDX, IDC_MODIFY_FIRST, m_modifyThenRespond);
	DDX_Check(pDX, IDC_DISABLEWRITES, m_disableWrites);
	DDX_Text(pDX, IDC_NUMSEPERATE, m_numSeperate);
	DDX_Check(pDX, IDC_SEPERATED, m_seperateRegisters);
	//}}AFX_DATA_MAP

   // MAX PDU is (MAX_RX_MESSAGELENGTH/2) = 2048
}


BEGIN_MESSAGE_MAP(CAdvEmulationDlg, CDialog)
	//{{AFX_MSG_MAP(CAdvEmulationDlg)
	ON_BN_CLICKED(IDC_DEFAULTS, OnDefaults)
	ON_BN_CLICKED(IDC_MAXIMUM, OnMaximum)
	ON_BN_CLICKED(IDC_SEPERATED, OnSeperatedClicked)
	ON_BN_CLICKED(IDC_BMPMODE, OnBmpmodeClicked)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAdvEmulationDlg message handlers

BOOL CAdvEmulationDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();

   //TOOLTIPS START
   m_ToolTip.Create (this);
   m_ToolTip.Activate (TRUE);

   CWnd*    pWnd = GetWindow (GW_CHILD);
   while (pWnd)
   {
       int nID = pWnd->GetDlgCtrlID ();
       if (nID != -1)
       {
           m_ToolTip.AddTool (pWnd, pWnd->GetDlgCtrlID ());
       }
       pWnd = pWnd->GetWindow (GW_HWNDNEXT);
   }
   //TOOLTIPS END
	
	UpdateData(FALSE);
   // gray/ungray
   GetDlgItem(IDC_NUMSEPERATE)->EnableWindow(m_seperateRegisters);
   m_bmpModeBitmap.LoadBitmap(m_seperateRegisters? IDB_MULTISLAVEMODE: IDB_SINGLESLAVEMODE);
   m_staticBmpMode.SetBitmap(m_bmpModeBitmap);




   // handle tooltip for disabled controls too...
   // (call this code again if U enable/disable any controls on the fly.)
   CWnd *pChildFirst,*pChild;

   m_numDisabledControls = 0;
   pChildFirst = GetWindow(GW_CHILD);
   pChild = pChildFirst;
   // enumerate all controls in this window 
   while (TRUE)
   {
      if (!pChild->IsWindowEnabled())
      { // add control to our list
         m_pDisabledControls[m_numDisabledControls] = pChild;
         m_numDisabledControls++;
      }
      pChild = pChild->GetNextWindow(GW_HWNDNEXT);
      if ((pChildFirst == pChild)||(NULL==pChild))
         break;
   }
   //TOOLTIPS END

   return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

// ------------------------------- OnOK -----------------------------------
void CAdvEmulationDlg::OnOK() 
{
	if (UpdateData(TRUE))
   	CDialog::OnOK();
   // else do nothing
}

// ------------------------------- OnDefaults --------------------------------
// load default settings
void CAdvEmulationDlg::OnDefaults() 
{
	m_numInputs = 10000;
	m_numOutputs = 10000;
	m_numHolding = 10000;
	m_numExtended = 10000;
	m_numAnalogs = 10000;
   m_PDUSize = 128;  // (Note : 128 = 256 bytes)
   m_disableWrites = FALSE;     // simple test

   m_MOSCADchecks = FALSE;
   m_modifyThenRespond = TRUE;
   UpdateData(FALSE);	
}

void CAdvEmulationDlg::OnMaximum() 
{
	// TODO: Add your control notification handler code here
	m_numInputs = 65535;
	m_numOutputs = 65535;
	m_numHolding = 65535;
	m_numExtended = 65535;
	m_numAnalogs = 65535;
   m_PDUSize = MAX_RX_MESSAGELENGTH/2; // (Note : 2048 = 4096 bytes)

   UpdateData(FALSE);	
	
}

// ------------------------ OnSeperatedClicked -------------------------------
// User wants to toggle modes between having seperate resgiters per PLC station 
// and having one register for all stations:
// Seperate registers are accomplished by taking the station ID, and multiplying 
// it by the number of registers per station. 
// Thus total registers = 256 * registers-per-station.
//
void CAdvEmulationDlg::OnSeperatedClicked() 
{

   UpdateData(TRUE); // get settings
   
   // gray/ungray
   GetDlgItem(IDC_NUMSEPERATE)->EnableWindow(m_seperateRegisters);
   // unload and the load correct bitmap.
   m_bmpModeBitmap.DeleteObject();
   m_bmpModeBitmap.LoadBitmap(m_seperateRegisters? IDB_MULTISLAVEMODE: IDB_SINGLESLAVEMODE);
   m_staticBmpMode.SetBitmap(m_bmpModeBitmap);

}

// -------------------------- OnBmpmodeClicked -------------------------------
// user clicks on the bitmap. NOT WORKING.
void CAdvEmulationDlg::OnBmpmodeClicked() 
{
	// Toggle mode:
   UpdateData(TRUE); // get settings

   CheckDlgButton(IDC_SEPERATED, !m_seperateRegisters);

   // call member to update things
	OnSeperatedClicked();
}

// -------------------------- PreTranslateMessage ----------------------------
// overridden so we can get tooltips to work
BOOL CAdvEmulationDlg::PreTranslateMessage(MSG* pMsg) 
{
    // TOOLTIPS START
    if (m_hWnd)
    {
      // catter for disabled controls too      
      HandleTooltipsActivation(pMsg, this, m_pDisabledControls, m_numDisabledControls, &m_ToolTip);
      // catch mouse down over the control
      return CDialog::PreTranslateMessage(pMsg);
    }
    return (FALSE);
    // TOOLTIPS END
}

⌨️ 快捷键说明

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