⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gmcadview.cpp

📁 《Visual C++.NET MFC类库应用详解》程序实例
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	dc.LineTo(128,74);
	dc.TextOut(100,65,"R1");

    dc.MoveTo(90,48);
	dc.LineTo(130,48);
    dc.MoveTo(95,43);
	dc.LineTo(95,53);
    dc.MoveTo(120,48);
	dc.LineTo(120,62);

    dc.MoveTo(120,48);
	dc.LineTo(117,52);
    dc.MoveTo(120,48);
	dc.LineTo(123,52);
    dc.MoveTo(120,62);
	dc.LineTo(117,58);
    dc.MoveTo(120,62);
	dc.LineTo(123,58);
	dc.TextOut(124,48,"H1");

}

void CGMCADView::OnHLine() 
{
	// TODO: Add your control notification handler code here
    m_XianXing=XIANXING_HLINE;

	m_HHEdit.EnableWindow(FALSE);
	m_HHStatic.EnableWindow(FALSE);
    m_DDEdit.EnableWindow(FALSE);
	m_DDStatic.EnableWindow(FALSE);
	m_RREdit.EnableWindow(FALSE);
	m_RRStatic.EnableWindow(FALSE);
	m_RPEdit.EnableWindow(FALSE);
	m_RR2Edit.EnableWindow(FALSE);
	m_RR2Static.EnableWindow(FALSE);
    m_RP2Edit.EnableWindow(FALSE);
	m_HH1Edit.EnableWindow(FALSE);
	m_HH1Static.EnableWindow(FALSE);
    m_HH2Edit.EnableWindow(FALSE);
	m_HH2Static.EnableWindow(FALSE);
	
	CGMCADDoc* pDoc = GetDocument();
	if((pDoc->CurrentDesign==CHUMU_DESIGN) && (HLineNumber==0))
	{
	    m_TipStatic.SetWindowText("请输入总高、直径D。");
	    m_HHEdit.EnableWindow(TRUE);
        m_DDEdit.EnableWindow(TRUE);
	    m_HHStatic.EnableWindow(TRUE);
        m_DDStatic.EnableWindow(TRUE);
		m_HHStatic.SetWindowText("总高:");
	    m_DDStatic.SetWindowText("直径D:");
	}
    else
	{
	    m_TipStatic.SetWindowText("用横线封底,结束设计。");
	}

    CClientDC dc(this);
    dc.SetTextColor(RGB(0,255,0));
    CBrush NewBrush,*pOldBrush;
	NewBrush.CreateSolidBrush(RGB(0,0,0));
	pOldBrush=dc.SelectObject(&NewBrush);
    dc.Rectangle(&m_ParaShowArea);
	dc.SelectObject(pOldBrush);
    dc.SetBkMode(TRANSPARENT);
	CPen RedPen,GreenPen,*pOldPen,*temppen;
	RedPen.CreatePen(PS_SOLID,1,RGB(255,0,0));
	pOldPen=dc.SelectObject(&RedPen);
	dc.MoveTo(60,90);
	dc.LineTo(190,90);    
	GreenPen.CreatePen(PS_SOLID,1,RGB(0,255,0));
	temppen=dc.SelectObject(&GreenPen);
	dc.MoveTo(59,92);
	dc.LineTo(59,132);        
	dc.MoveTo(191,92);
	dc.LineTo(191,132); 
	dc.MoveTo(62,120);
	dc.LineTo(120,120); 
	dc.MoveTo(132,120);
	dc.LineTo(188,120); 
	dc.MoveTo(60,120);   // H的两个箭头
	dc.LineTo(65,116);
	dc.MoveTo(60,120);
	dc.LineTo(65,124);
	dc.MoveTo(190,120);
	dc.LineTo(185,116);
	dc.MoveTo(190,120);
	dc.LineTo(185,124);
    
	dc.TextOut(122,113,"D");

    dc.SelectObject(pOldPen);

}

void CGMCADView::OnRect() 
{
	// TODO: Add your control notification handler code here
    m_XianXing=XIANXING_RECT;
	m_TipStatic.SetWindowText("请输入瓶高、口高、口径和颈径。");

	m_HHEdit.EnableWindow(TRUE);
	m_DDEdit.EnableWindow(TRUE);
	m_RREdit.EnableWindow(TRUE);
	m_RR2Edit.EnableWindow(TRUE);
	m_HHStatic.EnableWindow(TRUE);
	m_DDStatic.EnableWindow(TRUE);
	m_RRStatic.EnableWindow(TRUE);
	m_RR2Static.EnableWindow(TRUE);
	m_HHStatic.SetWindowText("瓶高:");
    m_DDStatic.SetWindowText("口高:");
    m_RRStatic.SetWindowText("口径:");
    m_RR2Static.SetWindowText("颈径:");

	m_RPEdit.EnableWindow(FALSE);
    m_RP2Edit.EnableWindow(FALSE);
	m_HH1Edit.EnableWindow(FALSE);
    m_HH2Edit.EnableWindow(FALSE);
	m_HH1Static.EnableWindow(FALSE);
    m_HH2Static.EnableWindow(FALSE);
    
	CClientDC dc(this);
    dc.SetTextColor(RGB(0,255,0));
    CBrush NewBrush,*pOldBrush;
	NewBrush.CreateSolidBrush(RGB(0,0,0));
	pOldBrush=dc.SelectObject(&NewBrush);
    dc.Rectangle(&m_ParaShowArea);
	dc.SelectObject(pOldBrush);

    dc.SetBkMode(TRANSPARENT);
	CPen RedPen,GreenPen,*pOldPen,*temppen;
	RedPen.CreatePen(PS_SOLID,1,RGB(255,0,0));
	pOldPen=dc.SelectObject(&RedPen);
	dc.MoveTo(50,50);
	dc.LineTo(150,50);    
	dc.LineTo(150,100);    
	dc.LineTo(50,100);    
	dc.LineTo(50,50);    
	GreenPen.CreatePen(PS_SOLID,1,RGB(0,255,0));
	temppen=dc.SelectObject(&GreenPen);
	dc.MoveTo(49,102);
	dc.LineTo(49,132);        
	dc.MoveTo(151,102);
	dc.LineTo(151,132); 
	dc.MoveTo(52,120);
	dc.LineTo(100,120); 
	dc.MoveTo(114,120);
	dc.LineTo(148,120); 
	dc.MoveTo(50,120);   // D的两个箭头
	dc.LineTo(55,116);
	dc.MoveTo(50,120);
	dc.LineTo(55,124);
	dc.MoveTo(150,120);
	dc.LineTo(145,116);
	dc.MoveTo(150,120);
	dc.LineTo(145,124);
    
	dc.TextOut(103,113,"D");

	dc.MoveTo(151,50);
	dc.LineTo(180,50);        
	dc.MoveTo(151,100);
	dc.LineTo(180,100); 
	dc.MoveTo(170,50);
	dc.LineTo(170,70); 
	dc.MoveTo(170,80);
	dc.LineTo(170,100); 
	dc.MoveTo(170,50);   // H的两个箭头
	dc.LineTo(166,55);
	dc.MoveTo(170,50);
	dc.LineTo(174,55);
	dc.MoveTo(170,100);
	dc.LineTo(166,95);
	dc.MoveTo(170,100);
	dc.LineTo(174,95);
    
	dc.TextOut(165,69,"H");

    dc.SelectObject(pOldPen);
 
}

void CGMCADView::OnPd() 
{
	// TODO: Add your control notification handler code here
    m_XianXing=XIANXING_PD;
	m_TipStatic.SetWindowText("请输入高度H、半径R。");

	m_HHEdit.EnableWindow(TRUE);
	m_RREdit.EnableWindow(TRUE);
	m_HHStatic.EnableWindow(TRUE);
	m_RRStatic.EnableWindow(TRUE);
	m_HHStatic.SetWindowText("高度H:");
    m_RRStatic.SetWindowText("半径R:");

	m_DDEdit.EnableWindow(FALSE);
	m_RPEdit.EnableWindow(FALSE);
	m_RR2Edit.EnableWindow(FALSE);
    m_RP2Edit.EnableWindow(FALSE);
	m_HH1Edit.EnableWindow(FALSE);
    m_HH2Edit.EnableWindow(FALSE);
	m_DDStatic.EnableWindow(FALSE);
	m_RR2Static.EnableWindow(FALSE);
	m_HH1Static.EnableWindow(FALSE);
    m_HH2Static.EnableWindow(FALSE);

	
    CClientDC dc(this);
    dc.SetTextColor(RGB(0,255,0));
    CBrush NewBrush,*pOldBrush;
	NewBrush.CreateSolidBrush(RGB(0,0,0));
	pOldBrush=dc.SelectObject(&NewBrush);
    dc.Rectangle(&m_ParaShowArea);
	dc.SelectObject(pOldBrush);

    dc.SetBkMode(TRANSPARENT);
	CPen RedPen,YellowPen,GreenPen,*pOldPen,*temppen;
	RedPen.CreatePen(PS_SOLID,1,RGB(255,0,0));
	pOldPen=dc.SelectObject(&RedPen);
	dc.Arc(62,69,174,181,159,75,78,75);
	YellowPen.CreatePen(PS_SOLID,1,RGB(255,255,0));
	temppen=dc.SelectObject(&YellowPen);
	dc.Arc(46,38,94,86,51,77,79,75);
	dc.Arc(140,38,188,86,156,77,185,75);

	GreenPen.CreatePen(PS_SOLID,1,RGB(0,255,0));
	temppen=dc.SelectObject(&GreenPen);
    dc.MoveTo(118,70);
	dc.LineTo(108,110);
    dc.MoveTo(118,70);
	dc.LineTo(114,75);
	dc.MoveTo(118,70);
	dc.LineTo(122,75);
	dc.TextOut(103,113,"R");

    dc.MoveTo(118,70);
	dc.LineTo(210,70);
    dc.MoveTo(165,86);
	dc.LineTo(210,86);
    dc.MoveTo(190,70);
	dc.LineTo(190,86);

    dc.MoveTo(190,70);
	dc.LineTo(186,75);
    dc.MoveTo(190,70);
	dc.LineTo(194,75);
    dc.MoveTo(190,86);
	dc.LineTo(186,81);
    dc.MoveTo(190,86);
	dc.LineTo(194,81);
	dc.TextOut(195,71,"H");
    
	dc.SelectObject(pOldPen);
    
}

void CGMCADView::OnDesignChongtou() 
{
	// TODO: Add your command handler code here
	CGMCADDoc* pDoc = GetDocument();
    pDoc->CurrentDesign=CHONGTOU_DESIGN;
    IsDesigning=1;	
	m_TipStatic.SetWindowText("请先选择“H1”线型开始冲头形腔设计。");
    m_OKButton.SetWindowText("结 束 设 计");
	
}

void CGMCADView::OnUpdateDesignChongtou(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(!IsDesigning && !XGTTesting);
}

void CGMCADView::OnDesignChumu() 
{
	// TODO: Add your command handler code here
	CGMCADDoc* pDoc = GetDocument();
    pDoc->CurrentDesign=CHUMU_DESIGN;
    IsDesigning=1;	
	m_TipStatic.SetWindowText("请先选择“横线”线型开始初模形腔设计。");
    m_OKButton.SetWindowText("结 束 设 计");
}

void CGMCADView::OnUpdateDesignChumu(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(!IsDesigning && !XGTTesting);
}

void CGMCADView::OnDesignPingxing() 
{
	// TODO: Add your command handler code here
	CGMCADDoc* pDoc = GetDocument();
    pDoc->CurrentDesign=PINGXING_DESIGN;
    IsDesigning=1;	
	m_TipStatic.SetWindowText("请先选择“瓶口”线型开始成模形腔(瓶形)设计。");
    m_OKButton.SetWindowText("结 束 设 计");
}

void CGMCADView::OnUpdateDesignPingxing(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(!IsDesigning && !XGTTesting);
}

void CGMCADView::OnChangeHh() 
{
	// TODO: Add your control notification handler code here
	int temp;
	CString str;
	temp=GetDlgItemText(IDC_HH,str);
    m_HH=atof(str);		
}

void CGMCADView::OnChangeDd() 
{
	// TODO: Add your control notification handler code here
	int temp;
	CString str;
	temp=GetDlgItemText(IDC_DD,str);
    m_DD=atof(str);	
}

void CGMCADView::OnChangeRr() 
{
	// TODO: Add your control notification handler code here
	int temp;
	CString str;
	temp=GetDlgItemText(IDC_RR,str);
    m_RR=atof(str);		
}

void CGMCADView::OnChangeRp() 
{
	// TODO: Add your control notification handler code here
	int temp;
	CString str;
	temp=GetDlgItemText(IDC_RP,str);
    m_RP=str;		
}

void CGMCADView::OnChangeRr2() 
{

	// TODO: Add your control notification handler code here
	int temp;
	CString str;
	temp=GetDlgItemText(IDC_RR2,str);
    m_RR2=atof(str);		
}

void CGMCADView::OnChangeRp2() 
{
	// TODO: Add your control notification handler code here
	int temp;
	CString str;
	temp=GetDlgItemText(IDC_RP2,str);
    m_RP2=str;		
}

void CGMCADView::OnChangeHh1() 
{
	// TODO: Add your control notification handler code here
	int temp;
	CString str;
	temp=GetDlgItemText(IDC_HH1,str);
    m_HH1=atof(str);		
}

void CGMCADView::OnChangeHh2() 
{
	// TODO: Add your control notification handler code here
	int temp;
	CString str;
	temp=GetDlgItemText(IDC_HH2,str);
    m_HH2=atof(str);		
}

void CGMCADView::OnChangeEditVol() 
{
	// TODO: Add your control notification handler code here
	int temp;
	CString str;
	temp=GetDlgItemText(IDC_EDIT_VOL,str);
    m_XXVol=atof(str);	
}

void CGMCADView::OnChangeEditArea() 
{
	// TODO: Add your control notification handler code here
	int temp;
	CString str;
	temp=GetDlgItemText(IDC_EDIT_AREA,str);
    m_XXArea=atof(str);		
}

void CGMCADView::ClearAll()
{
	m_HHEdit.SetWindowText("");
    m_DDEdit.SetWindowText("");
	m_RREdit.SetWindowText("");
    m_RPEdit.SetWindowText("");
	m_RR2Edit.SetWindowText("");
    m_RP2Edit.SetWindowText("");
	m_HH1Edit.SetWindowText("");
    m_HH2Edit.SetWindowText("");
}

void CGMCADView::OnParainputok() 
{
	// TODO: Add your control notification handler code here
	// 选择各线型进行设计,选择瓶底或横线结束设计
    if(IsDesigning)	
	{
 	  CGMCADDoc* pDoc = GetDocument();
	  m_VolEdit.EnableWindow(TRUE);
	  m_AreaEdit.EnableWindow(TRUE);
      m_XXVStatic.SetWindowText("本线型体积:");
      m_XXAStatic.SetWindowText("本线型面积:");
      m_XXVUnitStatic.SetWindowText("立方毫米");
      m_XXAUnitStatic.SetWindowText("平方毫米");      
      CRevSurf *pRevSurf;
	  CClientDC dc(this);
      dc.SetMapMode(MM_ANISOTROPIC);
      dc.SetWindowExt(50,-50);
	  dc.SetViewportExt(50,50);

      POINT temp;
	  temp.x=m_Axisx;  // m_Axisx为MM_TEXT下的绘图区中轴x值
	  temp.y=m_CenterY;  // m_CenterY为MM_TEXT下的绘图区中值y
      dc.DPtoLP(&temp);
	  double CenterY=temp.y;  // CenterY为MM_ANISOTROPIC下的绘图区中值y
      double Axisx=temp.x;  // Axisx为MM_ANISOTROPIC下的绘图区中轴x值
	  BeginX=pDoc->m_StartX;
	  BeginY=pDoc->m_StartY;	

	  double Vol,Area;

      switch(m_XianXing)
	  {
	    case XIANXING_X:
		{
	        pDoc->m_RH=pDoc->m_RH-m_HH;
            EndX=Axisx-m_DD/2.0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -