mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-04 18:06:22 +03:00
558 lines
15 KiB
C++
558 lines
15 KiB
C++
// SelectionDialog.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include "SelectionDialog.h"
|
|
|
|
#include "HLRApp.h"
|
|
#include "OCC_2dView.h"
|
|
#include <ISession2D/ISession2D_Shape.h>
|
|
#include "Prs3d_Projector.hxx"
|
|
|
|
#ifdef _DEBUG
|
|
//#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
// the key for shortcut ( use to activate dynamic rotation, panning )
|
|
#define CASCADESHORTCUTKEY MK_CONTROL
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSelectionDialog dialog
|
|
|
|
CSelectionDialog::CSelectionDialog (CHLRDoc* aDoc,CWnd* pParent /*=NULL*/)
|
|
: CDialog(CSelectionDialog::IDD, pParent)
|
|
{
|
|
myDoc = aDoc;
|
|
myIsDisplayed = false;
|
|
//{{AFX_DATA_INIT(CSelectionDialog)
|
|
m_Algo = 0;
|
|
m_DisplayMode = 0;
|
|
m_NbIsos = 2;
|
|
m_DrawHiddenLine = TRUE;
|
|
m_HlrModeIsOn = TRUE;
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
void CSelectionDialog::DoDataExchange (CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CSelectionDialog)
|
|
DDX_Radio(pDX, IDC_PolyAlgo, m_Algo);
|
|
DDX_Radio(pDX, IDC_DisplayDefault, m_DisplayMode);
|
|
DDX_Text(pDX, IDC_EDIT_NBIsos, m_NbIsos);
|
|
DDX_Check(pDX, IDC_DrawHiddenLine, m_DrawHiddenLine);
|
|
DDX_Check(pDX, IDC_HlrModeIsOn, m_HlrModeIsOn);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CSelectionDialog, CDialog)
|
|
//{{AFX_MSG_MAP(CSelectionDialog)
|
|
ON_BN_CLICKED(ID_GetShape, OnGetSelectedShapes)
|
|
ON_BN_CLICKED(IDC_DisplayDefault, OnDisplayDefault)
|
|
ON_BN_CLICKED(IDC_VIsoParametrics, OnVIsoParametrics)
|
|
ON_BN_CLICKED(IDC_VApparentContour, OnVApparentContour)
|
|
ON_BN_CLICKED(IDC_VSewingEdges, OnVSewingEdges)
|
|
ON_BN_CLICKED(IDC_VsharpEdges, OnVsharpEdges)
|
|
ON_BN_CLICKED(IDC_VsmoothEdges, OnVsmoothEdges)
|
|
ON_BN_CLICKED(IDC_HsharpEdges, OnHsharpEdges)
|
|
ON_BN_CLICKED(IDC_HsmoothEdges, OnHsmoothEdges)
|
|
ON_BN_CLICKED(IDC_HSewingEdges, OnHSewingEdges)
|
|
ON_BN_CLICKED(IDC_HIsoParametrics, OnHIsoParametrics)
|
|
ON_BN_CLICKED(IDC_HApparentContour, OnHApparentContour)
|
|
ON_EN_CHANGE(IDC_EDIT_NBIsos, OnChangeEDITNBIsos)
|
|
ON_BN_CLICKED(IDC_Algo, OnAlgo)
|
|
ON_BN_CLICKED(IDC_PolyAlgo, OnPolyAlgo)
|
|
ON_BN_CLICKED(ID_Update2D, OnUpdate2D)
|
|
ON_BN_CLICKED(IDC_TopView, OnTopView)
|
|
ON_BN_CLICKED(IDC_BottomView, OnBottomView)
|
|
ON_BN_CLICKED(IDC_LeftView, OnLeftView)
|
|
ON_BN_CLICKED(IDC_RightView, OnRightView)
|
|
ON_BN_CLICKED(IDC_FrontView, OnFrontView)
|
|
ON_BN_CLICKED(IDC_BackView, OnBackView)
|
|
ON_BN_CLICKED(IDC_AxoView, OnAxoView)
|
|
ON_WM_LBUTTONDOWN()
|
|
ON_WM_LBUTTONUP()
|
|
ON_WM_RBUTTONDOWN()
|
|
ON_WM_RBUTTONUP()
|
|
ON_WM_MOUSEMOVE()
|
|
ON_BN_CLICKED(IDC_DrawHiddenLine, OnDrawHiddenLine)
|
|
ON_BN_CLICKED(IDC_HlrModeIsOn, OnHlrMode)
|
|
ON_WM_DRAWITEM()
|
|
ON_WM_PAINT()
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSelectionDialog message handlers
|
|
|
|
BOOL CSelectionDialog::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
VERIFY(TopView.AutoLoad (IDC_TopView, this));
|
|
VERIFY(BottomView.AutoLoad (IDC_BottomView, this)) ;
|
|
VERIFY(LeftView .AutoLoad (IDC_LeftView , this)) ;
|
|
VERIFY(RightView .AutoLoad (IDC_RightView , this)) ;
|
|
VERIFY(FrontView .AutoLoad (IDC_FrontView , this)) ;
|
|
VERIFY(BackView .AutoLoad (IDC_BackView , this)) ;
|
|
VERIFY(AxoView .AutoLoad (IDC_AxoView , this)) ;
|
|
|
|
// get the View Window position to managed mouse move
|
|
CRect BoxRect,ViewRect;
|
|
GetWindowRect (BoxRect);
|
|
CWnd * TheViewerWindow = GetDlgItem (IDC_HlrDlgView);
|
|
TheViewerWindow->GetWindowRect (ViewRect);
|
|
myPosMinX = ViewRect.TopLeft().x - BoxRect.TopLeft().x;
|
|
myPosMaxX = ViewRect.Width() + myPosMinX;
|
|
myPosMinY = ViewRect.TopLeft().y - BoxRect.TopLeft().y;
|
|
myPosMaxY = myPosMinY + ViewRect.Height();
|
|
|
|
ShowHideButton (Standard_False);
|
|
OnDisplay (true);
|
|
|
|
// return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
return TRUE;
|
|
}
|
|
|
|
void CSelectionDialog::OnDisplay (bool isFit)
|
|
{
|
|
// GetDlgItem(IDC_HlrDlgView)->SetRedraw() wrapping of this method makes view blinking,
|
|
// but displaying of big models may be faster.
|
|
//GetDlgItem(IDC_HlrDlgView)->SetRedraw(true);
|
|
if (!myIsDisplayed)
|
|
{
|
|
Handle(Graphic3d_GraphicDriver) aGraphicDriver =
|
|
((CHLRApp*)AfxGetApp())->GetGraphicDriver();
|
|
|
|
myActiveViewer = new V3d_Viewer (aGraphicDriver, (short *) "Visu3D");
|
|
myActiveViewer->SetDefaultLights();
|
|
myActiveViewer->SetLightOn();
|
|
myActiveView = myActiveViewer->CreateView();
|
|
|
|
Handle(WNT_Window) aWNTWindow = new WNT_Window (GetDlgItem (IDC_HlrDlgView)->GetSafeHwnd(),
|
|
Quantity_NOC_GRAY);
|
|
myActiveView->SetComputedMode (m_HlrModeIsOn);
|
|
myActiveView->SetWindow(aWNTWindow);
|
|
|
|
myInteractiveContext = new AIS_InteractiveContext (myActiveViewer);
|
|
|
|
// TRIHEDRON
|
|
Handle(Geom_Axis2Placement) aTrihedronAxis = new Geom_Axis2Placement (gp::XOY());
|
|
myTrihedron = new AIS_Trihedron (aTrihedronAxis);
|
|
|
|
myInteractiveContext->Display (myTrihedron);
|
|
myIsDisplayed = Standard_True;
|
|
}
|
|
if(isFit)
|
|
{
|
|
myActiveView->ZFitAll();
|
|
myActiveView->FitAll();
|
|
}
|
|
|
|
myActiveView->Redraw();
|
|
//GetDlgItem (IDC_HlrDlgView)->SetRedraw (false);
|
|
}
|
|
|
|
|
|
void CSelectionDialog::SetTitle (const CString & aTitle)
|
|
{
|
|
SetWindowText (aTitle);
|
|
}
|
|
|
|
void CSelectionDialog::UpdateViews()
|
|
{
|
|
// Clear HLR dialog view
|
|
myInteractiveContext->RemoveAll();
|
|
myInteractiveContext->Display (myTrihedron);
|
|
|
|
UpdateProjector();
|
|
|
|
// Display chosen shapes in the HLR dialog view.
|
|
Standard_Boolean OneOrMoreFound = Standard_False;
|
|
for (myDoc->GetAISContext()->InitCurrent();
|
|
myDoc->GetAISContext()->MoreCurrent();
|
|
myDoc->GetAISContext()->NextCurrent())
|
|
{
|
|
Handle(AIS_Shape) anAISShape = Handle(AIS_Shape)::DownCast (myDoc->GetAISContext()->Current());
|
|
if (!anAISShape.IsNull())
|
|
{
|
|
OneOrMoreFound = Standard_True;
|
|
myInteractiveContext->Display (anAISShape);
|
|
}
|
|
}
|
|
|
|
// Apply HLR to chosen shapes and display result into the 2d view.
|
|
Apply();
|
|
// Update viewer
|
|
myDoc->FitAll2DViews (Standard_False);
|
|
// Check the selection: if no object : disable all possiblity.
|
|
ShowHideButton (OneOrMoreFound);
|
|
OnDisplay (true);
|
|
}
|
|
|
|
void CSelectionDialog::OnGetSelectedShapes()
|
|
{
|
|
// Create new displayable shape.
|
|
myDisplayableShape = new ISession2D_Shape();
|
|
UpdateProjector();
|
|
myDisplayableShape->SetNbIsos (m_NbIsos);
|
|
|
|
// Clear HLR dialog view
|
|
myInteractiveContext->RemoveAll();
|
|
myInteractiveContext->Display (myTrihedron);
|
|
|
|
Standard_Boolean OneOrMoreFound = Standard_False;
|
|
for (myDoc->GetAISContext()->InitCurrent();
|
|
myDoc->GetAISContext()->MoreCurrent();
|
|
myDoc->GetAISContext()->NextCurrent())
|
|
{
|
|
Handle(AIS_Shape) anAISShape = Handle(AIS_Shape)::DownCast (myDoc->GetAISContext()->Current());
|
|
|
|
if (!anAISShape.IsNull())
|
|
{
|
|
OneOrMoreFound = Standard_True;
|
|
TopoDS_Shape aShape = anAISShape->Shape();
|
|
myDisplayableShape->Add (aShape);
|
|
Handle(AIS_Shape) aSelectedShape = new AIS_Shape (aShape);
|
|
myInteractiveContext->Display (aSelectedShape);
|
|
}
|
|
}
|
|
|
|
// Apply HLR to chosen shapes and display result into the 2d view.
|
|
Apply();
|
|
// Update viewer
|
|
myDoc->FitAll2DViews (Standard_False);
|
|
|
|
// Check the selection: if no object : disable all possiblity.
|
|
ShowHideButton (OneOrMoreFound);
|
|
OnDisplay (true);
|
|
}
|
|
|
|
void CSelectionDialog::Apply()
|
|
{
|
|
SetCursor(AfxGetApp()->LoadStandardCursor (IDC_WAIT));
|
|
myDoc->GetInteractiveContext2D()->RemoveAll();
|
|
UpdateData (true);
|
|
|
|
Standard_Integer aDisplayMode = m_DisplayMode;
|
|
|
|
if (m_Algo == 1)
|
|
{
|
|
aDisplayMode += 100;
|
|
}
|
|
|
|
if (!m_DrawHiddenLine)
|
|
{
|
|
aDisplayMode += 1000;
|
|
}
|
|
|
|
myDoc->GetInteractiveContext2D()->Display (myDisplayableShape, // object
|
|
aDisplayMode,
|
|
aDisplayMode,
|
|
Standard_True); // Redraw
|
|
|
|
SetCursor(AfxGetApp()->LoadStandardCursor (IDC_ARROW));
|
|
}
|
|
|
|
void CSelectionDialog::UpdateProjector()
|
|
{
|
|
V3d_Coordinate DX,DY,DZ,XAt,YAt,ZAt, Vx,Vy,Vz ;
|
|
myActiveView->Proj(DX,DY,DZ);
|
|
myActiveView->At(XAt,YAt,ZAt);
|
|
myActiveView->Up( Vx,Vy,Vz );
|
|
OnDisplay(false);
|
|
Standard_Boolean IsPerspective = (myActiveView->Type() == V3d_PERSPECTIVE);
|
|
Quantity_Length aFocus = 1;
|
|
Prs3d_Projector aPrs3dProjector(IsPerspective,aFocus,DX,DY,DZ,XAt,YAt,ZAt,Vx,Vy,Vz);
|
|
HLRAlgo_Projector aProjector = aPrs3dProjector.Projector();
|
|
|
|
if (myDisplayableShape.IsNull()) return;
|
|
myDisplayableShape->SetProjector(aProjector);
|
|
}
|
|
|
|
void CSelectionDialog::ShowHideButton(Standard_Boolean EnableButton)
|
|
{
|
|
UpdateData(true);
|
|
|
|
GetDlgItem(ID_Update2D )->EnableWindow(EnableButton);
|
|
GetDlgItem(IDC_DisplayDefault )->EnableWindow(EnableButton);
|
|
GetDlgItem(IDC_PolyAlgo )->EnableWindow(EnableButton);
|
|
GetDlgItem(IDC_Algo )->EnableWindow(EnableButton);
|
|
|
|
GetDlgItem(IDC_VsharpEdges )->EnableWindow(EnableButton);
|
|
GetDlgItem(IDC_VsmoothEdges )->EnableWindow(EnableButton);
|
|
GetDlgItem(IDC_VSewingEdges )->EnableWindow(EnableButton);
|
|
GetDlgItem(IDC_VApparentContour )->EnableWindow(EnableButton);
|
|
GetDlgItem(IDC_VIsoParametrics )->EnableWindow(EnableButton);
|
|
|
|
GetDlgItem(IDC_DrawHiddenLine )->EnableWindow(EnableButton);
|
|
|
|
GetDlgItem(IDC_HsmoothEdges )->EnableWindow(EnableButton && m_DrawHiddenLine);
|
|
GetDlgItem(IDC_HSewingEdges )->EnableWindow(EnableButton && m_DrawHiddenLine);
|
|
GetDlgItem(IDC_HApparentContour )->EnableWindow(EnableButton && m_DrawHiddenLine);
|
|
GetDlgItem(IDC_HsharpEdges )->EnableWindow(EnableButton && m_DrawHiddenLine);
|
|
GetDlgItem(IDC_HIsoParametrics )->EnableWindow(EnableButton && m_DrawHiddenLine);
|
|
|
|
GetDlgItem(IDC_EDIT_NBIsos )->EnableWindow(EnableButton);
|
|
GetDlgItem(IDC_STATIC_NbIsos )->EnableWindow(EnableButton);
|
|
|
|
if(m_Algo == 0)
|
|
{
|
|
if (m_DisplayMode == 5 || m_DisplayMode == 10)
|
|
{
|
|
m_DisplayMode=0;
|
|
}
|
|
|
|
GetDlgItem(IDC_VIsoParametrics)->EnableWindow(false);
|
|
GetDlgItem(IDC_HIsoParametrics)->EnableWindow(false);
|
|
GetDlgItem(IDC_STATIC_NbIsos) ->EnableWindow(false);
|
|
GetDlgItem(IDC_EDIT_NBIsos) ->EnableWindow(false);
|
|
}
|
|
else
|
|
{
|
|
GetDlgItem(IDC_VIsoParametrics)->EnableWindow(true);
|
|
GetDlgItem(IDC_HIsoParametrics)->EnableWindow(m_DrawHiddenLine);
|
|
GetDlgItem(IDC_STATIC_NbIsos) ->EnableWindow(true);
|
|
GetDlgItem(IDC_EDIT_NBIsos) ->EnableWindow(true);
|
|
}
|
|
UpdateData(false);
|
|
}
|
|
|
|
void CSelectionDialog::OnDisplayDefault()
|
|
{ Apply(); }
|
|
void CSelectionDialog::OnVIsoParametrics()
|
|
{ Apply(); }
|
|
void CSelectionDialog::OnVApparentContour()
|
|
{ Apply(); }
|
|
void CSelectionDialog::OnVSewingEdges()
|
|
{ Apply(); }
|
|
void CSelectionDialog::OnVsharpEdges()
|
|
{ Apply(); }
|
|
void CSelectionDialog::OnVsmoothEdges()
|
|
{ Apply(); }
|
|
void CSelectionDialog::OnHsharpEdges()
|
|
{ Apply(); }
|
|
void CSelectionDialog::OnHsmoothEdges()
|
|
{ Apply(); }
|
|
void CSelectionDialog::OnHSewingEdges()
|
|
{ Apply(); }
|
|
void CSelectionDialog::OnHIsoParametrics()
|
|
{ Apply(); }
|
|
void CSelectionDialog::OnHApparentContour()
|
|
{ Apply(); }
|
|
|
|
void CSelectionDialog::OnChangeEDITNBIsos()
|
|
{
|
|
UpdateData(true);
|
|
myDisplayableShape->SetNbIsos(m_NbIsos);
|
|
Apply();
|
|
}
|
|
void CSelectionDialog::OnAlgo()
|
|
{
|
|
ShowHideButton();
|
|
Apply();
|
|
}
|
|
|
|
void CSelectionDialog::OnPolyAlgo()
|
|
{
|
|
ShowHideButton();
|
|
Apply();
|
|
}
|
|
|
|
void CSelectionDialog::OnDrawHiddenLine()
|
|
{
|
|
UpdateData(true);
|
|
if(m_DisplayMode >=6 )
|
|
{
|
|
m_DisplayMode=0;
|
|
UpdateData(false);
|
|
}
|
|
ShowHideButton();
|
|
Apply();
|
|
}
|
|
|
|
void CSelectionDialog::OnUpdate2D()
|
|
{
|
|
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
|
|
myDoc->ActivateFrame(RUNTIME_CLASS(OCC_2dView),SW_NORMAL);
|
|
UpdateProjector();
|
|
Apply();
|
|
myDoc->FitAll2DViews(Standard_False);
|
|
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
|
|
}
|
|
|
|
void CSelectionDialog::OnTopView()
|
|
{
|
|
myActiveView->SetProj(V3d_Zpos);
|
|
OnDisplay(true);
|
|
}
|
|
|
|
void CSelectionDialog::OnBottomView()
|
|
{
|
|
myActiveView->SetProj(V3d_Zneg);
|
|
OnDisplay(true);
|
|
}
|
|
|
|
void CSelectionDialog::OnLeftView()
|
|
{
|
|
myActiveView->SetProj(V3d_Xneg);
|
|
OnDisplay(true);
|
|
}
|
|
|
|
void CSelectionDialog::OnRightView()
|
|
{
|
|
myActiveView->SetProj(V3d_Xpos);
|
|
OnDisplay(true);
|
|
}
|
|
|
|
void CSelectionDialog::OnFrontView()
|
|
{
|
|
myActiveView->SetProj(V3d_Yneg);
|
|
OnDisplay(true);
|
|
}
|
|
|
|
void CSelectionDialog::OnBackView()
|
|
{
|
|
myActiveView->SetProj(V3d_Ypos);
|
|
OnDisplay(true);
|
|
}
|
|
|
|
void CSelectionDialog::OnAxoView()
|
|
{
|
|
myActiveView->SetProj(V3d_XposYnegZpos);
|
|
OnDisplay(true);
|
|
}
|
|
|
|
void CSelectionDialog::OnHlrMode()
|
|
{
|
|
UpdateData(true);
|
|
|
|
if (!m_HlrModeIsOn)
|
|
{
|
|
myActiveView->SetComputedMode (m_HlrModeIsOn);
|
|
}
|
|
else
|
|
{
|
|
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
|
|
myActiveView->SetComputedMode (m_HlrModeIsOn);
|
|
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
|
|
}
|
|
OnDisplay(false);
|
|
}
|
|
|
|
void CSelectionDialog::OnLButtonDown(UINT nFlags, CPoint point)
|
|
{
|
|
CDialog::OnLButtonDown(nFlags, point);
|
|
|
|
if ((myPosMinX > point.x)||(myPosMaxX < point.x) ||
|
|
(myPosMinY > point.y) ||(myPosMaxY < point.y))
|
|
return;
|
|
|
|
// save the current mouse coordinate
|
|
myXmax=point.x; myYmax=point.y;
|
|
}
|
|
|
|
void CSelectionDialog::OnLButtonUp(UINT nFlags, CPoint point)
|
|
{
|
|
CDialog::OnLButtonUp(nFlags, point);
|
|
|
|
if ((myPosMinX > point.x)||(myPosMaxX < point.x) ||
|
|
(myPosMinY > point.y) ||(myPosMaxY < point.y))
|
|
return;
|
|
}
|
|
|
|
void CSelectionDialog::OnRButtonDown(UINT nFlags, CPoint point)
|
|
{
|
|
CDialog::OnRButtonDown(nFlags, point);
|
|
|
|
if ((myPosMinX > point.x) || (myPosMaxX < point.x) ||
|
|
(myPosMinY > point.y) || (myPosMaxY < point.y))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if ( nFlags & CASCADESHORTCUTKEY )
|
|
{
|
|
if (m_HlrModeIsOn)
|
|
{
|
|
myActiveView->SetComputedMode (Standard_False);
|
|
}
|
|
myActiveView->StartRotation (point.x, point.y);
|
|
OnDisplay (false);
|
|
}
|
|
}
|
|
|
|
void CSelectionDialog::OnRButtonUp(UINT nFlags, CPoint point)
|
|
{
|
|
CDialog::OnRButtonUp(nFlags, point);
|
|
|
|
if ((myPosMinX > point.x) || (myPosMaxX < point.x) ||
|
|
(myPosMinY > point.y) || (myPosMaxY < point.y))
|
|
{
|
|
return;
|
|
}
|
|
|
|
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
|
|
// reset the good HLR mode according to the stored one
|
|
// --> dynamic rotation may have change it
|
|
myActiveView->SetComputedMode (m_HlrModeIsOn);
|
|
OnDisplay(false);
|
|
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
|
|
}
|
|
|
|
void CSelectionDialog::OnMouseMove(UINT nFlags, CPoint point)
|
|
{
|
|
CDialog::OnMouseMove(nFlags, point);
|
|
|
|
if ((myPosMinX > point.x)||(myPosMaxX < point.x) ||
|
|
(myPosMinY > point.y) ||(myPosMaxY < point.y))
|
|
return;
|
|
|
|
if ( nFlags & MK_LBUTTON)
|
|
{//left button
|
|
if ( nFlags & CASCADESHORTCUTKEY )
|
|
{
|
|
// move with MB1 and Control : on the dynamic zooming
|
|
// Do the zoom in function of mouse's coordinates
|
|
myActiveView->Zoom(myXmax,myYmax,point.x,point.y);
|
|
// save the current mouse coordinate
|
|
myXmax = point.x; myYmax = point.y;
|
|
}// if ( nFlags & CASCADESHORTCUTKEY ) else
|
|
}
|
|
else if ( nFlags & MK_MBUTTON)
|
|
{
|
|
if ( nFlags & CASCADESHORTCUTKEY )
|
|
{
|
|
myActiveView->Pan(point.x-myXmax,myYmax-point.y); // Realize the panning
|
|
myXmax = point.x; myYmax = point.y;
|
|
}
|
|
}
|
|
else if ( nFlags & MK_RBUTTON)
|
|
{//right button
|
|
if ( nFlags & CASCADESHORTCUTKEY )
|
|
{
|
|
myActiveView->Rotation(point.x,point.y);
|
|
}
|
|
}
|
|
else
|
|
{// No buttons
|
|
myXmax = point.x; myYmax = point.y;
|
|
}
|
|
OnDisplay(false);
|
|
}
|
|
|
|
void CSelectionDialog::OnOK()
|
|
{
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void CSelectionDialog::OnPaint()
|
|
{
|
|
OnDisplay(false);
|
|
}
|