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

📄 page_standard_append.cpp

📁 C# 教学示例程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// Page_Standard_Append.cpp : implementation file
//
#include "stdafx.h"
#include "gear_cutter_database.h"
#include "Page_Standard_Append.h"
#include "math.h"
#define PI 3.1415926
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPage_Standard_Append property page

IMPLEMENT_DYNCREATE(CPage_Standard_Append, CPropertyPage)

CPage_Standard_Append::CPage_Standard_Append() : CPropertyPage(CPage_Standard_Append::IDD)
{
	//{{AFX_DATA_INIT(CPage_Standard_Append)
	m_angle_gear_v = 0.0f;

	m_bottom_dia_gear_v = 0.0f;
	m_c_gear_v = 0.0f;
	m_centerdist_gear1_v = 0.0f;
	m_chao_angle_cutter_v = 0.0f;
	m_dia_cutter_v = 0.0f;

	m_helic_gear_v = 0.0f;
	m_hole_dia_cutter_v = 0.0f;
	m_hou_angle_cutter_v = 0.0f;
	m_long_cutter_v = 0.0f;
	m_margin_gear_v = 0.0f;
	m_mn_gear_v = 0.0f;
	m_nthick_gear_v = 0.0f;
	m_num_cutter_v = _T("");
	m_num_gear_v = _T("");
	m_qian_angle_cutter_v = 0.0f;
	m_thick_gear_v = 0.0f;
	m_top_dia_gear_v = 0.0f;
	m_top_dia_gear1_v = 0.0f;
	m_tou_n_cutter_v = 0;
	m_zn_cutter_v = 0;
	m_zn_gear_v = 0;
	m_zn_gear1_v = 0;

	//}}AFX_DATA_INIT
}

CPage_Standard_Append::~CPage_Standard_Append()
{
}

void CPage_Standard_Append::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPage_Standard_Append)
	DDX_Control(pDX, IDC_LIST_result, m_list_result);
	DDX_Control(pDX, IDC_LIST_data_gear, m_list_data_gear);
	DDX_Control(pDX, IDC_EDIT_zn_gear2, m_zn_gear1);
	DDX_Control(pDX, IDC_EDIT_zn_gear, m_zn_gear);
	DDX_Control(pDX, IDC_EDIT_zn_cutter, m_zn_cutter);
	DDX_Control(pDX, IDC_EDIT_tou_n_cutter, m_tou_n_cutter);
	DDX_Control(pDX, IDC_EDIT_top_dia_gear2, m_top_dia_gear1);
	DDX_Control(pDX, IDC_EDIT_top_dia_gear, m_top_dia_gear);
	DDX_Control(pDX, IDC_EDIT_thick_gear, m_thick_gear);
	DDX_Control(pDX, IDC_EDIT_qian_angle_cutter, m_qian_angle_cutter);
	DDX_Control(pDX, IDC_EDIT_num_gear, m_num_gear);
	DDX_Control(pDX, IDC_EDIT_num_cutter, m_num_cutter);
	DDX_Control(pDX, IDC_EDIT_nthick_gear, m_nthick_gear);
	DDX_Control(pDX, IDC_EDIT_mn_gear, m_mn_gear);
	DDX_Control(pDX, IDC_EDIT_margin_gear, m_margin_gear);
	DDX_Control(pDX, IDC_EDIT_long_cutter, m_long_cutter);
	DDX_Control(pDX, IDC_EDIT_hou_angle_cutter, m_hou_angle_cutter);
	DDX_Control(pDX, IDC_EDIT_hole_dia_cutter, m_hole_dia_cutter);
	DDX_Control(pDX, IDC_EDIT_helic_gear, m_helic_gear);
	DDX_Control(pDX, IDC_EDIT_dia_cutter, m_dia_cutter);
	DDX_Control(pDX, IDC_EDIT_chao_angle_cutter, m_chao_angle_cutter);
	DDX_Control(pDX, IDC_EDIT_centerdist_gear2, m_center_dist_gear1);
	DDX_Control(pDX, IDC_EDIT_c_gear, m_c_gear);
	DDX_Control(pDX, IDC_EDIT_bottom_dia_gear, m_bottom_dia_gear);
	DDX_Control(pDX, IDC_EDIT_angle_gear, m_angle_gear); 
    DDX_Text(pDX, IDC_EDIT_num_gear, m_num_gear_v);
	DDX_Text(pDX, IDC_EDIT_mn_gear, m_mn_gear_v);
	DDX_Text(pDX, IDC_EDIT_zn_gear, m_zn_gear_v);
    DDX_Text(pDX, IDC_EDIT_angle_gear, m_angle_gear_v);
    DDX_Text(pDX, IDC_EDIT_helic_gear, m_helic_gear_v);
	DDX_Text(pDX, IDC_EDIT_nthick_gear, m_nthick_gear_v);
	DDX_Text(pDX, IDC_EDIT_top_dia_gear, m_top_dia_gear_v);
	DDX_Text(pDX, IDC_EDIT_bottom_dia_gear, m_bottom_dia_gear_v);
	DDX_Text(pDX, IDC_EDIT_thick_gear, m_thick_gear_v);
	DDX_Text(pDX, IDC_EDIT_margin_gear, m_margin_gear_v);
    DDX_Text(pDX, IDC_EDIT_c_gear, m_c_gear_v);
    DDX_Text(pDX, IDC_EDIT_zn_gear2, m_zn_gear1_v);
	DDX_Text(pDX, IDC_EDIT_top_dia_gear2, m_top_dia_gear1_v);
	DDX_Text(pDX, IDC_EDIT_centerdist_gear2, m_centerdist_gear1_v);
    DDX_Text(pDX, IDC_EDIT_num_cutter, m_num_cutter_v);
	DDX_Text(pDX, IDC_EDIT_dia_cutter, m_dia_cutter_v);
	DDX_Text(pDX, IDC_EDIT_hole_dia_cutter, m_hole_dia_cutter_v);
	DDX_Text(pDX, IDC_EDIT_long_cutter, m_long_cutter_v);
	DDX_Text(pDX, IDC_EDIT_zn_cutter, m_zn_cutter_v);
	DDX_Text(pDX, IDC_EDIT_qian_angle_cutter, m_qian_angle_cutter_v);
	DDX_Text(pDX, IDC_EDIT_hou_angle_cutter, m_hou_angle_cutter_v);
	DDX_Text(pDX, IDC_EDIT_tou_n_cutter, m_tou_n_cutter_v);
    DDX_Text(pDX, IDC_EDIT_chao_angle_cutter, m_chao_angle_cutter_v);		
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CPage_Standard_Append, CPropertyPage)
	//{{AFX_MSG_MAP(CPage_Standard_Append)
	ON_NOTIFY(NM_CLICK, IDC_LIST_data_gear, OnClicklistdatagear)
	ON_BN_CLICKED(IDC_BUTTON_compute, OnBUTTONcompute)
	ON_BN_CLICKED(IDC_BUTTON_to_file, OnBUTTONtofile)
	ON_BN_CLICKED(IDC_BUTTON_to_database, OnBUTTONtodatabase)
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPage_Standard_Append message handlers

BOOL CPage_Standard_Append::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	try{	
	m_pdatabase=new CDatabase();
	m_pset=new CRecordset();
    m_pdatabase->Open(_T("gear_cutter_database"),FALSE,FALSE,_T("ODBC;DSN=gear_cutter_database"),FALSE);
	m_pset->m_pDatabase=m_pdatabase;	
	}
	catch(CDBException* e){
		e->ReportError();
	    e->Delete();
	    delete m_pset;
		delete m_pdatabase;
		return TRUE;}

	// TODO: Add extra initialization here
	(CButton *)GetDlgItem(IDC_BUTTON_to_database)->EnableWindow(FALSE);

	extern int symbol;
	if(symbol==0) 
	{   
	   IniListAppend();
	   init();
	}
	else
	{  
	   IniList();
	   init();
	}
	return TRUE;  // return TRUE unless you set the focus to a control	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CPage_Standard_Append::IniList()
{
     extern CRecordset m_pset_gear;
	 if(!m_pset_gear.IsEOF())
		{
		m_pset_gear.MoveLast();
		m_pset_gear.MoveFirst();
	    }
		int nFieldCount=m_pset_gear.GetODBCFieldCount();
		fields_count=nFieldCount;
		CODBCFieldInfo fieldinfo;
		for(int n=0;n<nFieldCount;n++)
		{
			m_pset_gear.GetODBCFieldInfo(n,fieldinfo);
			int nWidth=m_list_data_gear.GetStringWidth(fieldinfo.m_strName)+35;
			m_list_data_gear.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);
		}
		CString strValue;
		m_pset_gear.MoveFirst();
		int nCount=0;
		while(!m_pset_gear.IsEOF())
		{
			m_list_data_gear.InsertItem(nCount,strValue);
			for(int j=0;j<nFieldCount;j++)
			{
				m_pset_gear.GetFieldValue(j,strValue);
				m_list_data_gear.SetItemText(nCount,j,strValue);
			}
			m_pset_gear.MoveNext();
			nCount++;
		}
		EndWaitCursor();
}

void CPage_Standard_Append::IniListAppend()
{
      if(!m_pdatabase->IsOpen()) {MessageBox("数据获取失败!","提示",MB_ICONERROR+MB_OK);return;}
  	    CString strSQL="select * from gear_table where 齿厚留剃余量=0 and 齿轮零件号 not in (select 齿轮零件号 from standard_hob_table) and 齿轮零件号 not in (select 齿轮零件号 from tiqian_tutai_hob_table) and 齿轮零件号 not in (select 齿轮零件号 from tiqian_no_tutai_hob_table)";
		try
		{   
			m_pset_list_append.m_pDatabase=m_pdatabase;
			if(m_pset_list_append.IsOpen()) m_pset_list_append.Close();
	        m_pset_list_append.Open(CRecordset::dynaset,strSQL);
            if(m_pset_list_append.GetRecordCount()==0)
			{
			    return;
			}
		}
		catch(CDBException* e)
		{			
			e->Delete();
			return;
		}
	     if(!m_pset_list_append.IsEOF())
		{
		    m_pset_list_append.MoveLast();
		    m_pset_list_append.MoveFirst();
	    }
		int nFieldCount=m_pset_list_append.GetODBCFieldCount();
		fields_count=nFieldCount;
		CODBCFieldInfo fieldinfo;
		for(int n=0;n<nFieldCount;n++)
		{
			m_pset_list_append.GetODBCFieldInfo(n,fieldinfo);
			int nWidth=m_list_data_gear.GetStringWidth(fieldinfo.m_strName)+35;
			m_list_data_gear.InsertColumn(n,fieldinfo.m_strName,LVCFMT_RIGHT,nWidth);
		}
		CString strValue;
		m_pset_list_append.MoveFirst();
		int nCount=0;
		while(!m_pset_list_append.IsEOF())
		{
			m_list_data_gear.InsertItem(nCount,strValue);
			for(int j=0;j<nFieldCount;j++)
			{
				m_pset_list_append.GetFieldValue(j,strValue);
				m_list_data_gear.SetItemText(nCount,j,strValue);
			}
			m_pset_list_append.MoveNext();
			nCount++;
		}
		EndWaitCursor();
}

void CPage_Standard_Append::OnClicklistdatagear(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	UINT uSelectedCount=m_list_data_gear.GetSelectedCount();
	if(uSelectedCount>1||uSelectedCount==0)
	{
	  if(uSelectedCount==0)
	  {
		  MessageBox("要选择一条记录!","提示",MB_ICONWARNING+MB_OK);
		  init();
		  clear_list();
		  return;
	  }
      if(uSelectedCount>1)
	  {   
		  MessageBox("只能选择一条记录!","提示",MB_ICONWARNING+MB_OK);
	      init();
		  clear_list();
		  return;
	  }
	}
	else
	{
		int nItemSel=0;
        nItemSel=m_list_data_gear.GetNextItem(nItemSel-1,LVNI_SELECTED);
        CString strID[20],strSQL;
		for(int i=0;i<fields_count;i++)
		strID[i]=m_list_data_gear.GetItemText(nItemSel,i);
		m_num_gear.SetWindowText(strID[0]);
		m_mn_gear.SetWindowText(strID[1]);
	    m_zn_gear.SetWindowText(strID[2]);
        m_angle_gear.SetWindowText(strID[3]);
        m_helic_gear.SetWindowText(strID[4]);
        m_nthick_gear.SetWindowText(strID[5]);
        m_top_dia_gear.SetWindowText(strID[6]);
	    m_bottom_dia_gear.SetWindowText(strID[7]);
	    m_thick_gear.SetWindowText(strID[8]);
        m_margin_gear.SetWindowText(strID[9]);
        m_c_gear.SetWindowText(strID[10]);
		m_zn_gear1.SetWindowText("");
	    m_top_dia_gear1.SetWindowText("");
	    m_center_dist_gear1.SetWindowText("");
	    m_num_cutter.SetWindowText("");
	    m_dia_cutter.SetWindowText("");
	    m_hole_dia_cutter.SetWindowText("");
	    m_long_cutter.SetWindowText("");
	    m_zn_cutter.SetWindowText("");
	    m_qian_angle_cutter.SetWindowText("");
	    m_hou_angle_cutter.SetWindowText("");
	    m_tou_n_cutter.SetWindowText("");
	    m_chao_angle_cutter.SetWindowText("");
	}
	clear_list();
	*pResult = 0;
}

void CPage_Standard_Append::setparazero() 
{
 c_pk_info="";
 g_c=0.0f;
 g_z=0,c_n,c_zk=0;
 g_mn=0.0f,g_afn=0.0f,g_bf=0.0f,g_sfn=0.0f,g_de=0.0f,g_di=0.0f,g_ds=0.0f,g_c11=0.0f,g_x1=0.0f,g_z1=0.0f,g_de1=0.0f,g_a=0.0f,g_x2=0.0f;
 gf_ms=0.0f,gf_afs=0.0f,gf_invafs=0.0f,gf_df=0.0f,gf_df1=0.0f,gf_db=0.0f,gf_db1=0.0f,gf_Bb=0.0f,gf_as=0.0f,gf_l=0.0f,gf_pmin=0.0f,gf_dl=0.0f;
 c_deg=0.0f,c_di=0.0f,c_l=0.0f,c_rq=0.0f,c_e=0.0f,c_ae=0.0f,c_k=0.0f,c_ac=0.0f,c_k1=0.0f,c_heg=0.0f,c_hig=0.0f,c_hg=0.0f,c_h=0.0f,c_r=0.0f,c_o=0.0f,c_dfg=0.0f,c_helicf=0.0f,c_bk=0.0f,c_pk=0.0f,c_tng=0.0f,c_txg=0.0f,c_sng=0.0f,c_sxg=0.0f,c_axg=0.0f;
 r1=0.0f;r2=0.0f;
}

void CPage_Standard_Append::check()  
{
  para_check_symbol=0;
  int i;
  CString str[13];
  m_num_gear.GetWindowText(str[0]);
  m_c_gear.GetWindowText(str[1]);
  m_zn_gear1.GetWindowText(str[2]);
  m_top_dia_gear1.GetWindowText(str[3]);
  m_center_dist_gear1.GetWindowText(str[4]);
  m_dia_cutter.GetWindowText(str[5]);
  m_hole_dia_cutter.GetWindowText(str[6]);
  m_long_cutter.GetWindowText(str[7]);
  m_zn_cutter.GetWindowText(str[8]);
  m_qian_angle_cutter.GetWindowText(str[9]);
  m_hou_angle_cutter.GetWindowText(str[10]);
  m_tou_n_cutter.GetWindowText(str[11]);
  m_chao_angle_cutter.GetWindowText(str[12]);
   
  for(i=0;i<13;i++)
  {
  if(str[i]=="") 
  {
  para_check_symbol=1;
  switch(i)
  {
  case 0:
      strName="齿轮零件号"; m_num_gear.SetFocus();return;
  case 1:
	  strName="滚刀齿根与齿轮齿顶的径向间隙系数";m_c_gear.SetFocus();return;
  case 2:
	  strName="相配齿轮齿数";m_zn_gear1.SetFocus();return;
  case 3:
	  strName="相配齿轮齿顶圆直径";m_top_dia_gear1.SetFocus();return;
  case 4:
	  strName="中心距";m_center_dist_gear1.SetFocus();return;
  case 5:
	  strName="滚刀外径";m_dia_cutter.SetFocus();return;
  case 6:
	  strName="孔径";m_hole_dia_cutter.SetFocus();return;
  case 7:
	  strName="全长";m_long_cutter.SetFocus();return;

⌨️ 快捷键说明

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