Files
envi-code/SourceCode/Code2026/tg_shs/shs_TwtKernal/BaseHoleDlg.cpp
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

285 lines
6.1 KiB
C++

#include "stdafx.h"
#include "BaseHoleDlg.h"
#include "SelectBlkDlg.h"
#include "BaseHoleOperation.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//基础洞命令实现函数
void InsHole()
{
CTemporaryResourceOverride vTemp;
//打开基础洞设置对话框
CBaseHoleDlg baseHoleDlg(0,acedGetAcadFrame());
baseHoleDlg.Create(IDD_BASE_HOLE);
baseHoleDlg.ShowWindow(SW_SHOW);
//执行基础洞命令
CBaseHoleOperation baseHoleOperation;
baseHoleOperation.RunBaseHole(baseHoleDlg);
if (!baseHoleDlg.IsDestroy())
{
baseHoleDlg.DestroyWindow();
}
}
IMPLEMENT_DYNAMIC(CBaseHoleDlg, CModelessDialog)
CBaseHoleDlg::CBaseHoleDlg(int iType, CWnd* pParent /*=NULL*/)
: CModelessDialog(CBaseHoleDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CBaseHoleDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_strSysBlk1 = _T("TWTSYS(00000512)");
m_strSubscript = _T("");
m_strSuperscript= _T("");
m_bDestroy = FALSE;
}
CBaseHoleDlg::~CBaseHoleDlg()
{
}
void CBaseHoleDlg::DoDataExchange(CDataExchange* pDX)
{
CModelessDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBaseHoleDlg)
DDX_Control(pDX, IDC_COMBO_SUBSCRIPT, m_cmbSubscript);
DDX_Control(pDX, IDC_COMBO_SUPERSCRIPT, m_cmbSuperscript);
DDX_Control(pDX, IDC_COMBO_HOLEWIDTH, m_cmbHoleWidth);
DDX_Control(pDX, IDC_COMBO_HOLEHIGH, m_cmbHoleHigh);
DDX_Control(pDX, IDC_COMBO_BOTTOMHIGH, m_cmbBottomHigh);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBaseHoleDlg, CModelessDialog)
//{{AFX_MSG_MAP(CBaseHoleDlg)
ON_MESSAGE(WM_ACAD_KEEPFOCUS, onAcadKeepFocus)
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_PREVIEW, OnPreview)
ON_WM_PAINT()
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
LONG_PTR CBaseHoleDlg::onAcadKeepFocus(UINT_PTR, LONG_PTR)
{
CPoint pt;
GetCursorPos(&pt);
CRect rc;
GetWindowRect(&rc);
return (rc.PtInRect(pt) ? TRUE : FALSE);
}
double CBaseHoleDlg::getHoleWidth()
{
double dRet = 0.0;
CString strData;
m_cmbHoleWidth.GetWindowText(strData);
dRet = _tstof(strData);
return dRet;
}
double CBaseHoleDlg::getHoleHigh()
{
double dRet = 0.0;
CString strData;
m_cmbHoleHigh.GetWindowText(strData);
dRet = _tstof(strData);
return dRet;
}
double CBaseHoleDlg::getBottomHigh()
{
double dRet = 0.0;
CString strData;
m_cmbBottomHigh.GetWindowText(strData);
dRet = _tstof(strData);
return dRet;
}
BOOL CBaseHoleDlg::OnInitDialog()
{
CModelessDialog::OnInitDialog();
UpdateDlgData(TRUE);
acDocManager->lockDocument(curDoc(),AcAp::kWrite,NULL,NULL,true);
XString xsBlk;
XString xsTKName, xsRocord;
SplitSlbName(m_strSysBlk1, xsTKName, xsRocord);
LoadDwbBlock(xsTKName, xsRocord, xsBlk);
m_strInsBlkName = xsBlk;
acDocManager->unlockDocument(curDoc());
OpenSlide();
return TRUE;
}
void CBaseHoleDlg::UpdateDlgData(BOOL bIsRead)
{
CRegProperty regProp(GetRegLocation(), _T("BaseHoleConfig"));
regProp.SetTopRootKey(HKEY_CURRENT_USER);
if (bIsRead)
{
CString strHoleWidth, strHoleHigh, strBottomHigh;
CString strSuperscript;
CString strSubscript;
if(regProp.GetValue(_T("HoleWidth"), strHoleWidth))
{
m_cmbHoleWidth.SetWindowText(strHoleWidth);
}
else
{
m_cmbHoleWidth.SetCurSel(0);
}
if (regProp.GetValue(_T("HoleHigh"), strHoleHigh))
{
m_cmbHoleHigh.SetWindowText(strHoleHigh);
}
else
{
m_cmbHoleHigh.SetCurSel(0);
}
if (regProp.GetValue(_T("BottomHigh"), strBottomHigh))
{
m_cmbBottomHigh.SetWindowText(strBottomHigh);
}
else
{
m_cmbBottomHigh.SetCurSel(0);
}
if (regProp.GetValue(_T("Superscript"), strSuperscript))
{
m_cmbSuperscript.SetWindowText(strSuperscript);
}
else
{
m_cmbSuperscript.SetCurSel(0);
}
if (regProp.GetValue(_T("Subscript"), strSubscript))
{
m_cmbSubscript.SetWindowText(strSubscript);
}
else
{
m_cmbSubscript.SetWindowText(_T(""));
}
if (!regProp.GetValue(_T("strBlkName"), m_strSysBlk1))
{
m_strSysBlk1 = _T("TWTSYS(00000512)");
}
UpdateData(FALSE);
}
else
{
UpdateData(TRUE);
regProp.SetValue(_T("HoleWidth"), getHoleWidth());
regProp.SetValue(_T("HoleHigh"), getHoleHigh());
regProp.SetValue(_T("BottomHigh"), getBottomHigh());
regProp.SetValue(_T("Superscript"), getSuperscript());
regProp.SetValue(_T("Subscript"), getSubscript());
regProp.SetValue(_T("strBlkName"), m_strSysBlk1);
}
}
void CBaseHoleDlg::OnClose()
{
DestroyWindow();
}
void CBaseHoleDlg::OnPreview()
{
UpdateData();
CTemporaryResourceOverride vTemp;
CSelectBlkDlg dlg;
dlg.m_csTkName = _T("TWTSYS");
dlg.m_csType = _T("基础洞");
CWnd *pWnd = GetDlgItem(IDC_PREVIEW);
CRect rect;
dlg.m_staticSlide.m_csCurRecord = m_strSysBlk1;
pWnd->GetWindowRect(&rect);
dlg.m_ptBase = rect.TopLeft();
if(dlg.DoModal() == IDOK)
{
CString strRet = dlg.m_staticSlide.m_csCurRecord;
CString strDes = dlg.m_staticSlide.m_csCurDesName;
m_strSysBlk1 = _tcsrchr(strRet,_T('\\'))+1;
XString xsTKName, xsRocord;
SplitSlbName(strRet, xsTKName, xsRocord);
acDocManager->lockDocument(curDoc(),AcAp::kWrite,NULL,NULL,true);
XString xsBlk;
LoadDwbBlock(xsTKName, xsRocord, xsBlk);
m_strInsBlkName = xsBlk;
acDocManager->unlockDocument(curDoc());
OpenSlide();
}
}
void CBaseHoleDlg::OpenSlide()
{
UpdateData(TRUE);
CWnd *pImageBox = GetDlgItem(IDC_PREVIEW);
CString strTKName, strRocord;
CString strSlb;
SplitBlkStr(m_strInsBlkName, strTKName, strRocord);
strSlb.Format(_T("%s(%s)"), strTKName, strRocord);
DrawSlide((const TCHAR*)strSlb, pImageBox);
}
void CBaseHoleDlg::OnPaint()
{
CPaintDC dc(this);
OpenSlide();
}
CString CBaseHoleDlg::getSuperscript()
{
UpdateData(TRUE);
CString strSuperscript = _T("");
m_cmbSuperscript.GetWindowText(strSuperscript);
return strSuperscript;
}
CString CBaseHoleDlg::getSubscript()
{
UpdateData(TRUE);
CString strSubscript = _T("");
m_cmbSubscript.GetWindowText(strSubscript);
return strSubscript;
}
void CBaseHoleDlg::OnDestroy()
{
UpdateDlgData(FALSE);
m_bDestroy = TRUE;
CModelessDialog::OnDestroy();
acedPostCommand(_T("\33\33"));
}
BOOL CBaseHoleDlg::IsDestroy()
{
return m_bDestroy;
}