📄 updatedrawdlg.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 + -