void CXySlider::DoDrag(CPoint point) { CPoint pt0 = point; HighlightGripper(true); CSize inGripper = pt0 - GetGripperRect().CenterPoint(); CPoint ptMin(m_zero - m_range + inGripper); CPoint ptMax(m_zero + m_range + inGripper); SetCapture(); while(true) { MSG msg; if(!GetMessage(&msg, NULL, 0, 0)) { break; } if(msg.message == WM_LBUTTONUP) { break; } if(GetCapture() != this) { break; } if(msg.message == WM_MOUSEMOVE) { CPoint pt = msg.pt; ScreenToClient(&pt); CheckMinMax(pt.x, ptMin.x, ptMax.x); CheckMinMax(pt.y, ptMin.y, ptMax.y); int dx = pt.x - pt0.x; int dy = pt.y - pt0.y; DoMoveBy(dx, dy); pt0 = pt; } else { DispatchMessage(&msg); } } ReleaseCapture(); HighlightGripper(false); }
void CXySlider::DoMoveBy(int cx, int cy) { m_pos.x += cx; CheckMinMax(m_pos.x, -m_range.cx, m_range.cx); m_pos.y += cy; CheckMinMax(m_pos.y, - m_range.cy, m_range.cy); RedrawWindow(); CPoint oldpos = m_externalPos; InternToExtern(); if(m_externalPos != oldpos) { NotifyParent(); } }
CBox::CBox(int iMin, int jMin, int kMin, int iMax, int jMax, int kMax, const Simbox* pSBox) { CheckMinMax(iMin, jMin, kMin, iMax, jMax, kMax); if (!pSBox) return; TruncateIndex(iMin_, jMin_, kMin_, pSBox); TruncateIndex(iMax_, jMax_, kMax_, pSBox); }