void CPropTreeList::OnLButtonUp(UINT, CPoint point) { if (m_bColDrag) { CDC* pDC = GetDC(); CRect rc; GetClientRect(rc); pDC->PatBlt(m_nPrevCol - PROPTREEITEM_COLRNG/2, 0, PROPTREEITEM_COLRNG, rc.bottom, PATINVERT); ReleaseDC(pDC); m_bColDrag = FALSE; ReleaseCapture(); m_pProp->SetColumn(point.x); m_pProp->UpdateMoveAllItems(); Invalidate(); } else { LONG nHit = m_pProp->HitTest(point); CPropTreeItem* pItem; switch (nHit) { case HTBUTTON: if ((pItem = m_pProp->FindItem(point))!=NULL) { pItem->Check( FALSE ); Invalidate(); } break; default: break; } } }
void MaterialPreviewPropView::OnPropertyButtonClick(NMHDR *nmhdr, LRESULT *lresult) { NMPROPTREE *nmProp; CPropTreeItem *item; nmProp = (NMPROPTREE *)nmhdr; item = nmProp->pItem; idStr itemLabel = item->GetLabelText(); if (itemLabel == "Preview Lights") { AddLight(); } else if (itemLabel.Left(5) == "Light") { CPropTreeItem *light; int lightId = item->GetCtrlID(); int testLightNum = 0; m_Tree.DeleteItem(item); for (light = m_Tree.GetRootItem()->GetChild(); light != NULL; light = light->GetSibling()) { idStr label = light->GetLabelText(); if (label.Left(5) == "Light") { testLightNum++; light->SetLabelText(_T(va("Light #%d", testLightNum))); light->SetInfoText(_T(va("Parameters for light number %d.", testLightNum))); light->SetCtrlID(testLightNum - 1); } } materialPreview->OnDeleteLight(lightId); numLights--; } else if (itemLabel == "Custom Model") { CFileDialog dlg(TRUE); dlg.m_ofn.Flags |= OFN_FILEMUSTEXIST; item->Check(FALSE); if (dlg.DoModal()== IDOK) { item->Check(FALSE); item->SetItemValue((LPARAM)fileSystem->OSPathToRelativePath(dlg.m_ofn.lpstrFile)); m_Tree.SendNotify(PTN_ITEMCHANGED, item); } } }
void CPropTreeList::OnLButtonDblClk(UINT, CPoint point) { ASSERT(m_pProp!=NULL); m_pProp->SendNotify(NM_DBLCLK); CPropTreeItem* pItem; CPropTreeItem* pOldFocus; if ((pItem = m_pProp->FindItem(point))!=NULL && pItem->GetChild()) { switch (m_pProp->HitTest(point)) { case HTCOLUMN: break; case HTCHECKBOX: pItem->Check(!pItem->IsChecked()); m_pProp->SendNotify(PTN_CHECKCLICK, pItem); Invalidate(); break; case HTATTRIBUTE: if (!pItem->IsRootLevel()) break; // pass thru to default default: pOldFocus = m_pProp->GetFocusedItem(); m_pProp->SelectItems(NULL, FALSE); m_pProp->SetFocusedItem(pItem); pItem->Select(); if (pItem!=pOldFocus) m_pProp->SendNotify(PTN_SELCHANGE, pItem); // pass thru to HTEXPAND case HTEXPAND: if (!m_pProp->SendNotify(PTN_ITEMEXPANDING, pItem)) { pItem->Expand(!pItem->IsExpanded()); UpdateResize(); Invalidate(); UpdateWindow(); CheckVisibleFocus(); } break; } } }
void CPropTreeList::OnLButtonDown(UINT, CPoint point) { ASSERT(m_pProp!=NULL); if (m_pProp->IsDisableInput()) return; m_pProp->SendNotify(NM_CLICK); if (!m_pProp->IsWindowEnabled()) return; SetFocus(); LONG nHit = m_pProp->HitTest(point); CPropTreeItem* pItem; CRect rc; CDC* pDC; switch (nHit) { case HTCOLUMN: if (m_pProp->SendNotify(PTN_COLUMNCLICK)) break; m_bColDrag = TRUE; SetCapture(); m_nPrevCol = m_pProp->GetOrigin().x; // paint drag line pDC = GetDC(); GetClientRect(rc); pDC->PatBlt(m_nPrevCol - PROPTREEITEM_COLRNG/2, 0, PROPTREEITEM_COLRNG, rc.bottom, PATINVERT); ReleaseDC(pDC); break; case HTCHECKBOX: if ((pItem = m_pProp->FindItem(point))!=NULL) { pItem->Check(!pItem->IsChecked()); m_pProp->SendNotify(PTN_CHECKCLICK, pItem); Invalidate(); } break; case HTEXPAND: if ((pItem = m_pProp->FindItem(point))!=NULL) { if (pItem->GetChild() && !m_pProp->SendNotify(PTN_ITEMEXPANDING, pItem)) { pItem->Expand(!pItem->IsExpanded()); UpdateResize(); Invalidate(); UpdateWindow(); CheckVisibleFocus(); } } break; default: if ((pItem = m_pProp->FindItem(point))!=NULL) { CPropTreeItem* pOldFocus = m_pProp->GetFocusedItem(); m_pProp->SelectItems(NULL, FALSE); m_pProp->SetFocusedItem(pItem); pItem->Select(); Invalidate(); if (pItem!=pOldFocus) m_pProp->SendNotify(PTN_SELCHANGE, pItem); if (nHit==HTATTRIBUTE && !pItem->IsRootLevel()) { if (!m_pProp->SendNotify(PTN_PROPCLICK, pItem) && !pItem->IsReadOnly()) pItem->Activate(); } } else { m_pProp->SelectItems(NULL, FALSE); m_pProp->SetFocusedItem(NULL); m_pProp->SendNotify(PTN_SELCHANGE); Invalidate(); } break; } }