| | |
| | | // TODO: 在此处添加消息处理程序代码 |
| | | for (int i = 0; i < 8; i++) { |
| | | for (int j = 0; j < 8; j++) { |
| | | if (m_pBtn[i][j] != nullptr) { |
| | | m_pBtn[i][j]->DestroyWindow(); |
| | | delete m_pBtn[i][j]; |
| | | m_pBtn[i][j] = nullptr; |
| | | if (m_pBtnUpstream[i][j] != nullptr) { |
| | | m_pBtnUpstream[i][j]->DestroyWindow(); |
| | | delete m_pBtnUpstream[i][j]; |
| | | m_pBtnUpstream[i][j] = nullptr; |
| | | } |
| | | } |
| | | } |
| | | |
| | | for (int i = 0; i < 8; i++) { |
| | | for (int j = 0; j < 4; j++) { |
| | | if (m_pBtnDwonstream[i][j] != nullptr) { |
| | | m_pBtnDwonstream[i][j]->DestroyWindow(); |
| | | delete m_pBtnDwonstream[i][j]; |
| | | m_pBtnDwonstream[i][j] = nullptr; |
| | | } |
| | | } |
| | | } |
| | |
| | | y = BTN_Y + (BTN_WIDTH + marginy) * row; |
| | | for (int col = 0; col < 8; col++) { |
| | | x = BTN_X + (BTN_WIDTH + marginx) * col; |
| | | m_pBtn[row][col] = new CBlButton(); |
| | | m_pBtn[row][col]->Create("", WS_VISIBLE, { x, y, x + 36, y + 36 }, this, 1000); |
| | | m_pBtn[row][col]->SetFaceColor(FACECOLOR_OFF); |
| | | m_pBtn[row][col]->SetFrameColor(RGB(28, 28, 28)); |
| | | m_pBtn[row][col]->SetTextColor(RGB(238, 238, 238)); |
| | | m_pBtnUpstream[row][col] = new CBlButton(); |
| | | m_pBtnUpstream[row][col]->Create("", WS_VISIBLE, { x, y, x + 36, y + 36 }, this, 1000); |
| | | m_pBtnUpstream[row][col]->SetFaceColor(FACECOLOR_OFF); |
| | | m_pBtnUpstream[row][col]->SetFrameColor(RGB(28, 28, 28)); |
| | | m_pBtnUpstream[row][col]->SetTextColor(RGB(238, 238, 238)); |
| | | } |
| | | } |
| | | |
| | | CRect rcLine; |
| | | GetDlgItem(IDC_LINE1)->GetWindowRect(&rcLine); |
| | | GetDlgItem(IDC_LINE1)->MoveWindow(BTN_X + (BTN_WIDTH + marginx) * 8 - marginx / 2, BTN_Y, |
| | | rcLine.Width(), (BTN_WIDTH + marginy) * 7 + BTN_WIDTH); |
| | | |
| | | for (int row = 0; row < 8; row++) { |
| | | y = BTN_Y + (BTN_WIDTH + marginy) * row; |
| | | for (int col = 0; col < 4; col++) { |
| | | x = BTN_X + (BTN_WIDTH + marginx) * (col + 8); |
| | | m_pBtnDwonstream[row][col] = new CBlButton(); |
| | | m_pBtnDwonstream[row][col]->Create("", WS_VISIBLE, { x, y, x + 36, y + 36 }, this, 1000); |
| | | m_pBtnDwonstream[row][col]->SetFaceColor(FACECOLOR_OFF); |
| | | m_pBtnDwonstream[row][col]->SetFrameColor(RGB(28, 28, 28)); |
| | | m_pBtnDwonstream[row][col]->SetTextColor(RGB(238, 238, 238)); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | int idy[] = { IDC_LABEL_NAME1, IDC_LABEL_NAME2, IDC_LABEL_NAME3, IDC_LABEL_NAME4, IDC_LABEL_NAME5, |
| | | IDC_LABEL_NAME6, IDC_LABEL_NAME7, IDC_LABEL_NAME8 }; |
| | | for (int i = 0; i < 8; i++) { |
| | | IDC_LABEL_NAME6, IDC_LABEL_NAME7, IDC_LABEL_NAME8, IDC_LABEL_NAME9, IDC_LABEL_NAME10, |
| | | IDC_LABEL_NAME11, IDC_LABEL_NAME12}; |
| | | for (int i = 0; i < sizeof(idy) / sizeof(int); i++) { |
| | | pItem = GetDlgItem(idy[i]); |
| | | pItem->GetWindowRect(&rcItem); |
| | | pItem->MoveWindow(BTN_X + (BTN_WIDTH + marginx) * i, |
| | |
| | | { |
| | | if (nIDEvent == TIMER_ID_SIGNAL_UPDATE) { |
| | | if (m_pEquipment) { |
| | | UpdateAllSignalStatesFromDevice(); |
| | | UpdateAllUpstreamSignalStatesFromDevice(); |
| | | UpdateAllDownstreamSignalStatesFromDevice(); |
| | | } |
| | | } |
| | | |
| | | CHMPropertyPage::OnTimer(nIDEvent); |
| | | } |
| | | |
| | | void CPageLinkSignal::UpdateAllSignalStatesFromDevice() |
| | | void CPageLinkSignal::UpdateAllUpstreamSignalStatesFromDevice() |
| | | { |
| | | ASSERT(m_pEquipment); |
| | | |
| | | for (int nRow = 0; nRow < 8; ++nRow) { |
| | | for (int nCol = 0; nCol < 8; ++nCol) { |
| | | BOOL bCurrentState = m_pEquipment->isLinkSignalUpstreamOn(nRow, nCol) && m_pEquipment->IsEnabled(); |
| | | UpdateSignalState(nRow, nCol, bCurrentState); |
| | | UpdateUpstreamSignalState(nRow, nCol, bCurrentState); |
| | | } |
| | | } |
| | | } |
| | | |
| | | void CPageLinkSignal::UpdateSignalState(int nRow, int nCol, bool bNewState) |
| | | void CPageLinkSignal::UpdateAllDownstreamSignalStatesFromDevice() |
| | | { |
| | | if (!::IsWindow(m_pBtn[nRow][nCol]->GetSafeHwnd())) { |
| | | ASSERT(m_pEquipment); |
| | | |
| | | for (int nRow = 0; nRow < 8; ++nRow) { |
| | | for (int nCol = 0; nCol < 4; ++nCol) { |
| | | BOOL bCurrentState = m_pEquipment->isLinkSignalDownstreamOn(nRow, nCol) && m_pEquipment->IsEnabled(); |
| | | UpdateDownstreamSignalState(nRow, nCol, bCurrentState); |
| | | } |
| | | } |
| | | } |
| | | |
| | | void CPageLinkSignal::UpdateUpstreamSignalState(int nRow, int nCol, bool bNewState) |
| | | { |
| | | if (!::IsWindow(m_pBtnUpstream[nRow][nCol]->GetSafeHwnd())) { |
| | | return; |
| | | } |
| | | |
| | | bool bState = ::GetProp(m_pBtn[nRow][nCol]->GetSafeHwnd(), _T("State")) == (void*)1; |
| | | bool bState = ::GetProp(m_pBtnUpstream[nRow][nCol]->GetSafeHwnd(), _T("State")) == (void*)1; |
| | | if (bState != bNewState) { |
| | | m_pBtn[nRow][nCol]->SetFaceColor(bNewState ? FACECOLOR_ON : FACECOLOR_OFF); |
| | | ::SetProp(m_pBtn[nRow][nCol]->GetSafeHwnd(), _T("State"), bNewState ? (void*)1 : (void*)0); |
| | | m_pBtnUpstream[nRow][nCol]->SetFaceColor(bNewState ? FACECOLOR_ON : FACECOLOR_OFF); |
| | | ::SetProp(m_pBtnUpstream[nRow][nCol]->GetSafeHwnd(), _T("State"), bNewState ? (void*)1 : (void*)0); |
| | | } |
| | | } |
| | | |
| | | void CPageLinkSignal::UpdateDownstreamSignalState(int nRow, int nCol, bool bNewState) |
| | | { |
| | | if (!::IsWindow(m_pBtnDwonstream[nRow][nCol]->GetSafeHwnd())) { |
| | | return; |
| | | } |
| | | |
| | | bool bState = ::GetProp(m_pBtnDwonstream[nRow][nCol]->GetSafeHwnd(), _T("State")) == (void*)1; |
| | | if (bState != bNewState) { |
| | | m_pBtnDwonstream[nRow][nCol]->SetFaceColor(bNewState ? FACECOLOR_ON : FACECOLOR_OFF); |
| | | ::SetProp(m_pBtnDwonstream[nRow][nCol]->GetSafeHwnd(), _T("State"), bNewState ? (void*)1 : (void*)0); |
| | | } |
| | | } |
| | | |