236 lines
5.0 KiB
C++
236 lines
5.0 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()
|