📄 showresultview.cpp
字号:
///////////////////////////////////////////////////////////////////
// ShowResultView.cpp : implementation file
// 左边显示结果视图类成员函数的定义文件
////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "GearMeasurement.h"
#include "ShowResultView.h"
#include "GearMeasurementDoc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CShowResultView
IMPLEMENT_DYNCREATE(CShowResultView, CFormView)
HWND pSShowResultView; // 定义指向本文件的全局窗口句柄
CShowResultView::CShowResultView()
: CFormView(CShowResultView::IDD)
{
//{{AFX_DATA_INIT(CShowResultView)
//}}AFX_DATA_INIT
}
void CShowResultView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CShowResultView)
DDX_Control(pDX, IDC_ShowResult_List, m_ShowResult_List);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CShowResultView, CFormView)
//{{AFX_MSG_MAP(CShowResultView)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_OnMakeData,OnMakeData) // 产生实验数据消息映射
ON_MESSAGE(WM_OnInitializeParameter,OnInitializeParameterOver) // 定义初始化参数完成消息
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CShowResultView diagnostics
#ifdef _DEBUG
void CShowResultView::AssertValid() const
{
CFormView::AssertValid();
}
void CShowResultView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// 本视图环境设置
/////////////////////////////////////////////////////////////////////////////
// 设置视图背景色
void CShowResultView::OnDraw(CDC* pDC)
{
CBrush backBrush(RGB(255,255,255)); // 设定为白色
CBrush* pOldBrush = pDC->SelectObject(&backBrush); // 保存旧刷子
CRect rect;
pDC->GetClipBox(&rect); // 擦除所需的区域
pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY);
pDC->SelectObject(pOldBrush); // 还原画刷
}
// 初始设置表格栏数和数值
void CShowResultView::OnInitialUpdate()
{
// 初始设定本类的环境
CFormView::OnInitialUpdate();
pSShowResultView=GetSafeHwnd(); // 把本窗口的句柄进行赋值
// 加入属性栏内容
propItem1 = new CPropertyItem("测量类型","齿轮齿形误差测量",PIT_EDITUnable,"");
m_ShowResult_List.AddPropItem(propItem1);
propItem2 = new CPropertyItem("齿轮模数","",PIT_EDITUnable,"");
m_ShowResult_List.AddPropItem(propItem2);
propItem3 = new CPropertyItem("齿轮齿数","",PIT_EDITUnable,"");
m_ShowResult_List.AddPropItem(propItem3);
propItem4 = new CPropertyItem("分度圆半径","",PIT_EDITUnable,"");
m_ShowResult_List.AddPropItem(propItem4);
propItem5 = new CPropertyItem("定位球最大直径","",PIT_EDITUnable,"");
m_ShowResult_List.AddPropItem(propItem5);
propItem6 = new CPropertyItem("定位球最小直径","",PIT_EDITUnable,"");
m_ShowResult_List.AddPropItem(propItem6);
propItem7 = new CPropertyItem("测量次数","",PIT_EDITUnable,"");
m_ShowResult_List.AddPropItem(propItem7);
propItem8 = new CPropertyItem("测量头起始Y坐标","",PIT_EDITUnable,"");
m_ShowResult_List.AddPropItem(propItem8);
propItem9 = new CPropertyItem("定位球心到齿心距离","",PIT_EDITUnable,"");
m_ShowResult_List.AddPropItem(propItem9);
propItem10 = new CPropertyItem("起测圆半径","",PIT_EDITUnable,"");
m_ShowResult_List.AddPropItem(propItem10);
propItem11 = new CPropertyItem("终测圆半径","",PIT_EDITUnable,"");
m_ShowResult_List.AddPropItem(propItem11);
propItem12 = new CPropertyItem("定位球接触点压力角","",PIT_EDITUnable,"");
m_ShowResult_List.AddPropItem(propItem12);
propItem13 = new CPropertyItem("测量最大误差","",PIT_EDITUnable,"");
m_ShowResult_List.AddPropItem(propItem13);
propItem14 = new CPropertyItem("质量判断","",PIT_EDITUnable,"");
m_ShowResult_List.AddPropItem(propItem14);
}
// 销毁函数,是本类中执行的最后一步函数
CShowResultView::~CShowResultView()
{
// 归还内存
delete propItem1;
delete propItem2;
delete propItem3;
delete propItem4;
delete propItem5;
delete propItem6;
delete propItem7;
delete propItem8;
delete propItem9;
delete propItem10;
delete propItem11;
delete propItem12;
delete propItem13;
delete propItem14;
}
/////////////////////////////////////////////////////////////////////////////////////
// 产生实验数据的函数
/////////////////////////////////////////////////////////////////////////////////////
void CShowResultView::OnMakeData()
{
// 获取Doc的指针以便和doc参数交流
CGearMeasurementDoc* pDoc=(CGearMeasurementDoc *)GetDocument();
ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CGearMeasurementDoc)));
// 更新属性框
CString In_TextYouWant;
In_TextYouWant.Format("%f(mm)",pDoc->m_A); // 定位球心到齿轮圆心的距离
propItem9->PropertyItemChange(In_TextYouWant);
In_TextYouWant.Format("%f(mm)",pDoc->m_Rs);
propItem10->PropertyItemChange(In_TextYouWant); // 起测圆半径
In_TextYouWant.Format("%f(mm)",pDoc->m_Ra); // 终测圆半径
propItem11->PropertyItemChange(In_TextYouWant);
In_TextYouWant.Format("%f(度)",pDoc->m_ai*180/3.1415926); // 定位球接触点压力角
propItem12->PropertyItemChange(In_TextYouWant);
In_TextYouWant.Format("%f(um)",pDoc->m_errorMax*1000); // 测量最大误差
propItem13->PropertyItemChange(In_TextYouWant);
In_TextYouWant.Format("%s",pDoc->m_judge); // 判断是否合格
propItem14->PropertyItemChange(In_TextYouWant);
m_ShowResult_List.OnChangePropItem(propItem12); // 这句只需要一次就可以,作用是刷新屏幕
// 生成实验数据算法编程
// 生成结束后消息处理部分
AfxMessageBox("生成数据完成!"); // 弹出消息框
pDoc->UpdateAllViews(this); // 刷新窗口
}
/////////////////////////////////////////////////////////////////////////////////////
// 初始化参数完成的函数,功能是填表
/////////////////////////////////////////////////////////////////////////////////////
void CShowResultView::OnInitializeParameterOver()
{
// 获取Doc的指针以便和doc参数交流
CGearMeasurementDoc* pDoc=(CGearMeasurementDoc *)GetDocument();
ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CGearMeasurementDoc)));
// 更新属性框//用于参数在左边框中输出
CString In_TextYouWant;
In_TextYouWant.Format("%d",pDoc->m_moshu); // 齿轮模数
propItem2->PropertyItemChange(In_TextYouWant);
In_TextYouWant.Format("%d" ,pDoc->m_chishu); //齿轮齿数
propItem3->PropertyItemChange(In_TextYouWant);
In_TextYouWant.Format("%f(mm)",pDoc->m_R); // 分度圆半径
propItem4->PropertyItemChange(In_TextYouWant);
In_TextYouWant.Format("%f(mm)",pDoc->m_Dmax); // 定位球最大直径
propItem5->PropertyItemChange(In_TextYouWant);
In_TextYouWant.Format("%f(mm)",pDoc->m_Dmin); //定位球最小直径
propItem6->PropertyItemChange(In_TextYouWant);
In_TextYouWant.Format("%d",pDoc->m_n); // 测量次数
propItem7->PropertyItemChange(In_TextYouWant);
In_TextYouWant.Format("%f(mm)",pDoc->m_YS); // 测得头起始Y坐标
propItem8->PropertyItemChange(In_TextYouWant);
m_ShowResult_List.OnChangePropItem(propItem2); // 这句只需要一次就可以,作用是刷新屏幕
AfxMessageBox("标准渐开线生成!"); // 弹出消息框
pDoc->UpdateAllViews(this); // 刷新窗口
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -