// // 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()