亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? triggerdlg.cpp

?? 工業強度的PLC模擬程序
?? CPP
字號:
// @dlg
//
// @module		TriggerDlg.cpp
//
//
// Maintenance:
//	
// Version		Date		Who		What
// -------		--------	---		-------------------------------------
// 7.0			06/01/97	jra		Created
//

// TriggerDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ItkPlc.h"
#include "TriggerDlg.h"
#include "ItkProtocol.h"

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


// jra 061097
#define INVALID_MAP_ENTRY	0xFFFF

/////////////////////////////////////////////////////////////////////////////
// CTriggerDlg dialog


//----(Member Function)-------------------------------------------------------
//
// @mfunc  | CTriggerDlg | CTriggerDlg |
//
// Constructor.
// Allocate your memory here.
//
CTriggerDlg::CTriggerDlg(DWORD dwMemorySize, CWnd* pParent)
	: CDialog(CTriggerDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTriggerDlg)
	m_timer_rate = 0;
	//}}AFX_DATA_INIT

	this->m_dwMemorySize = dwMemorySize;
	m_nNumTimers = 0;
}



//----(Member Function)-------------------------------------------------------
//
// @mfunc  | CTriggerDlg | CTriggerDlg |
//
// Destructor.
// Free any dynamically allocated memory here.
//
CTriggerDlg::~CTriggerDlg()
{
}




//----(Member Function)-------------------------------------------------------
//
// @mfunc void | CTriggerDlg | DoDataExchange |
//
//
void CTriggerDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTriggerDlg)
	DDX_Control(pDX, IDC_TRIGGER_REGS, m_TriggerRegisters);
	DDX_Control(pDX, IDC_EXISTING_REGS, m_ExistingRegisters);
	DDX_Text(pDX, IDC_TIMER_RATE, m_timer_rate);
	DDV_MinMaxUInt(pDX, m_timer_rate, 1, 60000);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTriggerDlg, CDialog)
	//{{AFX_MSG_MAP(CTriggerDlg)
	ON_BN_CLICKED(IDC_ADD_BUTTON, OnAddButton)
	ON_BN_CLICKED(IDC_ADDALL_BUTTON, OnAddallButton)
	ON_BN_CLICKED(IDC_REMOVE_BUTTON, OnRemoveButton)
	ON_BN_CLICKED(IDC_REMOVEALL_BUTTON, OnRemoveallButton)
	ON_BN_CLICKED(IDC_CANCEL, OnCancel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTriggerDlg message handlers


//----(Member Function)-------------------------------------------------------
//
// @mfunc BOOL | CTriggerDlg | OnInitDialog |
//
// Initialize the dialog members.
// Any any specific member initialization code here.
//
BOOL CTriggerDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	//
	//  Initialize our member variables
	//
	DWORD dwLoop;

	CString str;

	for (dwLoop = 0; dwLoop < this->m_dwMemorySize; dwLoop++)
	{
		if (m_nTriggerMap[dwLoop] == FALSE)
		{
			str.Format("%d", dwLoop);
			this->m_ExistingRegisters.AddString(str);
		}
		else
		{
			str.Format("%d", dwLoop);
			this->m_TriggerRegisters.AddString(str);
		}
	}

	//
	// Set the timer rate to the parent's rate
	//
	this->m_timer_rate = this->m_nCurrentRefreshRate;
	UpdateData(FALSE);
	
	return(TRUE);
}



//----(Member Function)-------------------------------------------------------
//
// @mfunc void | CTriggerDlg | OnAddButton |
//
// Places the selected PLC registers in the timer map.
//
void CTriggerDlg::OnAddButton() 
{
	int		nTempTriggerMap[PLC_MEMORY_SIZE], 
			nNewTimerVal;

	DWORD	dwMoved = 0,
			i;

	CString str;

	//
	// Invalidate the temp timer map
	//
	for (i = 0; i < this->m_dwMemorySize; i++)
	{
		nTempTriggerMap[i] = INVALID_MAP_ENTRY;
	}


	//
	//  Fetch the entries that were selected. Then go through and mark
	//  our global map and add them to the timer listbox
	//
	m_ExistingRegisters.GetSelItems(this->m_dwMemorySize, (LPINT)&nTempTriggerMap);
	for (i = 0; i < this->m_dwMemorySize; i++)
	{
		if (nTempTriggerMap[i] != INVALID_MAP_ENTRY)
		{
			//
			//  Add it to the timer list
			//		
			m_ExistingRegisters.GetText(nTempTriggerMap[i], str);
			m_TriggerRegisters.AddString(str);

			nNewTimerVal = atoi(str);

			//
			//  Mark the register in the timer map
			//
			this->m_nTriggerMap[nNewTimerVal] = TRUE;

			//
			// Increment the Number of Timers holder
			//
			m_nNumTimers++;
		}
		else
		{
			break;
		}
	}

	//
	//  Now delete the entries from the register box
	//
	for (i = 0; i < this->m_dwMemorySize; i++)
	{
		if (nTempTriggerMap[i] != INVALID_MAP_ENTRY)
		{
			//
			//  Remove item from exiting register list
			//
			m_ExistingRegisters.DeleteString(nTempTriggerMap[i]-dwMoved);
			dwMoved++;
		}
		else
		{
			break;
		}
	}
}



//----(Member Function)-------------------------------------------------------
//
// @mfunc void | CTriggerDlg | OnAddallButton |
//
// Places all PLC registers in the timer map.
//
void CTriggerDlg::OnAddallButton() 
{
	DWORD i;

	CString str;

	
	for (i = 0; i < this->m_dwMemorySize; i++)
	{
		//
		//  Mark the register in the timer map
		//
		this->m_nTriggerMap[i] = TRUE;
			
		//
		//  Add it to the timer list
		//			
		str.Format("%d", i);
		m_TriggerRegisters.AddString(str);
	}

	//
	//  Clear the registers listbox
	//
	m_ExistingRegisters.ResetContent();

	//
	// The the Number of Timers holder to the PLC Memory size
	//
	m_nNumTimers = PLC_MEMORY_SIZE;
}



//----(Member Function)-------------------------------------------------------
//
// @mfunc void | CTriggerDlg | OnRemoveButton |
//
// Removes the selected timers from the timer map.
//
void CTriggerDlg::OnRemoveButton() 
{
	int		nTempTriggerMap[PLC_MEMORY_SIZE], 
			nNewTimerVal;

	DWORD	dwMoved = 0,
			i;

	CString str;

	//
	// Invalid the timer map.
	//
	for (i = 0; i < this->m_dwMemorySize; i++)
	{
		nTempTriggerMap[i] = INVALID_MAP_ENTRY;
	}

	//
	//  Fetch the entries that were selected. Then go through and mark
	//  our global map and add them to the timer listbox
	//
	m_TriggerRegisters.GetSelItems(this->m_dwMemorySize, (LPINT)&nTempTriggerMap);
	for (i = 0; i < this->m_dwMemorySize; i++)
	{
		if (nTempTriggerMap[i] != INVALID_MAP_ENTRY)
		{
			//
			//  Add it to the existing list.
			//
			m_TriggerRegisters.GetText(nTempTriggerMap[i], str);
			m_ExistingRegisters.AddString(str);

			nNewTimerVal = atoi(str);

			//
			//  Unmark the register in the timer map
			//
			this->m_nTriggerMap[nNewTimerVal] = FALSE;

			//
			// Decrement the Number of Timers holder
			//
			m_nNumTimers--;
		}
		else
		{
			break;
		}
	}

	//
	//  Now delete the entries from the timer box
	//
	for (i = 0; i < this->m_dwMemorySize; i++)
	{
		if (nTempTriggerMap[i] != INVALID_MAP_ENTRY)
		{
			//
			//  Remove item from exiting register list
			//
			m_TriggerRegisters.DeleteString(nTempTriggerMap[i]-dwMoved);
			dwMoved++;
		}
		else
		{
			break;
		}
	}
}



//----(Member Function)-------------------------------------------------------
//
// @mfunc void | CTriggerDlg | OnRemoveallButton |
//
// Removes all triggers from the trigger map.
//
void CTriggerDlg::OnRemoveallButton() 
{
	DWORD i;

	CString str;

	
	for (i = 0; i < this->m_dwMemorySize; i++)
	{
		//
		//  Mark the register in the timer map
		//
		this->m_nTriggerMap[i] = FALSE;
			
		//
		//  Add it to the existing list
		//		
		str.Format("%d", i);
		m_ExistingRegisters.AddString(str);
	}

	//
	//  Clear the triggers listbox
	//
	m_TriggerRegisters.ResetContent();

	//
	// Set the Number of Timers holder to 0
	//
	m_nNumTimers = 0;
}



//----(Member Function)-------------------------------------------------------
//
// @mfunc void | CTriggerDlg | InitTimerMap |
//
// Initializes the timer map to either TRUE or FALSE (default). If it's TRUE,
// then every PLC register will be in the timer list. If it's FALSE, then
// no PLC registers will be in the timer list.
//
void CTriggerDlg::InitTimerMap(BOOL bInitVal)
{
	memset(&this->m_nTriggerMap, bInitVal, (this->m_dwMemorySize*sizeof(int)));
}



//----(Member Function)-------------------------------------------------------
//
// @mfunc BOOL | COLEServerDlg | GetTimerMap |
//
// Returns the timer map. The timer map is an array that contains
// which values should be updated.
//
void CTriggerDlg::GetTimerMap(int *nMap)
{
	memcpy(nMap, this->m_nTriggerMap, (this->m_dwMemorySize*sizeof(int)));
}



//----(Member Function)-------------------------------------------------------
//
// @mfunc BOOL | COLEServerDlg | GetNumTimers |
//
// Returns the number ot timers in the timer map
//
int CTriggerDlg::GetNumTimers(void)
{
	return (this->m_nNumTimers);
}



//----(Member Function)-------------------------------------------------------
//
// @mfunc UINT | CTriggerDlg | GetRefreshRate |
//
// Returns the refresh rate for the timer.
//
UINT CTriggerDlg::GetRefreshRate()
{
	return(this->m_timer_rate);
}



//----(Member Function)-------------------------------------------------------
//
// @mfunc BOOL | CTriggerDlg | OnCancel |
//
// Default Cancel button
// Add any code here to be executed when the user clicks the Cancel button.
//
void CTriggerDlg::OnCancel() 
{
	CDialog::OnCancel();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品在线三区| 亚洲综合视频在线观看| 日本一区二区不卡视频| 有坂深雪av一区二区精品| 久久成人av少妇免费| 色琪琪一区二区三区亚洲区| 国产日韩成人精品| 奇米色777欧美一区二区| www.日韩av| 国产视频一区二区在线| 欧美aaaaa成人免费观看视频| 99国产精品久久久| 26uuu色噜噜精品一区二区| 亚洲一区二区三区在线| 成人小视频免费在线观看| 欧美精品日韩一区| 亚洲精品国产第一综合99久久| 狠狠狠色丁香婷婷综合激情| 欧美福利电影网| 亚洲高清视频在线| 色香色香欲天天天影视综合网| 中文字幕欧美激情一区| 国产老肥熟一区二区三区| 精品美女被调教视频大全网站| 亚洲高清中文字幕| 欧美人与z0zoxxxx视频| 亚洲精品欧美在线| 97国产一区二区| 日韩久久一区二区| 高清免费成人av| 欧美极品美女视频| 国产a精品视频| 欧美国产激情一区二区三区蜜月| 国产一区二区免费视频| 久久综合九色综合欧美就去吻| 麻豆中文一区二区| 欧美精品一卡二卡| 秋霞午夜av一区二区三区 | 亚洲色图一区二区| 成人国产精品免费网站| 国产精品视频观看| 成人黄色大片在线观看| 国产精品福利av| 色婷婷久久99综合精品jk白丝| 136国产福利精品导航| 国产精品123区| 国产欧美一区二区三区网站| 9人人澡人人爽人人精品| 亚洲视频一区二区在线观看| 欧美自拍丝袜亚洲| 秋霞成人午夜伦在线观看| 久久久久久久久久久久久夜| 成人手机电影网| 一区二区不卡在线播放| 欧美日韩1234| 国产麻豆一精品一av一免费 | 色婷婷香蕉在线一区二区| 一个色妞综合视频在线观看| 制服丝袜av成人在线看| 国产乱人伦偷精品视频不卡| 国产精品久久久久影视| 欧美色成人综合| 国产原创一区二区三区| 自拍视频在线观看一区二区| 欧美日本高清视频在线观看| 国产成人免费xxxxxxxx| 一区二区在线观看视频在线观看| 欧美一区二区网站| 成人av在线影院| 日本美女视频一区二区| 国产精品久久夜| 欧美一区二区视频网站| 成人永久看片免费视频天堂| 亚洲丶国产丶欧美一区二区三区| 日韩欧美中文字幕精品| www.欧美色图| 国模大尺度一区二区三区| 玉米视频成人免费看| 国产亚洲欧美在线| 欧美日精品一区视频| 国产麻豆精品一区二区| 天堂久久一区二区三区| 国产精品毛片久久久久久久| 日韩视频一区二区三区| 3d动漫精品啪啪| av电影在线观看完整版一区二区| 日韩成人午夜精品| 亚洲人成在线播放网站岛国 | 欧美午夜一区二区| 国产一区二区h| 日韩精品欧美成人高清一区二区| 综合久久久久久| 久久久亚洲国产美女国产盗摄| 欧美日韩一区二区在线观看| 成人午夜免费视频| 麻豆精品一区二区| 午夜久久电影网| 尤物视频一区二区| 亚洲人成网站色在线观看| 久久青草欧美一区二区三区| 91精品国产综合久久久久久| 欧美性猛片xxxx免费看久爱| 99re视频精品| eeuss鲁片一区二区三区在线看| 国产一区二区网址| 麻豆成人久久精品二区三区小说| 亚洲国产成人porn| 亚洲制服丝袜av| 亚洲另类春色国产| 亚洲女女做受ⅹxx高潮| 国产精品进线69影院| 国产精品五月天| 国产精品理伦片| 国产精品女人毛片| 国产精品久久久久婷婷二区次| 国产欧美一区二区精品性色超碰| 337p粉嫩大胆色噜噜噜噜亚洲 | 久久电影网电视剧免费观看| 视频在线观看一区二区三区| 午夜伦欧美伦电影理论片| 五月激情六月综合| 首页亚洲欧美制服丝腿| 日本欧美大码aⅴ在线播放| 美国毛片一区二区| 国产老肥熟一区二区三区| 成人在线综合网| 色天天综合色天天久久| 欧美日韩黄色一区二区| 欧美一区日本一区韩国一区| 精品噜噜噜噜久久久久久久久试看| 日韩欧美一区中文| 久久久久久久网| 国产精品天天看| 亚洲伊人色欲综合网| 日韩福利电影在线观看| 国产一二精品视频| av在线不卡网| 欧美丝袜丝nylons| 日韩免费观看高清完整版| 国产欧美日韩在线看| 综合久久久久久| 日韩高清不卡在线| 成人手机在线视频| 欧美午夜寂寞影院| 久久综合色鬼综合色| 日韩一区在线免费观看| 亚洲国产毛片aaaaa无费看| 久久精品久久久精品美女| 国产91露脸合集magnet| 欧美午夜精品一区| 久久久99精品久久| 午夜视频一区二区| 国产精品一区在线| 欧美日精品一区视频| 欧美草草影院在线视频| 一区二区三区91| 国产剧情一区在线| 欧美裸体一区二区三区| 国产三级精品三级在线专区| 亚洲乱码国产乱码精品精小说 | 精品一区二区三区免费播放| 国内精品久久久久影院色| 一本大道久久a久久精二百| 欧美不卡在线视频| 亚洲国产日韩在线一区模特| 国产精品性做久久久久久| 欧美久久久影院| 国产精品久久久久久久久久免费看| 丝袜国产日韩另类美女| 99久久99久久免费精品蜜臀| 欧美成人精品高清在线播放| 一区二区三区精品视频在线| 国产乱码精品一品二品| 在线看不卡av| 欧美高清在线一区| 国产乱妇无码大片在线观看| 777色狠狠一区二区三区| 18欧美亚洲精品| 高清不卡一区二区在线| 欧美一级片在线| 亚洲一本大道在线| 99久久久免费精品国产一区二区| 日韩欧美一级二级三级久久久| 亚洲午夜免费福利视频| 91小宝寻花一区二区三区| 中文字幕精品一区 | 午夜激情久久久| 91国偷自产一区二区使用方法| 国产精品免费久久久久| 国产在线播精品第三| 精品三级av在线| 免费av成人在线| 日韩亚洲欧美高清| 日本系列欧美系列| 在线播放一区二区三区| 日韩精品一级中文字幕精品视频免费观看 | 亚洲成av人综合在线观看| 91国产精品成人| 一区二区在线观看免费视频播放| av亚洲精华国产精华精华|