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

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

?? mod_rssimdlg.cpp

?? 用于開發Modbus工業級通信
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
	ON_COMMAND(IDH_ABOUT, OnAbout)
	ON_COMMAND(IDH_TRANSPARENCY, OnTransparencyToggle)
	ON_COMMAND(IDH_TOGGLEDISP, OnToggleDisplay)
	ON_BN_CLICKED(IDC_PAUSECOMMS, OnPausecomms)
	ON_BN_CLICKED(IDC_TRACKCOMMS, OnTrackcomms)
	ON_WM_VSCROLL()
	ON_WM_SIZE()
	ON_CBN_SELCHANGE(IDC_PROTOCOL, OnSelchangeProtocol)
	ON_BN_CLICKED(IDC_TRAININGSIM, OnTraining)
	ON_BN_CLICKED(IDC_CLEARCOMMS, OnClearcomms)
	ON_COMMAND(IDH_EMULATION, OnEmulation)
	ON_COMMAND(IDH_SETTINGS, OnSettings)
	ON_COMMAND(IDH_LOAD, OnLoad)
	ON_COMMAND(IDH_SAVE, OnSave)
	ON_COMMAND(IDH_NOISE, OnNoise)
	ON_COMMAND(IDH_ERASE, OnZeroes)
	ON_COMMAND(IDH_HELP, OnAbout)
	ON_BN_CLICKED(IDB_TOGGLEDISP, OnToggleDisplay)
	ON_BN_CLICKED(IDC_SHOWCOMMSTIME, OnShowcommstimeClicked)
	//}}AFX_MSG_MAP
   ON_WM_GETMINMAXINFO()
   ON_REGISTERED_MESSAGE( wm_LoadRegisters, OnLoad )
END_MESSAGE_MAP()

CMOD_simDlg *pGlobalDialog;

/////////////////////////////////////////////////////////////////////////////
// CMOD_simDlg message handlers


// ----------------------------- MyProcessingLoop----------------------------
// This is a little secondary message processing loop used when creating RS servers
// This routine allows the GUI to repaint itself and update as well as perform 
// some connections/comms on any servers threads that are already running. In the 
// Ethernet simulator version, this method would handle all the extra listen socket 
// creation etc..
//
// A HourGlass cursor during this time is used to precent anyone clicking buttons and 
// getting us into any killer loops.
BOOL CMOD_simDlg::MyProcessingLoop(const int loops)
{
LONG loopCount=loops;
MSG msg;
   
   // Secondary message loop
   
   while ((PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))&&(loopCount>=0))
   {
      loopCount--;
      if (msg.message == WM_QUIT)
      {
         // Repost the QUIT message so that it will be retrieved by the
         // primary GetMessage() loop.
         PostQuitMessage(msg.wParam);
         return FALSE;
      }
      // Pre-process message if required (TranslateAccelerator etc.)
      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }
   return(TRUE);
} // MyProcessingLoop

// -------------------------- PacketsReceivedInc -------------------------
void CMOD_simDlg::PacketsReceivedInc()
{
   //
   m_PacketsReceived++;
} // PacketsReceivedInc

// ---------------------------- PacketsSentInc ----------------------------
void CMOD_simDlg::PacketsSentInc()
{
   //
   m_PacketsSent++;
} // PacketsSentInc

// ------------------------------- GetWordValue -------------------------------
// return (typically 16) bits as an integer value
DWORD CMOD_simDlg::GetWordValue(const LONG area, const DWORD startBit, const DWORD numBits)
{
DWORD registerValue = 0;

   if (IsDlgButtonChecked(IDC_CLONE))
      for (DWORD i=0 ; i<numBits ; i++)  //gather bits in backwards
         registerValue += PLCMemory[area][startBit+i]<<i;
   else
      for (DWORD i=0 ; i<numBits ; i++)
         registerValue += PLCMemory[area][startBit+(numBits-i-1)]<<i;
   return (registerValue);
} // GetWordValue

// ------------------------------- SetWordValue -------------------------------
// re-pack (typically 16) bits into their individual bits
void CMOD_simDlg::SetWordValue(const LONG area, const DWORD startBit, const DWORD dwValue, const DWORD numBits)
{
// lock the memory for writting
CMemWriteLock lk(PLCMemory.GetMutex());

   if (lk.IsLocked())
      return;
   if (IsDlgButtonChecked(IDC_CLONE))
   {
      for (DWORD i=0 ; i<numBits ; i++)  //gather bits in backwards
         //registerValue += PLCMemory[pGlobalDialog->m_memAreaDisplayed][startBit+i]<<i;
         PLCMemory.SetAt(area, startBit+i, ((dwValue & (0x0001<<i))?1:0));
   }
   else
   {
      for (DWORD i=0 ; i<numBits ; i++)
         //registerValue += PLCMemory[pGlobalDialog->m_memAreaDisplayed][startBit+(numBits-i-1)]<<i;
         PLCMemory.SetAt(area, startBit+(numBits-i-1), ((dwValue & (0x0001<<i))?1:0));
   }
} // SetWordValue

// ------------------------------ FillComboBox ----------------------
// load an array of strings into a combo-box, then select one of them.
void CMOD_simDlg::FillComboBox(UINT id,char ** strTable, const DWORD currentsetting)
{
DWORD count;
CComboBox *pCombo = ((CComboBox*)GetDlgItem(id));

   pCombo->ResetContent();
   for (count = 0; strlen(strTable[count]); count++)
   {
#ifdef _UI_DEBUGGING
      OutputDebugString(strTable[count]);
      OutputDebugString(" added\n");
#endif
      
      pCombo->AddString(strTable[count]);
      pCombo->SetItemData(count,  count);
      if (count == currentsetting)
         pCombo->SetCurSel(count);
   }
} // FillComboBox

// -------------------------------------- SetAddressFormatHex -----------------
// call the contained control
void CMOD_simDlg::SetAddressFormatHex(BOOL formatHEX /*= TRUE*/) 
{
   m_listCtrlData.SetAddressFormatHex(formatHEX);
}

// -------------------------------------- IsAddressFormatHex -------------------
// call the contained control
BOOL CMOD_simDlg::IsAddressFormatHex() 
{
   return (m_listCtrlData.IsAddressFormatHex());
}

// -------------------------------- SetupMySystemMenu --------------------------
// Just populate the little pop-up system menu, along with some other misc. stuff
//
void CMOD_simDlg::SetupMySystemMenu(CMenu *pSysMenu)
{
	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	if (pSysMenu != NULL)
	{
		CString strAboutMenu, strOnTop, strEmulation;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
      strOnTop.LoadString(IDS_MNU_ONTOP);
      strEmulation.LoadString(IDS_EMULATION);

		if (!strAboutMenu.IsEmpty())
		{
         // about menu
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
         //always on top
		   pSysMenu->AppendMenu(MF_STRING, IDM_ONTOP, strOnTop);
         pSysMenu->CheckMenuItem(IDM_ONTOP, MF_UNCHECKED);

         // emu. settings
		   pSysMenu->AppendMenu(MF_STRING, IDM_EMULATE, strEmulation);
         pSysMenu->CheckMenuItem(IDM_EMULATE, MF_UNCHECKED);
		}
      
      // The window transparency code for XP amd 2000 users comes in here....
      GetTNImport();
      if (NULL != m_pSetLayeredWindowAttributes)
      {
      CString alphaMenu;
		   alphaMenu.LoadString(IDS_ALPHA);
		   if (!alphaMenu.IsEmpty())
		   {
   			pSysMenu->AppendMenu(MF_SEPARATOR);
			   pSysMenu->AppendMenu(MF_STRING, IDM_ALPHA, alphaMenu);
		   }
         // up-down blend setting not working at this time
		   alphaMenu.LoadString(IDS_ALPHA_60);
		   if (!alphaMenu.IsEmpty())
		   {
			   pSysMenu->AppendMenu(MF_STRING, IDM_ALPHA_60, alphaMenu);
		   }
		   alphaMenu.LoadString(IDS_ALPHA_70);
		   if (!alphaMenu.IsEmpty())
		   {
			   pSysMenu->AppendMenu(MF_STRING, IDM_ALPHA_70, alphaMenu);
		   }      
      }
      alphaBlendON = FALSE;
      alphaBlendFactor = 70;
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIconMB, TRUE);			// Set big icon
	SetIcon(m_hIconMB, FALSE);		   // Set small icon


} // SetupMySystemMenu


// ------------------------------ SetupMyToolBar ------------------------------
// populate the little toolbar with the controls and bitmaps
void CMOD_simDlg::SetupMyToolBar()
{
BOOL  ret;

   // TOOLBAR 
   // Tooltips for the buttons are handled by a MSG handler
   CWindowRect toolRect(GetDlgItem(IDB_TOOLBARID));
   ScreenToClient(toolRect);
   CRect borders(0,0,0,0);
   ret = m_ToolBar.CreateEx(this, /*TBSTYLE_FLAT*/TBSTYLE_BUTTON|TBSTYLE_TOOLTIPS, WS_CHILD|WS_VISIBLE|CBRS_ALIGN_TOP|CBRS_TOOLTIPS, borders, IDB_TOOLBARID);
   
   m_ToolBar.LoadBitmap(IDR_TOOLBAR1);
   m_ToolBar.SetButtons(NULL, 12);
                       // BN position, control ID, bitmap index
   m_ToolBar.SetButtonInfo(0, IDC_SAVE,      TBBS_BUTTON, 0);
   m_ToolBar.SetButtonInfo(1, IDC_LOAD,      TBBS_BUTTON, 1);
   m_ToolBar.SetButtonInfo(2, IDC_ZEROES,    TBBS_BUTTON, 2);
   m_ToolBar.SetButtonInfo(3, IDC_SETTINGS,  TBBS_BUTTON, 3);
   m_ToolBar.SetButtonInfo(4, IDC_SIMULATE,  TBBS_BUTTON, 4);
   m_ToolBar.SetButtonInfo(5, IDC_NOISE,  TBBS_BUTTON, 10);       //bitmaps 10,11

   m_ToolBar.SetButtonInfo(6, ID_SEPARATOR,  TBBS_SEPARATOR , 5);  // seperator
   m_ToolBar.SetButtonInfo(7, IDS_ABOUTBOX,  TBBS_BUTTON, 5);


   if (NULL != m_pSetLayeredWindowAttributes)
      // HF fixed index of bitmaps  m_ToolBar.SetButtonInfo(8, IDB_ALPHABLEND,  TBBS_BUTTON, 8);   //bitmaps 7,8 & 9
      m_ToolBar.SetButtonInfo(8, IDB_ALPHABLEND,  TBBS_BUTTON, 7);   //bitmaps 7,8 & 9
   else // pleb O/S's just get a seperator not a button
      m_ToolBar.SetButtonInfo(8, ID_SEPARATOR,  TBBS_SEPARATOR , 5);    // seperator
   m_ToolBar.SetButtonInfo(9, IDC_EMULATION,      TBBS_BUTTON, 12);
   m_ToolBar.SetButtonInfo(10, ID_SEPARATOR,  TBBS_SEPARATOR , 5);      // seperator
   m_ToolBar.SetButtonInfo(11, IDCANCEL,      TBBS_BUTTON, 6);
   
   //ret = m_ToolBar.LoadToolBar(IDR_TOOLBAR1);

   m_ToolBar.MoveWindow(EXPAND_RECT(toolRect));
} // SetupMyToolBar


static CResizer::CBorderInfo s_bi[] = {
   {IDC_SERVERSTATS,     {CResizer::eFixed, IDC_MAIN, CResizer::eLeft},   // left side
                         {CResizer::eFixed, IDC_MAIN, CResizer::eTop},    // top
                         {CResizer::eWidth, IDC_MAIN, CResizer::eRight},  // right side
                         {CResizer::eHeight,IDC_MAIN, CResizer::eBottom}},// bottom

   {IDC_LAMPRX,          {CResizer::eFixed, IDC_SERVERSTATS, CResizer::eRight},   // left side
                         {CResizer::eFixed, IDC_SERVERSTATS, CResizer::eTop},    // top
                         {CResizer::eWidth, IDC_MAIN, CResizer::eRight},  // right side
                         {CResizer::eHeight,IDC_MAIN, CResizer::eTop}},// bottom
   {IDC_LAMPTX,          {CResizer::eFixed, IDC_SERVERSTATS, CResizer::eRight},   // left side
                         {CResizer::eFixed, IDC_SERVERSTATS, CResizer::eTop},    // top
                         {CResizer::eWidth, IDC_MAIN, CResizer::eRight},  // right side
                         {CResizer::eHeight,IDC_MAIN, CResizer::eTop}},// bottom

   {IDB_TOOLBARID,       {CResizer::eFixed, IDC_MAIN, CResizer::eRight},   // left side
                         {CResizer::eFixed, IDC_MAIN, CResizer::eTop},    // top
                         {CResizer::eWidth, IDC_MAIN, CResizer::eRight},  // right side

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av影院午夜一区| 精品蜜桃在线看| 国产精品18久久久久久久网站| 亚洲欧美日韩国产一区二区三区 | 91精品国产全国免费观看| 91小视频在线观看| 91在线小视频| 欧美在线影院一区二区| 色偷偷成人一区二区三区91| 99re66热这里只有精品3直播 | 久久婷婷国产综合精品青草| 91精品免费在线观看| 欧美一区二区三区的| 欧美一区二区视频在线观看| 欧美一级搡bbbb搡bbbb| 精品成人私密视频| 国产色婷婷亚洲99精品小说| 国产日产欧美精品一区二区三区| 国产日韩精品一区| 中文字幕日本不卡| 亚洲最色的网站| 亚洲va天堂va国产va久| 日本美女视频一区二区| 国产一区二区三区免费播放| 国产成人av电影免费在线观看| 99精品在线观看视频| 91久久精品国产91性色tv| 这里只有精品99re| 精品美女一区二区三区| 日韩码欧中文字| 首页国产丝袜综合| 国产高清久久久| 在线观看日韩电影| 欧美xxxx老人做受| 成人免费在线视频| 免费观看久久久4p| 91亚洲精品一区二区乱码| 欧美日韩久久一区| 国产日产欧美一区| 日韩极品在线观看| av在线不卡网| 精品国产欧美一区二区| 一区二区三区精品在线观看| 久久激情五月激情| 色综合天天综合网天天看片| 欧美成人国产一区二区| 亚洲乱码国产乱码精品精的特点 | 69堂成人精品免费视频| 国产午夜精品一区二区三区嫩草 | 偷偷要91色婷婷| 不卡视频一二三| 精品日韩一区二区三区免费视频| 1区2区3区欧美| 激情成人午夜视频| 欧美日韩精品福利| 中文av一区特黄| 美女诱惑一区二区| 色成人在线视频| 中文字幕欧美日韩一区| 久久精品国产免费看久久精品| 丁香桃色午夜亚洲一区二区三区| 日韩视频123| 亚洲国产精品久久不卡毛片| 9久草视频在线视频精品| 26uuu精品一区二区在线观看| 日韩影院免费视频| 欧美少妇性性性| 亚洲狠狠丁香婷婷综合久久久| 国产麻豆午夜三级精品| 91精品国产欧美日韩| 亚洲成人午夜影院| 欧美伊人精品成人久久综合97| 1024成人网| 91视视频在线观看入口直接观看www| 国产欧美一区二区精品久导航| 精品在线亚洲视频| 精品国产91洋老外米糕| 韩国欧美国产1区| 精品精品国产高清a毛片牛牛| 麻豆精品新av中文字幕| 日韩视频一区二区在线观看| 久久精工是国产品牌吗| 久久精品一区二区三区不卡| 国产精品白丝jk白祙喷水网站| 日韩欧美在线1卡| 精品一区二区三区视频在线观看| 日韩欧美在线影院| 国产精品一级二级三级| 国产精品色婷婷久久58| 99re亚洲国产精品| 亚洲一区二区高清| 欧美精品丝袜久久久中文字幕| 婷婷成人激情在线网| 日韩免费一区二区| 国产91精品一区二区麻豆亚洲| 国产精品久久久久7777按摩| 一本一道久久a久久精品综合蜜臀| 亚洲人快播电影网| 91麻豆精品国产91久久久久久| 国模少妇一区二区三区| 亚洲天天做日日做天天谢日日欢| 欧美主播一区二区三区| 免费在线看成人av| 亚洲国产成人一区二区三区| 欧美在线你懂得| 蜜乳av一区二区三区| 国产精品久线观看视频| 在线观看日韩一区| 国产精品18久久久| 亚洲一级二级三级在线免费观看| 日韩欧美黄色影院| av在线播放成人| 久久爱另类一区二区小说| 亚洲美女少妇撒尿| 精品欧美一区二区在线观看| 一本色道a无线码一区v| 麻豆精品视频在线观看免费| 亚洲人成精品久久久久| 久久久久久久免费视频了| 在线观看视频一区二区欧美日韩| 国产一区二区三区四区五区美女 | 国模少妇一区二区三区| 亚洲欧美另类小说视频| 精品伦理精品一区| 色噜噜久久综合| 国产成人免费视频网站 | 国产一区二区视频在线| 成人免费一区二区三区视频 | 调教+趴+乳夹+国产+精品| 欧美国产日韩亚洲一区| 欧美一区二区视频在线观看| www.亚洲激情.com| 狠狠色丁香久久婷婷综合_中| 国产精品传媒入口麻豆| 精品国产91九色蝌蚪| 91传媒视频在线播放| a级精品国产片在线观看| 国产精品中文字幕日韩精品 | 美女被吸乳得到大胸91| 亚洲自拍偷拍网站| 亚洲日本乱码在线观看| 国产农村妇女毛片精品久久麻豆| 日韩午夜在线影院| 7878成人国产在线观看| 欧美三日本三级三级在线播放| www.亚洲激情.com| 成人网页在线观看| 成人丝袜18视频在线观看| 国产精品正在播放| 国内成人精品2018免费看| 国产在线播放一区| 韩国一区二区在线观看| 激情六月婷婷综合| 国产乱淫av一区二区三区| 国产一区二区不卡在线| 国产麻豆91精品| 激情综合色播五月| 国产一区二三区| 国产伦理精品不卡| 成人视屏免费看| 91在线播放网址| 欧美性猛交一区二区三区精品| 在线免费观看视频一区| 欧美日韩视频一区二区| 欧美日本一区二区在线观看| 欧美一级一区二区| 久久九九全国免费| 国产精品午夜久久| 亚洲人成亚洲人成在线观看图片| 亚洲午夜日本在线观看| 免费在线观看精品| 国产成人小视频| 色网综合在线观看| 91精品国产一区二区三区| 精品成人免费观看| 国产婷婷色一区二区三区在线| 中文字幕一区二区三区不卡| 亚洲视频资源在线| 日韩精品欧美精品| 国产mv日韩mv欧美| 欧美午夜寂寞影院| 久久人人爽爽爽人久久久| 亚洲精品一二三区| 裸体歌舞表演一区二区| 91亚洲精品一区二区乱码| 日韩视频免费观看高清在线视频| 久久久久国色av免费看影院| 亚洲免费资源在线播放| 蜜臀av性久久久久av蜜臀妖精| 国产91清纯白嫩初高中在线观看| 在线精品视频免费播放| 精品国产乱码久久久久久免费| 亚洲视频狠狠干| 久久精品国产一区二区三区免费看 | 一本色道久久综合狠狠躁的推荐| 欧美一卡2卡三卡4卡5免费| 中文字幕永久在线不卡| 蜜臂av日日欢夜夜爽一区| 日本乱码高清不卡字幕| 日本一区二区三区国色天香 |