| | |
| | | ON_WM_CTLCOLOR() |
| | | ON_WM_DESTROY() |
| | | ON_WM_SIZE() |
| | | ON_MESSAGE(ID_MSG_TREE_CLICK_ITEM, OnTreeClickItem) |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | |
| | | if (pAny->getPtrValue("ptr", (void*&)pPlc)) { |
| | | HTREEITEM hItem = m_treeCtrl.InsertItem(pPlc->getName().c_str(), nullptr, nullptr); |
| | | m_treeCtrl.SetItemData(hItem, (DWORD_PTR)pPlc); |
| | | m_treeCtrl.ShowWindow(SW_SHOW); |
| | | GetDlgItem(IDC_LABEL_NO_PLC)->ShowWindow(SW_HIDE); |
| | | } |
| | | } |
| | | else if (RX_CODE_REMOVE_PLC == code) { |
| | |
| | | if (hItem != nullptr) { |
| | | m_treeCtrl.DeleteItem(hItem); |
| | | } |
| | | BOOL bNoPLC = m_treeCtrl.GetChildItem(nullptr) == nullptr; |
| | | m_treeCtrl.ShowWindow(bNoPLC ? SW_HIDE : SW_SHOW); |
| | | GetDlgItem(IDC_LABEL_NO_PLC)->ShowWindow(bNoPLC ? SW_SHOW : SW_HIDE); |
| | | } |
| | | } |
| | | |
| | |
| | | InitRxWindows(); |
| | | |
| | | |
| | | HFONT hFontDefault = (HFONT)GetStockObject(DEFAULT_GUI_FONT); |
| | | LOGFONT lf; |
| | | ::GetObject(hFontDefault, sizeof(LOGFONT), &lf); |
| | | lf.lfHeight -= 8; |
| | | lf.lfWeight = 400; |
| | | m_fontNoPlc.CreateFontIndirect(&lf); |
| | | GetDlgItem(IDC_LABEL_NO_PLC)->SetFont(&m_fontNoPlc); |
| | | |
| | | |
| | | m_treeCtrl.SetBkColor(PAGE_PLC_LIST_BACKGROUND); |
| | | m_treeCtrl.SetItemHeight(50); |
| | | ReadPLCList(); |
| | |
| | | |
| | | if (nCtlColor == CTLCOLOR_STATIC) { |
| | | pDC->SetBkColor(m_crBkgnd); |
| | | } |
| | | |
| | | if (pWnd->GetDlgCtrlID() == IDC_LABEL_NO_PLC) { |
| | | pDC->SetTextColor(RGB(128, 128, 128)); |
| | | } |
| | | |
| | | if (m_hbrBkgnd == nullptr) { |
| | |
| | | CDialogEx::OnSize(nType, cx, cy); |
| | | if (GetDlgItem(IDC_TREE1) == nullptr) return; |
| | | |
| | | CRect rcClient; |
| | | CWnd* pItem; |
| | | CRect rcClient, rcItem; |
| | | GetClientRect(&rcClient); |
| | | GetDlgItem(IDC_TREE1)->MoveWindow(12, 12, rcClient.Width() - 24, rcClient.Height() - 24); |
| | | GetDlgItem(IDC_TOOLBAR_LINE1)->MoveWindow(rcClient.right - 3, 0, |
| | | 2, rcClient.Height()); |
| | | GetDlgItem(IDC_TOOLBAR_LINE1)->Invalidate(); |
| | | |
| | | pItem = GetDlgItem(IDC_LABEL_NO_PLC); |
| | | pItem->GetClientRect(&rcItem); |
| | | pItem->MoveWindow((rcClient.Width() - rcItem.Width()) / 2, (rcClient.Height() - rcItem.Height()) / 2, |
| | | rcItem.Width(), rcItem.Height()); |
| | | } |
| | | |
| | | LRESULT CPagePlcList::OnTreeClickItem(WPARAM wParam, LPARAM lParam) |
| | | { |
| | | HTREEITEM hItem = (HTREEITEM)wParam; |
| | | ASSERT(hItem); |
| | | CPLC* pPlc = (CPLC*)m_treeCtrl.GetItemData(hItem); |
| | | ASSERT(pPlc); |
| | | theApp.m_model.notifyPtr(RX_CODE_SELECT_PLC, pPlc); |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | void CPagePlcList::ReadPLCList() |
| | | { |
| | | //m_treeCtrl.InsertItem("PLC1", nullptr, nullptr); |
| | | //m_treeCtrl.InsertItem("PLC2", nullptr, nullptr); |
| | | std::map<std::string, CPLC*>& plcs = theApp.m_model.getPlcMap(); |
| | | for (auto item : plcs) { |
| | | HTREEITEM hItem = m_treeCtrl.InsertItem(item.second->getName().c_str(), nullptr, nullptr); |
| | | m_treeCtrl.SetItemData(hItem, (DWORD_PTR)item.second); |
| | | } |
| | | if (!plcs.empty()) { |
| | | m_treeCtrl.ShowWindow(SW_SHOW); |
| | | GetDlgItem(IDC_LABEL_NO_PLC)->ShowWindow(SW_HIDE); |
| | | } |
| | | } |
| | | |
| | | BOOL CPagePlcList::PreTranslateMessage(MSG* pMsg) |
| | |
| | | |
| | | HTREEITEM item = m_treeCtrl.GetChildItem(nullptr); |
| | | while (item != nullptr) { |
| | | item = m_treeCtrl.GetNextItem(item, TVGN_NEXT); |
| | | if (m_treeCtrl.GetItemData(item) == (DWORD_PTR)pPlc) { |
| | | return item; |
| | | } |
| | | } |
| | | |
| | | return nullptr; |
| | | } |
| | | } |