#ifndef _ELEV_DLG_H_ #define _ELEV_DLG_H_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "Resource.h" #include "WDGrid.h" //以下类的定义整理by lgy 20120109 #define WM_GRID_CHANGED WM_USER+1 // sg add 090410 Adesk::Boolean acedPostCommand(const TCHAR * ); static BOOL g_bHatch = FALSE; // 是否实体填充 static BOOL g_bHasBase = FALSE; // 是否带基线 static BOOL g_bHasLeader = FALSE; // 是否带引线 static BOOL g_bHightWrite = FALSE; // 是否手工输入 // add by zkm static BOOL g_bContinue = TRUE; // 是否连标 static BOOL g_bOrder = FALSE; // 是否自动对齐标注 static BOOL g_bFirstExecute = TRUE; //总图命令,为TZELEV命令默认值使用 static double g_nLeaderLen = 7.0; static double g_nBaseLen = 7.0; // sg add 090209 static BOOL g_bDote = FALSE; // 是否点样式 static BOOL g_bStandard = FALSE; // 多行文字输出,是否规范样式,标高加括号 //modify by lgy 20120111 字高初始化时从程序中读取(即与文字管理一致) //static double g_dTextHeight = 3.5;// 字高 static double g_dTextHeight = GetTextHeightByTs(TS_SYMBOL); // 字高 // sg add 090212 static BOOL g_bParentheses = TRUE; // 传统样式,楼层是否加括号 static BOOL g_bElevSideText = TRUE; // 文字是否齐线端 //modify by lgy 20120111 文字样式初始化应从程序中读取 // sg add 090216 //static CString g_csFontStyle = _T("_TCH_DIM"); // 默认文字样式 static CString g_csFontStyle = GetTextStyleName(TS_SYMBOL); // 默认文字样式 // sg add 090220 static BOOL g_nElevType = 0; // 建筑标高为0,总图标高为1 static int g_nElevTextAlign = 0; // 总图,普通标高,文字排列方式 static BOOL g_bUseConversion = FALSE; // 总图,是否自动换算绝对标高 static CString g_csElevConversion = _T("50"); // 总图,换算关系 // sg add 090226 static BOOL g_bCommonElev = TRUE; // 普通标高样式 // sg add 090311 static CString g_csAbsoluteElev = _T("50"); // 绝对标高 static CString g_csRelativeElev = _T(""); // 相对标高或注释 static BOOL g_bElevMidText = TRUE; // 文字居中 // sg add 090313 static TString g_szGridText = _T(""); // 表格内容记忆 // sg add 120608 static BOOL g_bHollow = FALSE; // 是否三角形空心标高符号 static BOOL g_bElevCross = FALSE; // 是否使用十字标高符号 static CString g_csTextLoc = _T("上部"); // 总图标高默认文字位置,不包含普通标高样式 class CElevDlg; class CEditMutiElevDlg; // 多层楼层标高编辑对话框中使用的表格,sg add 090407 class TMutiElevGrid : public WDGrid { public: TMutiElevGrid() {}; BOOL m_bPrec3; protected: virtual void OnDataChanged(); virtual bool OnModified(WDGridCell&cell, CString &text); // sg add 090506,插入行前,首先COPY当前行内容,解决排顺序问题,防止插入的行内容总在最后 virtual bool OnBeforeInsertRow(long i, WDGridRow*&pNewRow); public: void ArrangeDouble(); }; // 多层标高编辑对话框,sg add 090401,8.0新功能 class CEditMutiElevDlg: public CModelessDialog { // Construction public: CEditMutiElevDlg(CWnd* pParent = NULL); // standard constructor public: // 与CElevDlg类的交互函数 void SetPrecision(BOOL bPrec3); // 精确度设置,只用在对话框上显示使用 void SetCell01(CString csCell01); // 从标高对话框传进来的首层楼层号/解释 // 从标高对话框传进来的已知的楼层号,用于初始化表格 void SetKnownElev(XStringList &lstElevs); // 返回给标高对话框的表格内容 void GetGridTexts(XStringList &lstElevs, XStringList &lstFloors); // Dialog Data protected: //{{AFX_DATA(CEditMutiElevDlg) enum { IDD = IDD_DIALOG_MUTIELEVEDIT }; CComboBox m_cmbLHeight; CComboBox m_cmbLNum; //}}AFX_DATA static CString m_csLHeight; // 层高(记忆使用) static CString m_csLNum; // 层数 TMutiElevGrid m_grid; // 表格 BOOL m_bAutoFloorInfo; // 自动填充楼层号 CString m_csFirstFloor; // 首层楼层号 BOOL m_bPrec3; // 是否精确到小数点后第三位 CString m_csCell01; // 标高对话框传进来的首层楼层号/解释 protected: void AnalysisCell01(); // 解析楼层号/解释,填充m_bAutoFloorInfo、m_csFirstFloor double GetLHeight(); // 获取层高,已换算到M单位 CString GetFormatText(XString szText); // 按照传进来的精度显示标高,非数字不做处理 CString GetFormatText(double dElev); // 按照传进来的精度显示标高 // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CEditMutiElevDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: // Generated message map functions //{{AFX_MSG(CEditMutiElevDlg) virtual BOOL OnInitDialog(); afx_msg void OnButtonAddElev(); afx_msg void OnButtonClearList(); afx_msg void OnChangeEditFirstFloor(); afx_msg void OnBnClickedAutoFloor(); afx_msg LRESULT OnGridChanged(WPARAM wParam, LPARAM lParam); // sg add 090410 //}}AFX_MSG DECLARE_MESSAGE_MAP() }; // 标高,sg modify 090209,满足8.0的新需求 class CElevDlg:public CModelessDialog { protected: WDGrid m_grid; public: CElevDlg(TDbSymbElevation *pElev); CElevDlg(CWnd* pParent = NULL); virtual ~CElevDlg(); BOOL IsSitePlanDlg(){return m_bSitePlanDlg;}//设置为总图标高单独对话框 void SetSitePlanDlg(BOOL bSitePlan);//设置为总图标高单独对话框 // sg add 120609,下面这些函数用于提供外界与上面定义的静态变量交互使用 BOOL IsHightWrite () const; BOOL IsHasBase() const; BOOL IsHasLeader() const; void SetLeaderLen(double dLen); void SetBaseLen(double dLen); BOOL IsOrder() const; virtual void DoDataExchange(CDataExchange*pDX); virtual BOOL OnInitDialog(); virtual void OnOK(); // add by zkm void SetEntPoint(TDbSymbElevation * pElev); // 关联标注对象 void UpdataEnt(); void UpdateEntText(); void SetGridEnableWrite(BOOL bWrite); // 表格设置可写 void UpdateGrid(double newValue); // 更新Grid值 void UpDateGridToStar(); // 清空标注的附加内容 void SetArchElevGrid(); // sg add 090222,设置表格行数、表头 void InitGridAndTextFromEnt(); // sg add 090222,用对象中的文字内容,填充表格 void SetOrderFa(BOOL bOrder); void GetTextHeight(); // sg add 090209,获取文字字高 void LoadTextStyle(); // sg add 090209,加载文字样式 void SetTabCurPage1(); // sg add 090220,设置当前标高页面控件显示情况 void SetTabCurPage2(); // sg add 090227,强制对标高当前选择页面进行规定 void SetShowByUseConversion(); // sg add 090311,根据是否自动换算,设置各控件是否显示 void SetTextLocationByStyle(); // sg add 090311 BOOL IsDigitEle(const XString &sText); // sg add 090223,判断输入内容是否是数字 void CalAbsoluteElev(); // sg add 090223,用换算关系、相对标高,计算绝对标高 void CalRelativeElev(); // sg add 090312,用换算关系、绝对标高,计算相对标高 DECLARE_MESSAGE_MAP() virtual void PostNcDestroy(){ if(m_bDlgType)delete this; } afx_msg void OnPickHatch(); afx_msg void OnPickBaseLine(); afx_msg void OnPickLeadLine(); afx_msg void OnOrder(); afx_msg void OnContinueDim(); afx_msg void OnPrecision(); afx_msg void OnDestroy(); afx_msg void OnClose(); afx_msg void OnActivate(UINT nState,CWnd*pWndOther,BOOL bMinimized); afx_msg void OnPickCheckWriter(); void OnCheckHatch(); // 以下三个函数未使用 void OnCheckBaseLine(); void OnCheckLeader(); afx_msg void OnPickDote(); // sg add 090209,圆点样式 afx_msg void OnPickHollow(); // sg add 120608,三角形空心标高符号 afx_msg void OnPickCommonElev(); // sg add 090226,普通样式 afx_msg void OnButtonTextHeight(); // sg add 090212,字高、文字样式 afx_msg void OnPickCross(); //十字标高符号 afx_msg void OnSelchangeComboFongstyle(); afx_msg void OnSelchangeComboTextLoc(); // sg add 120608,总图标高默认文字位置,不包含普通标高样式 afx_msg void OnSelchangeComboTextHeight(); afx_msg void OnEditchangeComboTextHeight(); afx_msg void OnBnClickedSideText(); // sg add 090217,齐线端、规范样式、加括号 afx_msg void OnBnClickedStandard(); afx_msg void OnBnClickedParentheses(); afx_msg void OnBnClickedUseConversion(); // sg add 090222,自动计算换算标高 afx_msg void OnChangeEditConversion(); // sg add 090223,修改换算关系值 afx_msg void OnSelchangeTabElevType(NMHDR* pNMHDR, LRESULT* pResult); // sg add 090220,切换标高类型 afx_msg void OnRadioElevAlignType1(); // sg add 090224,上下排列 afx_msg void OnRadioElevAlignType2(); // sg add 090301,左右排列 afx_msg void OnBnClickedUpText(); // sg add 090311,文字居中 afx_msg void OnChangeEditAbsoluteElev(); // sg add 090311,修改绝对标高 afx_msg void OnChangeEditRelativeElev(); // sg add 090311,修改相对标高 afx_msg void OnButtonAddMutiElev(); // sg add 090401,调用自动多层标高 public: static CElevDlg *g_pElevDlg; TDbSymbElevation *m_pElev; BOOL m_bUpdateText; BOOL m_bHatchTou; // 当拖动引线长度时控制填充按钮不可用 BOOL m_bOrderTou; // 选择第一点时对齐不可选(无对齐目标) BOOL m_bDlgType; // FALSE 模态 TRUE 非模态 CString m_csTextHeight; // sg add 090209,字高、字体样式、文字位置 CString m_csFontStyle; CString m_csTextLoc; protected: enum { IDD = IDD_ELEV }; CButton m_ButHatch; CButton m_ButBaseLine; CButton m_ButLeadLine; CButton m_ButContinue; CButton m_ButOrder; CComboBox m_ComBox; CButton m_Rider; CButton m_ButDote; // sg add 090209,圆点样式 CButton m_ButHollow; // sg add 120608,空心三角形地坪标高 CComboBox m_cmbTextHeight; // sg add 090209,字高、字体样式、文字位置 CComboBox m_cmbStyleName; CComboBox m_cmbTextLoc; CTabCtrl m_Tab; // sg add 090220,属性页 CButton m_ButCommon; // sg add 090226,普通标高样式 CButton m_ButCross; //jsx add 160513,十字样式标高 protected: void InitData(); void UpdateBitmap(); // 该函数无实现 BOOL m_bSitePlanDlg; //设置总图标高独立对话框 }; #endif