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

📄 updatedrawdlg.cpp

📁 这是书上的代码
💻 CPP
字号:
//-----------------------------------------------------------------------------
//----- UpdateDrawDlg.cpp : implementation file
#include "StdAfx.h"
#include "resource.h"
#include "UpdateDrawDlg.h"
#include "cjming_ding_maokou.h"
//-----------------------------------------------------------------------------
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

//-----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC (CUpdateDrawDlg, CAdUiBaseDialog)

BEGIN_MESSAGE_MAP(CUpdateDrawDlg, CAdUiBaseDialog)
	//{{AFX_MSG_MAP(CUpdateDrawDlg)
	ON_MESSAGE(WM_ACAD_KEEPFOCUS, OnAcadKeepFocus)    // Needed for modeless dialog.
	ON_CBN_EDITCHANGE(IDC_COMBO, OnEditchangeCombo)
	ON_CBN_SELCHANGE(IDC_COMBO, OnSelchangeCombo)
	ON_WM_KEYDOWN()
	ON_WM_KEYUP()
	ON_BN_CLICKED(IDC_BUTTONget, OnBUTTONget)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

//-----------------------------------------------------------------------------
CUpdateDrawDlg::CUpdateDrawDlg (CWnd* pParent /*=NULL*/, HINSTANCE hInstance /*=NULL*/) : CAdUiBaseDialog (CUpdateDrawDlg::IDD, pParent, hInstance) {
	//{{AFX_DATA_INIT(CUpdateDrawDlg)
	m_dodim = FALSE;
	m_d = 0.0;
	m_DR = 0.0;
	m_h = 0.0;
	m_HR = 0.0;
	m_mx = 0.0;
	m_my = 0.0;
	m_R = 0.0;
	m_T = 0.0;
	m_g = 0.0;
	//}}AFX_DATA_INIT
}

void CUpdateDrawDlg::DoDataExchange (CDataExchange *pDX) {
	CAdUiBaseDialog::DoDataExchange (pDX) ;
	//{{AFX_DATA_MAP(CUpdateDrawDlg)
DDX_Control(pDX, IDC_EDITg, m_editg);
	DDX_Control(pDX, IDC_EDITT, m_editT);
	DDX_Control(pDX, IDC_EDITR, m_editR);
	DDX_Control(pDX, IDC_EDITMY, m_editmy);
	DDX_Control(pDX, IDC_EDITMX, m_editmx);
	DDX_Control(pDX, IDC_EDITHR, m_editHR);
	DDX_Control(pDX, IDC_EDITH, m_edith);
	DDX_Control(pDX, IDC_EDITDR, m_editDR);
	DDX_Control(pDX, IDC_EDITD, m_editd);
	DDX_Control(pDX, IDC_COMBO, m_combo);
	DDX_Control(pDX, IDC_CHECKDIM, m_checkdim);
	DDX_Check(pDX, IDC_CHECKDIM, m_dodim);
	DDX_Text(pDX, IDC_EDITD, m_d);
	DDX_Text(pDX, IDC_EDITDR, m_DR);
	DDX_Text(pDX, IDC_EDITH, m_h);
	DDX_Text(pDX, IDC_EDITHR, m_HR);
	DDX_Text(pDX, IDC_EDITMX, m_mx);
	DDX_Text(pDX, IDC_EDITMY, m_my);
	DDX_Text(pDX, IDC_EDITR, m_R);
	DDX_Text(pDX, IDC_EDITT, m_T);
	DDX_Text(pDX, IDC_EDITg, m_g);
	//}}AFX_DATA_MAP
}

// Needed for modeless dialogs to keep focus.
// Return FALSE to not keep the focus, return TRUE to keep the focus
LONG CUpdateDrawDlg::OnAcadKeepFocus(UINT, UINT)
{
  return TRUE;
}

//-----------------------------------------------------------------------------
void CUpdateDrawDlg::OnOK() 
{
	UpdateData(TRUE);
	CString group_name,temp_name;
	int n=m_combo.GetCurSel();

	m_combo.GetLBText(n,temp_name);
	if(temp_name.IsEmpty())
		return;
	 group_name="cjming_ding_maokou";
	 group_name+=temp_name;
   	
	if(!check_groupname_exit(&group_name))
	{
		AfxMessageBox("图形名被修改了!");
		return ;
	}
	if(!delete_group(&group_name))
		return ;

	data dd;
	 dd.T=m_T;
	 dd.DR=m_DR;
	 dd.HR=m_HR;
	 dd.h=m_h;
	 dd.R=m_R;
	 dd.d=m_d;
	
	 double bpoint[3][2];
	 bpoint[0][0]=m_mx;
	 bpoint[0][1]=m_my;
     bpoint[1][0]=0;
	 bpoint[1][1]=0;
	 bpoint[2][0]=0;
	 bpoint[2][1]=0;

	Ccjming_ding_maokou maokou(&dd,bpoint,temp_name);
	 if(!maokou.check_data())
	{
	 AfxMessageBox("输入数据不合理!");
		return ;
	} 
	maokou.draw();
	if(m_dodim)
		maokou.dim();
}

void CUpdateDrawDlg::OnEditchangeCombo() 
{
	// TODO: Add your control notification handler code here
	
}

void CUpdateDrawDlg::OnSelchangeCombo() 
{
	CString group_name,temp_name;
	int n=m_combo.GetCurSel();
	m_combo.GetLBText(n,temp_name);
	if(temp_name.IsEmpty())
	return;
	
	 group_name="cjming_ding_maokou";
	 group_name+=temp_name;
     if(!check_groupname_exit(&group_name))
		return;
	 rexdata re;
	 double  temp_dd[6];
	 AcDbGroup *pGroup;

	 if(!open_group(pGroup,&group_name))
	 {
		 AfxMessageBox("操纵图形数据库失败!");
		 return ;
	 }
	 if(!get_xdata(1,&re,pGroup))
	 {
		 AfxMessageBox("操纵图形数据库失败!");
		 return ;
	 }
	 if(re.int_value==2) m_dodim=TRUE;
	  else m_dodim=FALSE;

	  for(int i=7;i<13;i++)
	 {
		 if(!get_xdata(i,&re,pGroup))
	 {
		 AfxMessageBox("操纵图形数据库失败!");
		 pGroup->close();
		 return ;
	 }
     temp_dd[i-7]=re.double_value;
	 }
	 m_T=temp_dd[0];
	 m_DR=temp_dd[1];
	 m_HR=temp_dd[2];
	 m_h=temp_dd[3];
	 m_R=temp_dd[4];
	 m_d=temp_dd[5];
	 

	 AcGePoint3d keypoint,keypoint1;
	 AcDbLine  *pline;
	 AcDbObjectId id;
	 long long_id;
	 if(!get_xdata(4,&re,pGroup))
	 {
		 AfxMessageBox("操纵图形数据库失败\n或者图形已删除!");
		  pGroup->close();
		 return ;
	 }
     long_id=re.long_value;

	 id.setFromOldId(long_id);
	 if(acdbOpenObject(pline,id,AcDb::kForRead)!=Acad::eOk)
	 {
		 AfxMessageBox("操纵图形数据库失败!");
		 pGroup->close();
		 return ;
	 }
	 keypoint=pline->startPoint();
	 keypoint1=pline->endPoint();
	 pline->close();
	 m_mx=(keypoint[0]+keypoint1[0])/2;
	 m_my=keypoint[1];

      pGroup->close();
	 
     UpdateData(FALSE);

	
}

void CUpdateDrawDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	
	CAdUiBaseDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}

void CUpdateDrawDlg::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	
	CAdUiBaseDialog::OnKeyUp(nChar, nRepCnt, nFlags);
}

BOOL CUpdateDrawDlg::OnInitDialog() 
{
	CAdUiBaseDialog::OnInitDialog();
    CList<CString,CString> list;
	CString str="cjming_ding_maokou";
	enum_groupname(&str,&list);
	POSITION pos = list.GetHeadPosition();
    for(int i=0;i<list.GetCount();i++)
		m_combo.AddString(list.GetNext(pos));
	return TRUE;   // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CUpdateDrawDlg::OnBUTTONget() 
{
	UpdateData(TRUE);
	HRESULT hr;
	//用于打开数据库和操作数据库的变量 
    _ConnectionPtr pAdoConnection;
    _RecordsetPtr  pRecordSet;
	_variant_t     TheValue;	
	variant_t vntRecordAffected;
	//初始化com库
	if(FAILED(	AfxOleInit()))
	{
		AfxMessageBox("未能正确初始化com库\n程序不能正常进行!");
	
		return ;
	}	
   try
   {
	hr=pAdoConnection.CreateInstance("ADODB.Connection");
	
	//打开数据库
	if(SUCCEEDED(hr))
	{ 
	  hr=pAdoConnection->Open("DSN=castCAD"," "," ",-1);
	}
	else
	{
		AfxMessageBox("创建数据库连接失败!");
		
		::CoUninitialize();//释放com库
		return;
	}
	
   pRecordSet.CreateInstance(_uuidof(Recordset)); 
	CString sq;
	sq.Format("SELECT * FROM  castCAD WHERE G_mao=%f",m_g);
	 try{
            pRecordSet->Open(sq.GetBuffer(1),(IDispatch*)pAdoConnection,
			             adOpenDynamic,adLockOptimistic,adCmdText);
		
		    TheValue=pRecordSet->GetCollect((long)0);
    		m_T= TheValue.intVal;           
        	TheValue=pRecordSet->GetCollect((long)1);
    		m_DR= TheValue.intVal;
			TheValue=pRecordSet->GetCollect((long)2);
    		m_HR= TheValue.intVal;
			TheValue=pRecordSet->GetCollect((long)3);
    		m_h= TheValue.intVal;
			TheValue=pRecordSet->GetCollect((long)4);
    		m_R= TheValue.intVal;
			TheValue=pRecordSet->GetCollect((long)5);
    		m_d= TheValue.intVal;
            UpdateData(FALSE);
			pRecordSet->Close();
            pAdoConnection->Close();
		}
	catch(_com_error &e)
	{
     CString errormessage;
     errormessage.Format("数据库查询失败!\r\n错误信息:%s",e.ErrorMessage());
     AfxMessageBox(errormessage);///显示错误信息
	 pRecordSet->Close();
     pAdoConnection->Close();
     
     ::CoUninitialize();//释放com库
		return;
	}
	 
  }////////////???????????????????????????
  catch(_com_error e)///捕捉异常
  {
  CString errormessage;
  errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
  AfxMessageBox(errormessage);///显示错误信息
  
  ::CoUninitialize();//释放com库
  return;
  } 
 ::CoUninitialize();//释放com库
}

⌨️ 快捷键说明

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