void OCC_2dView::OnLButtonDown(UINT nFlags, CPoint point) { // save the current mouse coordinate in min myXmin=point.x; myYmin=point.y; myXmax=point.x; myYmax=point.y; if ( nFlags & CASCADESHORTCUTKEY ) { // Button MB1 down Control :start zomming // } else // if ( MULTISELECTIONKEY ) { switch (myCurrentMode) { case CurAction2d_Nothing : // start a drag DragEvent2D(point.x,point.y,-1); break; case CurAction2d_DynamicZooming : // nothing break; case CurAction2d_WindowZooming : // nothing break; case CurAction2d_DynamicPanning :// nothing break; case CurAction2d_GlobalPanning :// nothing break; default : Standard_Failure::Raise(" incompatible Current Mode "); break; } } }
void OCC_2dView::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default if ( nFlags & CASCADESHORTCUTKEY ) { return; } else // if ( Ctrl ) { switch (myCurrentMode) { case CurAction2d_Nothing : if (point.x == myXmin && point.y == myYmin) { // no offset between down and up --> selectEvent myXmax=point.x; myYmax=point.y; if (nFlags & MULTISELECTIONKEY ) MultiInputEvent2D(point.x,point.y); else InputEvent2D (point.x,point.y); } else { DrawRectangle2D(myXmin,myYmin,myXmax,myYmax,Standard_False); myXmax=point.x; myYmax=point.y; if (nFlags & MULTISELECTIONKEY) MultiDragEvent2D(point.x,point.y,1); else DragEvent2D(point.x,point.y,1); } break; case CurAction2d_DynamicZooming : // myCurrentMode = CurAction2d_Nothing; break; case CurAction2d_WindowZooming : myXmax=point.x; myYmax=point.y; DrawRectangle2D(myXmin,myYmin,myXmax,myYmax,Standard_False,LongDash); if ((abs(myXmin-myXmax)>ValZWMin) || (abs(myYmin-myYmax)>ValZWMin)) // Test if the zoom window is greater than a minimale window. { // Do the zoom window between Pmin and Pmax myV2dView->WindowFit(myXmin,myYmin,myXmax,myYmax); } myCurrentMode = CurAction2d_Nothing; break; case CurAction2d_DynamicPanning : myCurrentMode = CurAction2d_Nothing; break; case CurAction2d_GlobalPanning : myV2dView->Place(point.x,point.y,myCurZoom); myCurrentMode = CurAction2d_Nothing; break; default : Standard_Failure::Raise(" incompatible Current Mode "); break; } //switch (myCurrentMode) } // else // if ( CASCADESHORTCUTKEY ) }
//----------------------------------------------------------------------------------------- // //----------------------------------------------------------------------------------------- void CHLRView2D::OnMouseMove(UINT nFlags, CPoint point) { if ( (nFlags & MK_LBUTTON) &! (nFlags & MK_RBUTTON) ) // Left + Right is specific { if ( nFlags & CASCADESHORTCUTKEY ) { // move with MB1 and CASCADESHORTCUTKEY : on the dynamic zooming // Do the zoom in function of mouse's coordinates myV2dView->Zoom(myXmax,myYmax,point.x,point.y); myXmax = point.x; myYmax = point.y; } else // if ( CASCADESHORTCUTKEY ) { switch (myCurrentMode) { case CurAction2d_Nothing : myXmax = point.x; myYmax = point.y; DragEvent2D(myXmax,myYmax,0); break; case CurAction2d_DynamicZooming : myV2dView->Zoom(myXmax,myYmax,point.x,point.y); myXmax=point.x; myYmax=point.y; break; case CurAction2d_WindowZooming : myXmax = point.x; myYmax = point.y; break; case CurAction2d_DynamicPanning : myV2dView->Pan(point.x-myXmax,myYmax-point.y); // Realize the panning myXmax = point.x; myYmax = point.y; break; case CurAction2d_GlobalPanning : break; default : Standard_Failure::Raise(" incompatible Current Mode "); break; } } } else if ( nFlags & MK_MBUTTON) { if ( nFlags & CASCADESHORTCUTKEY ) { myV2dView->Pan (point.x-myXmax,myYmax-point.y); myXmax = point.x; myYmax = point.y; } } else if ( (nFlags & MK_RBUTTON) &! (nFlags & MK_LBUTTON) ) { } else if ( (nFlags & MK_RBUTTON) && (nFlags & MK_LBUTTON) ) { if ( nFlags & CASCADESHORTCUTKEY ) { myV2dView->Pan(point.x-myXmax,myYmax-point.y); // Realize the panning myXmax = point.x; myYmax = point.y; } } else { // No buttons myXmax = point.x; myYmax = point.y; if (nFlags & MULTISELECTIONKEY) { MultiMoveEvent2D(point.x,point.y); } else { MoveEvent2D(point.x,point.y); } } }
void OCC_2dView::OnMouseMove(UINT nFlags, CPoint point) { // ============================ LEFT BUTTON ======================= if ( (nFlags & MK_LBUTTON) &! (nFlags & MK_RBUTTON) ) // Left + Right is specific { if ( nFlags & CASCADESHORTCUTKEY ) { // move with MB1 and CASCADESHORTCUTKEY : on the dynamic zooming // Do the zoom in function of mouse's coordinates myV2dView->Zoom(myXmax,myYmax,point.x,point.y); // save the current mouse coordinate in min myXmax = point.x; myYmax = point.y; } else // if ( CASCADESHORTCUTKEY ) { switch (myCurrentMode) { case CurAction2d_Nothing : myXmax = point.x; myYmax = point.y; DrawRectangle2D(myXmin,myYmin,myXmax,myYmax,Standard_False); DragEvent2D(myXmax,myYmax,0); DrawRectangle2D(myXmin,myYmin,myXmax,myYmax,Standard_True); break; case CurAction2d_DynamicZooming : myV2dView->Zoom(myXmax,myYmax,point.x,point.y); // save the current mouse coordinate in min \n"; myXmax=point.x; myYmax=point.y; break; case CurAction2d_WindowZooming : myXmax = point.x; myYmax = point.y; DrawRectangle2D(myXmin,myYmin,myXmax,myYmax,Standard_False,LongDash); DrawRectangle2D(myXmin,myYmin,myXmax,myYmax,Standard_True,LongDash); break; case CurAction2d_DynamicPanning : myV2dView->Pan(point.x-myXmax,myYmax-point.y); // Realize the panning myXmax = point.x; myYmax = point.y; break; case CurAction2d_GlobalPanning : // nothing break; default : Standard_Failure::Raise(" incompatible Current Mode "); break; }// switch (myCurrentMode) }// if ( nFlags & CASCADESHORTCUTKEY ) else } else // if ( nFlags & MK_LBUTTON) // ============================ MIDDLE BUTTON ======================= if ( nFlags & MK_MBUTTON) { if ( nFlags & CASCADESHORTCUTKEY ) { myV2dView->Pan(point.x-myXmax,myYmax-point.y); // Realize the panning myXmax = point.x; myYmax = point.y; } } else // if ( nFlags & MK_MBUTTON) // ============================ RIGHT BUTTON ======================= if ( (nFlags & MK_RBUTTON) &! (nFlags & MK_LBUTTON) ) // Left + Right is specific { }else //if ( nFlags & MK_RBUTTON) if ( (nFlags & MK_RBUTTON) && (nFlags & MK_LBUTTON) ) { // in case of Left + Right : same as Middle if ( nFlags & CASCADESHORTCUTKEY ) { myV2dView->Pan(point.x-myXmax,myYmax-point.y); // Realize the panning myXmax = point.x; myYmax = point.y; } }else //if ( nFlags & MK_RBUTTON)&& (nFlags & MK_LBUTTON) // ============================ NO BUTTON ======================= { // No buttons myXmax = point.x; myYmax = point.y; if (nFlags & MULTISELECTIONKEY) MultiMoveEvent2D(point.x,point.y); else MoveEvent2D(point.x,point.y); } }