📄 camsview.cpp
字号:
// CamsView.cpp : implementation of the CCamsView class
//
#include "stdafx.h"
#include "Cams.h"
#include<math.h>
#include "CamsDoc.h"
#include "CamsView.h"
#include"Dlgjdcdj.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCamsView
IMPLEMENT_DYNCREATE(CCamsView, CScrollView)
BEGIN_MESSAGE_MAP(CCamsView, CScrollView)
//{{AFX_MSG_MAP(CCamsView)
ON_COMMAND(ID_MENU_JDCDJ, OnMenuJdcdj)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCamsView construction/destruction
CCamsView::CCamsView()
{
// TODO: add construction code here
}
CCamsView::~CCamsView()
{
}
BOOL CCamsView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CScrollView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CCamsView drawing
void CCamsView::OnDraw(CDC* pDC)
{
CCamsDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CString str[2];
CBrush *pOldBrush=pDC->GetCurrentBrush();
CBrush br;
br.CreateSolidBrush(RGB(0,0,255));
pDC->SelectObject(&br);
int x[360],y[360];
double a,b,c;
double n;
int d,r;
a=pDoc->h;
d=pDoc->d;
r=d/2;
b=a/120.0;
c=b;
n=3.1415926/180.0;
for(int i=0;i<90;i++)
{
x[i]=int(200.0-(r+b)*sin(n));
y[i]=int(250.0-(r+b)*cos(n));
n+=(3.1415926/180.0);
b+=c;
}
n=3.1415926/180.0;
for( i=90;i<120;i++)
{
x[i]=int(200.0-(r+b)*cos(n));
y[i]=int(250.0+(r+b)*sin(n));
n+=(3.1415926/180.0);
b+=c;
}
for( i=120;i<180;i++)
{
x[i]=int(200.0-(r+b)*cos(n));
y[i]=int(250.0+(r+b)*sin(n));
n+=(3.1415926/180.0);
}
n=3.1415926/180;
for( i=180;i<270;i++)
{
x[i]=int(200.0+(r+b)*sin(n));
y[i]=int(250.0+(r+b)*cos(n));
n+=(3.1415926/180.0);
b-=c;
}
n=3.1415926/180.0;
for( i=270;i<300;i++)
{
x[i]=int(200.0+(r+b)*cos(n));
y[i]=int(250.0-(r+b)*sin(n));
n+=(3.1415926/180.0);
b-=c;
}
for(i=300;i<360;i++)
{
x[i]=int(200.0+(r+b)*cos(n));
y[i]=int(250.0-(r+b)*sin(n));
n+=(3.1415926/180.0);
}
pDC->Ellipse(200-r,250-r,200+r,250+r);
pDC->MoveTo(200,250-r);
for(int j=0;j<360;j++)
{
pDC->LineTo(x[j],y[j]);
}
pDC->TextOut(200,250,"o");
pDC->MoveTo(200,250);
pDC->LineTo(200+2*r,250);
pDC->TextOut(200+2*r,250,"x");
pDC->MoveTo(200,250);
pDC->LineTo(200,250-2*r);
pDC->TextOut(200,250-2*r,"y");
pDC->MoveTo(220,230);
pDC->LineTo(220+r,220-r);
pDC->TextOut(220+r,220-r,"基圆");
pDC->TextOut(50,350+r,"等速移动从动件旁形凸轮");
str[0].Format("基圆直径: %d",d);
str[1].Format("从动件升程: %d",int(a));
pDC->TextOut(80,380+r,str[0]);
pDC->TextOut(80,410+r,str[1]);
pDC->SelectObject(pOldBrush);
}
void CCamsView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CCamsDoc *pDoc=GetDocument();
h=pDoc->h;
d=pDoc->d;
CSize sizeTotal;
// TODO: calculate the total size of this view
sizeTotal.cx =2000;
sizeTotal.cy =2000;
SetScrollSizes(MM_TEXT, sizeTotal);
}
/////////////////////////////////////////////////////////////////////////////
// CCamsView printing
BOOL CCamsView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CCamsView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CCamsView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CCamsView diagnostics
#ifdef _DEBUG
void CCamsView::AssertValid() const
{
CScrollView::AssertValid();
}
void CCamsView::Dump(CDumpContext& dc) const
{
CScrollView::Dump(dc);
}
CCamsDoc* CCamsView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCamsDoc)));
return (CCamsDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CCamsView message handlers
void CCamsView::OnMenuJdcdj()
{
// TODO: Add your command handler code here
CDlgjdcdj Dlgjdcdj;
Dlgjdcdj.m_Edit1=100;
Dlgjdcdj.m_Edit2=36.0;
if(Dlgjdcdj.DoModal()==IDOK)
{
d=Dlgjdcdj.m_Edit1;
h=Dlgjdcdj.m_Edit2;
Invalidate();
}
CCamsDoc *pDoc=GetDocument();
pDoc->h=h;
pDoc->d=d;
pDoc->SetModifiedFlag(TRUE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -