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

236 lines
5.1 KiB
C++

// // SelectSheetDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "SelectSheetDlg.h"
#include "rxregsvc.h"
BOOL InvokeGJKMan(const TCHAR *pszLib, BOOL bSelOnly, XString &sBlockName)
{
if(!AT_loaded(_T("wfB"))) {
#ifndef ZWCAD
int nRet=acrxLoadModule(_T("wfB.arx"), Adesk::kTrue, true);
#else
int nRet=acrxLoadModule(_T("wfB.zrx"), Adesk::kTrue, true);
#endif
if(!nRet)
return NULL;
}
int nCode=RTT;
RBList rbCmd=ads_buildlist(RTSTR, _T("IGKW"), RTSTR, pszLib, nCode,
RTSTR, (const TCHAR *)sBlockName, NULL);
resbuf *rbRes=NULL;
AcDbEntity *pEntRes=NULL;
if(ads_invoke(rbCmd, &rbRes)==RTNORM && rbRes)
{
if(rbRes && rbRes->restype==RTSTR)
sBlockName=rbRes->resval.rstring;
ads_relrb(rbRes);
return TRUE;
}
return FALSE;
}
/////////////////////////////////////////////////////
// CSelectSheetDlg 对话框
IMPLEMENT_DYNAMIC(CSelectSheetDlg, CAcUiDialog)
CSelectSheetDlg::CSelectSheetDlg(CWnd* pParent /*=NULL*/)
:CAcUiDialog(CSelectSheetDlg::IDD, pParent)
{
m_bSingle=FALSE;
//add by xlc on 110307
m_bTextAsOp = FALSE; //统计作为门窗编号的文字
m_bBlock = TRUE; //统计块与外部参照内的门窗
}
CSelectSheetDlg::~CSelectSheetDlg()
{
}
void CSelectSheetDlg::DoDataExchange(CDataExchange* pDX)
{
CAcUiDialog::DoDataExchange(pDX);
DDX_Check(pDX, IDC_CHECK_BLOCKREF, m_bBlock);
DDX_Check(pDX, IDC_CHECK_TEXT, m_bTextAsOp);
}
BEGIN_MESSAGE_MAP(CSelectSheetDlg, CAcUiDialog)
ON_BN_CLICKED(IDC_BUTTON_SELECT, OnButtonSelectSheet)
ON_WM_PAINT()
//add by xlc on 090225
ON_WM_SETCURSOR()
ON_BN_CLICKED(IDC_PREVIEW, OnButtonSelectSheet)
//add by xlc on 110307
ON_BN_CLICKED(IDC_BUTTON_HELP, OnButtonHelp)
END_MESSAGE_MAP()
// CSelectSheetDlg 消息处理程序
BOOL CSelectSheetDlg::OnInitDialog()
{
CAcUiDialog::OnInitDialog();
ReadParamFromRegistry();
UpdatePreview();
return TRUE;
}
void CSelectSheetDlg::OnOK()
{
CAcUiDialog::OnOK();
}
void CSelectSheetDlg::OnPaint()
{
CPaintDC dc(this);
CWnd *pImageBox = GetDlgItem(IDC_PREVIEW);
ASSERT(pImageBox);
CDC *pDC = pImageBox->GetDC();
m_image.SetDC(pDC);
m_image.Redraw();
m_image.SetDC(NULL);
pImageBox->ReleaseDC(pDC);
}
// 刷新预览图
void CSelectSheetDlg::UpdatePreview()
{
CWnd *pImageBox = GetDlgItem(IDC_PREVIEW);
ASSERT(pImageBox);
CRect rect;
pImageBox->GetClientRect(rect);
CDC *pDC = pImageBox->GetDC();
m_image.InitDC(pDC, rect, GetAcadBackColor());
XString sFullSlide(256);
sFullSlide << g_sDwbPath << m_strBlockName;
m_image.PaintSlide(sFullSlide);
m_image.SetDC(NULL);
pImageBox->ReleaseDC(pDC);
}
// 获得块名
BOOL CSelectSheetDlg::GetBlockName(XString &sBlockName)
{
BeginEditorCommand();
XString sLibFile;
CString path = g_sDwbPath;
sLibFile << path << _T("sheet.TKW");
if(!InvokeGJKMan(sLibFile, TRUE, sBlockName)) {
CompleteEditorCommand();
UpdateData(FALSE);
return FALSE;
}
CompleteEditorCommand();
return TRUE;
}
void CSelectSheetDlg::OnButtonSelectSheet()
{
GetBlockName(m_strBlockName);
UpdatePreview();
}
//add by xlc on 090225
BOOL CSelectSheetDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
CWnd *pSlideWnd=GetDlgItem(IDC_PREVIEW);
if(pWnd && pWnd->m_hWnd==pSlideWnd->m_hWnd)
{
CTemporaryResourceOverride vTemp;
HCURSOR hIcon = AfxGetApp()->LoadCursor( IDC_CUR_PICK );
SetCursor( hIcon );
return TRUE;
}
return CAcUiDialog::OnSetCursor(pWnd, nHitTest, message);
}
// 关键注册位置,
BOOL CSelectSheetDlg::GetRegLocation(XString &sRegLoc) const
{
sRegLoc=_T("Sheet");
return TRUE;
}
// 从注册表读入参数
BOOL CSelectSheetDlg::ReadParamFromRegistry()
{
XString sRegSubLoc, sRegLoc(1024);
BOOL bOk=GetRegLocation(sRegSubLoc);
if(!bOk)
return FALSE;
sRegLoc << ::GetRegLocation() << _T("\\Settings") ;
CRegProperty regProp(sRegLoc, sRegSubLoc);
regProp.SetTopRootKey(HKEY_CURRENT_USER);
CString sBlockName;
CString sValueName(_T("OpeningTotalTable"));
if(m_bSingle)
sValueName=_T("OpeningTable");
if(!regProp.GetValue(sValueName, sBlockName))
{
if(m_bSingle)
sBlockName=_T("Sheet(00000002)");
else
sBlockName=_T("Sheet(00000003)");
}
m_strBlockName=sBlockName;
return TRUE;
}
// 把最近的参数写入注册表
BOOL CSelectSheetDlg::WriteParamToRegistry()
{
XString sRegSubLoc, sRegLoc(1024);
BOOL bOk=GetRegLocation(sRegSubLoc);
if(!bOk)
return FALSE;
sRegLoc << ::GetRegLocation() << _T("\\Settings") ;
CRegProperty regProp(sRegLoc, sRegSubLoc);
regProp.SetTopRootKey(HKEY_CURRENT_USER);
CString sValueName(_T("OpeningTotalTable"));
if(m_bSingle)
sValueName=_T("OpeningTable");
regProp.SetValue(sValueName, m_strBlockName);
return TRUE;
}
void CSelectSheetDlg::OnButtonHelp()
{
CAcModuleResourceOverride res;
CTextRuleDlg dlg;
dlg.DoModal();
}
/////////////////////////////////////////////////////
// CTextRuleDlg 对话框
IMPLEMENT_DYNAMIC(CTextRuleDlg, CAcUiDialog)
CTextRuleDlg::CTextRuleDlg(CWnd* pParent /*=NULL*/)
:CAcUiDialog(CTextRuleDlg::IDD, pParent)
{
}
CTextRuleDlg::~CTextRuleDlg()
{
}
void CTextRuleDlg::DoDataExchange(CDataExchange* pDX)
{
CAcUiDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CTextRuleDlg, CAcUiDialog)
END_MESSAGE_MAP()