577 lines
19 KiB
C++
577 lines
19 KiB
C++
#if !defined(AFX_INSTEXTDLG_H__FA6B9462_8FCD_432C_9C0E_3663CF9EC4F1__INCLUDED_)
|
|
#define AFX_INSTEXTDLG_H__FA6B9462_8FCD_432C_9C0E_3663CF9EC4F1__INCLUDED_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
// InsTextDlg.h : header file
|
|
|
|
#include "resource.h"
|
|
#include "afxwin.h"
|
|
#include "afxcmn.h"
|
|
#include <deque>
|
|
#include <map>
|
|
#include "XMLDomNode.h"
|
|
#include "XMLDomNodes.h"
|
|
#include "XMLDomFile.h"
|
|
#include "EdJigEx.h"
|
|
//////////////////////
|
|
#define TARCH_TEXTLIB_MSG_NEW WM_USER+100
|
|
#define TARCH_TEXTLIB_MSG_INSERT WM_USER+101
|
|
#define TARCH_TEXTLIB_MSG_RENAME WM_USER+102
|
|
#define TARCH_TEXTLIB_MSG_DELETE WM_USER+103
|
|
///////////////////////////////////////
|
|
//命名字符串
|
|
class CNameString:public CString
|
|
{
|
|
public:
|
|
CString m_sContent;//详细内容
|
|
public:
|
|
CNameString(const TCHAR*s=NULL):CString(s){}//ok
|
|
|
|
void Split(CString &szName,CString &szContent0,CString& szContent1,CString&szContent2,CString&szContent3)
|
|
{
|
|
szName=*this;
|
|
|
|
UString swContent(m_sContent),swContent0,swContent1,swContent2,swContent3;
|
|
if(swContent.Length()<=125)
|
|
swContent0=swContent;
|
|
else
|
|
{
|
|
swContent0=swContent.Left(125);
|
|
|
|
if(swContent.Length()<=250)
|
|
swContent1=swContent.Right(swContent.Length()-125);
|
|
else
|
|
{
|
|
swContent1=swContent.Mid(125,249);
|
|
|
|
if(swContent.Length()<=375)
|
|
swContent2=swContent.Right(swContent.Length()-250);
|
|
else
|
|
{
|
|
swContent2=swContent.Mid(250,374);
|
|
swContent3=swContent.Right(swContent.Length()-375);
|
|
}
|
|
}
|
|
}
|
|
|
|
/*if(swContent.GetLength()<=125)
|
|
swContent0=swContent;
|
|
else
|
|
{
|
|
swContent0=swContent.Left(125);
|
|
|
|
if(swContent.GetLength()<=250)
|
|
swContent1=swContent.Right(swContent.GetLength()-125);
|
|
else
|
|
{
|
|
swContent1=swContent.Mid(125,125);
|
|
|
|
if(swContent.GetLength()<=375)
|
|
swContent2=swContent.Right(swContent.GetLength()-250);
|
|
else
|
|
{
|
|
swContent2=swContent.Mid(250,125);
|
|
swContent3=swContent.Right(swContent.GetLength()-375);
|
|
}
|
|
}
|
|
}*/
|
|
USES_CONVERSION;
|
|
szContent0=W2A(swContent0);
|
|
szContent1=W2A(swContent1);
|
|
szContent2=W2A(swContent2);
|
|
szContent3=W2A(swContent3);
|
|
}
|
|
CString GetContent()const{return m_sContent==""?*this:m_sContent;}//ok
|
|
};
|
|
// CListBoxItemData
|
|
class CListBoxItemData
|
|
{
|
|
public:
|
|
PDList<CNameString> lstNames;
|
|
bool m_bAutoDel;//全部目录是指针引用,不自动删除
|
|
public:
|
|
CListBoxItemData(bool bAD=true):m_bAutoDel(bAD){}//ok
|
|
virtual ~CListBoxItemData(){Clear();}
|
|
void Clear()
|
|
{
|
|
if(m_bAutoDel)
|
|
lstNames.Clear();
|
|
else
|
|
{
|
|
DualList<CNameString*> temp;
|
|
temp.Conbine(lstNames);
|
|
}
|
|
}
|
|
};
|
|
|
|
//////////////////////////////////////////////////
|
|
// CEditForListBox
|
|
class CEditForListBox : public CEdit
|
|
{
|
|
public:
|
|
CListBoxItemData *m_pItemData;
|
|
public:
|
|
CEditForListBox();
|
|
virtual ~CEditForListBox();
|
|
|
|
virtual void PostNcDestroy();
|
|
virtual BOOL PreTranslateMessage(MSG *pMsg);
|
|
void SetExtentData(CListBoxItemData *&pItemData);
|
|
afx_msg void OnKillFocus(CWnd* pNewWnd);
|
|
DECLARE_MESSAGE_MAP()
|
|
};
|
|
|
|
///////////////////////////////////////
|
|
// CExtendListBox
|
|
class CExtendListBox : public CDragListBox
|
|
{
|
|
DECLARE_DYNAMIC(CExtendListBox)
|
|
|
|
public:
|
|
CExtendListBox(int iFlag = 0);
|
|
virtual ~CExtendListBox();
|
|
|
|
public:
|
|
CListBoxItemData* GetBoxData(){return m_pItemData;}//ok
|
|
virtual void PreSubclassWindow();
|
|
virtual void Dropped(int nSrcIndex,CPoint pt);
|
|
void DoDeleteItem();
|
|
void DoInsertItem();
|
|
void DoAppendItem();
|
|
void DoModifyItem();
|
|
BOOL GetModify();
|
|
void SetModify(BOOL bModified = TRUE);
|
|
void SetExtendData(CListBoxItemData *&pItemData);
|
|
int SetCurSel(int nSelect);
|
|
|
|
CNameString* FindNameString(CString szName);
|
|
CNameString* CreateNameString();
|
|
void CreateEdit();
|
|
CString CreateNewName();
|
|
protected:
|
|
int m_iFlag;
|
|
BOOL m_bModified;
|
|
CListBoxItemData *m_pItemData;
|
|
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
|
|
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
|
|
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
|
|
afx_msg void OnMenuCommand(UINT id);
|
|
virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
|
|
DECLARE_MESSAGE_MAP()
|
|
};
|
|
//////////////////////////////////////////////////////////////
|
|
//得到一个xml文档中节点的各种数据
|
|
CXMLNodeInfo GetNodeInfo(const CXMLDOMNodePtr &pXmlNode,CXMLDOMFile *pXMLDoc);
|
|
CXMLNodeInfo GetNodeInfoEx(const CXMLDOMNodePtr &pXmlNode,CXMLDOMFile *pXMLDoc);
|
|
|
|
//打开xml文档
|
|
BOOL OPenXmlDoc(CXMLDOMFile&xmlDoc);
|
|
//////////////////////////////////////////////////////////////
|
|
///////////////////////////////////////
|
|
//用于 新词库 的edit控件 主要是改了存储的数据
|
|
class CArtchTextLibEdit : public CEdit
|
|
{
|
|
public:
|
|
CXMLNodeInfo *m_pItemData;// 一个叶子节点的数据
|
|
public:
|
|
CArtchTextLibEdit();
|
|
CArtchTextLibEdit(CXMLDOMFile* pXMLDoc);
|
|
virtual ~CArtchTextLibEdit();
|
|
virtual void PostNcDestroy();
|
|
virtual BOOL PreTranslateMessage(MSG *pMsg);
|
|
void SetExtentData(CXMLNodeInfo *&pItemData);
|
|
afx_msg void OnKillFocus(CWnd* pNewWnd);
|
|
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
|
|
afx_msg void OnEnChange(NMHDR* p, LRESULT* l);
|
|
DECLARE_MESSAGE_MAP()
|
|
void SetXMLDoc(CXMLDOMFile*pXMLDoc);//设置xml指针
|
|
CXMLDOMFile* m_pXMLDoc;//xml文档指针 全部指向 dlg定义的那个
|
|
};
|
|
/////////////////////新词库listBox/////////////////////////////
|
|
///////////////主要更改了每行存储的扩展数据///////////////
|
|
class CArchTextLibListBox : public CDragListBox
|
|
{
|
|
DECLARE_DYNAMIC(CArchTextLibListBox)
|
|
public:
|
|
CArchTextLibListBox(int iFlag = 0);
|
|
virtual ~CArchTextLibListBox();
|
|
public:
|
|
virtual void PreSubclassWindow();
|
|
// virtual void Dropped(int nSrcIndex,CPoint pt);
|
|
void DoDeleteItem();//删除当前条目
|
|
void DoInsertItem();//插入新条目
|
|
void DoAppendItem();//添加新条目
|
|
void DoModifyItem();//修改当前条目
|
|
BOOL GetModify();//得到该控件是否可修改
|
|
void SetModify(BOOL bModified = TRUE);//设置该控件是否可修改
|
|
void SetExtendData(CListBoxItemData *&pItemData);//此函数已弃用
|
|
int SetCurSel(int nSelect);//设置当前选项
|
|
void SetXMLDoc(CXMLDOMFile*pXMLDoc);//设置xml文档指针
|
|
void CreateEdit();//创建新编辑框
|
|
CString CreateNewName();//创建词条
|
|
int AddStringEx(LPCTSTR lpszItem,CXMLNodeInfo *pData);//添加新条目 有扩展数据
|
|
int DeleteStringEx(UINT nIndex);//删除条目及扩展数据
|
|
int InsertStringEx(int nIndex,CXMLNodeInfo *pData);//插入条目及扩展数据
|
|
void ReSetContentEx()//删除所有条目及扩展数据
|
|
{
|
|
for(long i=0;i<this->GetCount();i++)
|
|
{
|
|
CXMLNodeInfo *pData = (CXMLNodeInfo*)GetItemData(i);
|
|
if (pData)
|
|
{
|
|
delete pData;
|
|
}
|
|
}
|
|
ResetContent();
|
|
}
|
|
protected:
|
|
int m_iFlag;
|
|
BOOL m_bModified;//是否循序修改
|
|
CXMLDOMFile* m_pXMLDoc;//xml文档指针
|
|
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);//快捷键
|
|
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);//右键菜单
|
|
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);//左键拖拽
|
|
afx_msg void OnMenuCommand(UINT id);//菜单命令
|
|
virtual BOOL OnChildNotify(UINT, WPARAM, LPARAM, LRESULT*);
|
|
DECLARE_MESSAGE_MAP()
|
|
};
|
|
///////////////////////////////////////////////////////////////////////
|
|
///////词库tree
|
|
class CArchTextLibTreeCtrl : public CTreeCtrl
|
|
{
|
|
public:
|
|
CArchTextLibTreeCtrl();
|
|
CArchTextLibTreeCtrl(CXMLDOMFile*pXMLDoc);
|
|
//插入新节点及扩展数据
|
|
HTREEITEM InsertItemEx(CXMLNodeInfo *pNodeInfo, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST);
|
|
//删除新节点及扩展数据
|
|
void DeleteItemEx(HTREEITEM hItem);
|
|
//删除指定节点的子节点及其扩展数据
|
|
void DeleteChildItemEx(HTREEITEM hItem);
|
|
virtual BOOL PreTranslateMessage(MSG* pMsg);
|
|
//展开所有节点
|
|
void ExpandAll();
|
|
//收拢所有节点
|
|
void CollapseAll();
|
|
//设置xml文档指针
|
|
void SetXMLDoc(CXMLDOMFile*pXMLDoc);
|
|
//删除所有节点扩展数据
|
|
void DeleteAllItemData(HTREEITEM hItem = TVI_ROOT);
|
|
protected:
|
|
//复制节点
|
|
HTREEITEM CopyItem(HTREEITEM hItem, HTREEITEM htiNewParent, HTREEITEM htiAfter);
|
|
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);//右键菜单
|
|
afx_msg void OnDestroy(){DeleteAllItemData();CTreeCtrl::OnDestroy();}//ok
|
|
afx_msg void OnMenuCommand(UINT id);//菜单命令
|
|
afx_msg void OnTvnEndlabeledit(NMHDR *pNMHDR, LRESULT *pResult);//节点名字修改
|
|
afx_msg void OnTvnBeginlabeledit(NMHDR *pNMHDR, LRESULT *pResult);//节点名字修改
|
|
afx_msg void OnTvnBegindrag(NMHDR *pNMHDR, LRESULT *pResult);//拖拽节点
|
|
// Zyu modify on 100726,支持64位
|
|
//afx_msg void OnTimer(UINT nIDEvent);//定时器
|
|
afx_msg void OnTimer(UINT_PTR nIDEvent);//定时器
|
|
afx_msg void OnMouseMove(UINT nFlags, CPoint point);//鼠标移动
|
|
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);//拖拽节点起始
|
|
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);//拖拽节点终止
|
|
DECLARE_MESSAGE_MAP()
|
|
void DoAddChildCollect();//添加子节点
|
|
void DoDeLeteItem();//删除节点
|
|
void DoAddLemma();// 添加条目
|
|
void DoReNameNode();//重命名
|
|
void DoCollapseCollect();//收拢节点
|
|
void DoExpandCollect();//展开节点
|
|
void DoExpandWorks();//展开整个词库
|
|
void DoCollapseWorks();//收缩整个词库
|
|
int GetShowFlag( HTREEITEM hItem, CPoint pt );
|
|
void DrawTempLine(CPoint ptSta, CPoint ptEnd);
|
|
//根据节点成tree
|
|
void XmlNodeToTreeNode(HTREEITEM hParentItem,const CXMLDOMNodePtr &pXmlNode);
|
|
private:
|
|
BOOL m_bEdit;//条目是否可以编辑
|
|
UINT m_TimerTicks;
|
|
// Zyu modify on 100726,支持64位
|
|
//UINT m_nScrollTimerID;
|
|
UINT_PTR m_nScrollTimerID;
|
|
CPoint m_HoverPoint;
|
|
// Zyu modify on 100726,支持64位
|
|
//UINT m_nHoverTimerID;
|
|
UINT_PTR m_nHoverTimerID;
|
|
DWORD m_dwDragStart;
|
|
BOOL m_bDragging;
|
|
CImageList* m_pDragImage;
|
|
HTREEITEM m_hItemDragS;
|
|
HTREEITEM m_hItemDragD;
|
|
int m_nShowFlag;
|
|
CPoint m_ptSta;
|
|
CPoint m_ptEnd;
|
|
BOOL m_bRub;
|
|
CXMLDOMFile* m_pXMLDoc;//xml文档指针
|
|
|
|
};
|
|
//////////////////////////////////////////////////////////////
|
|
// CInsTextDlg 对话框
|
|
|
|
class CInsTextDlg : public CModelessDialog
|
|
{
|
|
DECLARE_DYNAMIC(CInsTextDlg)
|
|
|
|
public:
|
|
CInsTextDlg(CWnd* pParent = NULL); // 标准构造函数
|
|
CInsTextDlg(UINT IDD, CWnd* pParent = NULL);
|
|
virtual ~CInsTextDlg();
|
|
// 对话框数据
|
|
enum { IDD = IDD_ARCHTEXT };
|
|
CArchTextLibTreeCtrl m_treeNames;//词库的类型树
|
|
CImageList m_imageList;//树的图片
|
|
CArchTextLibListBox m_dragNames;//未经排序的对应树中节点下数据的检索名
|
|
CArchTextLibListBox m_sortNames;//经排序的对应树中节点下数据的检索名
|
|
CToolBar m_toolBar;//工具条
|
|
CButton m_buttonAdd;//文件入库按钮
|
|
CButton m_buttonInput;//文件添加
|
|
CButton m_buttonFile;//导入文件按钮
|
|
CEdit m_editSearch;//文本框
|
|
BOOL m_bEditChanged;//文本框内容是否发生变化
|
|
////////////////////
|
|
//把显示文字设为单行
|
|
void SetSingleText(BOOL bSingle = TRUE){m_bSingleLineText = bSingle;}
|
|
BOOL IsSingleText(){return m_bSingleLineText;}//文字是否单行显示
|
|
CNameString* CreateNameString();//创建一个字条
|
|
void AddToLast();//添加到最近使用框中
|
|
void SetPreText(CString &szText);
|
|
void SetEditText(CString& szText);
|
|
CString GetEditText();
|
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
|
|
virtual BOOL OnInitDialog();//初始化对话框
|
|
afx_msg void OnLbnSelchangeName();//list选项更改时消息函数
|
|
afx_msg void OnEnChangeEditSearch();//编辑框更改消息函数
|
|
afx_msg void OnLbnDblclkListName();//双击list消息函数
|
|
afx_msg void OnSelectLetter(UINT nID);//工具条选择字母消息函数
|
|
afx_msg void OnBnClickedAddtolib();//入库按钮消息函数
|
|
afx_msg void OnBnClickedInputtolib();
|
|
afx_msg void OnBnClickedBtnInlib();
|
|
afx_msg void OnLbnSelchangeDragType();//此函数已失效
|
|
afx_msg void OnDestroy();
|
|
afx_msg void OnClose();
|
|
afx_msg void OnSize(UINT nType,int cx,int cy);
|
|
afx_msg void OnTvnSelchangedTree(NMHDR *pNMHDR, LRESULT *pResult);//树更改消息函数
|
|
afx_msg LRESULT OnNewLine(WPARAM w,LPARAM l);//创建新list项自消息函数
|
|
afx_msg LRESULT OnInSertLine(WPARAM w,LPARAM l);//插入新list项自消息函数
|
|
afx_msg LRESULT OnReNameLine(WPARAM w,LPARAM l);//重命名list项自消息函数
|
|
afx_msg LRESULT OnDeleteLine(WPARAM w,LPARAM l);//删除list项自消息函数
|
|
#if ADS<17
|
|
afx_msg UINT OnNcHitTest(CPoint point);
|
|
#else
|
|
afx_msg LRESULT OnNcHitTest(CPoint point);
|
|
#endif
|
|
protected:
|
|
CXMLDOMFile* m_pXMlDoc;//文档指针 在该对话框构造时打开 析构时关闭
|
|
BOOL m_bSort;//是否排序
|
|
BOOL m_bEdit;//是否可以编辑文本
|
|
HTREEITEM m_hLastItem;//最近点击的tree节点
|
|
void InitToolBar();//初始化工具条
|
|
void InitList();//初始化列表
|
|
void DeleteTree();//删除树
|
|
void InitTree();//初始化树
|
|
void SetNamesModify();////设置显示的列表框
|
|
void AddNamesByType(CArchTextLibListBox &listBox);//向列表框中添加数据
|
|
void ChangeListBox(BOOL bIsSort);////设置显示的列表框
|
|
void UpdateButton();//更新显示的按钮
|
|
BOOL ReadStoreData();//此函数已失效
|
|
BOOL WriteStoreData();//此函数已失效
|
|
//深度遍历tree
|
|
void GetXmlNodesValue(CArchTextLibListBox &listBox,const CXMLDOMNodePtr &pXmlNode,BOOL bAll,BOOL bSort);
|
|
void XmlNodeToTreeNode(HTREEITEM hParentItem,const CXMLDOMNodePtr &pXmlNode);
|
|
void DoDeleteItem();//删除列表条目
|
|
void DoInsertItem();//插入列表条目
|
|
void DoAppendItem();//添加列表条目
|
|
void DoModifyItem();//修改列表条目
|
|
//广度遍历tree形成界面tree
|
|
void BreadthXmlNodeToTreeNode(const CXMLDOMNodePtr &pXmlNode);
|
|
//广度遍历tree形成界面listbox
|
|
void BreadGetXmlNodesValve(CArchTextLibListBox &listBox,const CXMLDOMNodePtr &pXmlNode);
|
|
//深度遍历形成界面listbox
|
|
// void DeepGetXmlNodesValve(CArchTextLibListBox &listBox,const CXMLDOMNodePtr &pXmlNode);
|
|
// void AnalyseXmlTree(const MSXML2::IXMLDOMNodeListPtr& pXMLDOMNodeList, CArchTextLibListBox &listBox);
|
|
// void InsertIntoLst(const MSXML2::IXMLDOMNodePtr &pXmlNode,CArchTextLibListBox &listBox);
|
|
//得到xml节点tag名字
|
|
CString GetXMLNodeName(const MSXML2::IXMLDOMNodePtr &pIXMLDOMNodePtr);
|
|
//得到xml节点属性名字
|
|
// CString GetXMLNodeAttributeName(const MSXML2::IXMLDOMNodePtr &pIXMLDOMNodePtr);
|
|
//得到xml节点属性值
|
|
CString GetXMLNodeAttributeValue(const MSXML2::IXMLDOMNodePtr &pIXMLDOMNodePtr,const CString strNodeAttriName);
|
|
//得到xml节点值(仅对叶子节点)
|
|
// CString GetXMLNodeValue(const MSXML2::IXMLDOMNodePtr &pIXMLDOMNodePtr);
|
|
//是否有子节点
|
|
BOOL IsHasChildNodes(const MSXML2::IXMLDOMNodePtr &pIXMLDOMNodePtr);
|
|
//非递归深度遍历xmltree形成listbox
|
|
// void Test(const CXMLDOMNodePtr &pXmlNode,CArchTextLibListBox &listBox);
|
|
//设置字符串在界面回车(即加\n\r)
|
|
CString SetStrReturn(const CString &strText);
|
|
//删除字符串在界面回车(即加\n\r)
|
|
CString DelStrReturn(const CString &strText);
|
|
DECLARE_MESSAGE_MAP()
|
|
private:
|
|
BOOL m_bSingleLineText;//是否为单行文字
|
|
};
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
////////////抽象出来的dbf格式文档数据////////////////////
|
|
class WordLibDbfInfo
|
|
{
|
|
public:
|
|
WordLibDbfInfo()
|
|
{
|
|
m_strAttrivalue = _T("");
|
|
m_strvalue = _T("");
|
|
}
|
|
WordLibDbfInfo(const WordLibDbfInfo&data)
|
|
{
|
|
m_strvalue = data.m_strvalue;
|
|
m_strAttrivalue = data.m_strAttrivalue;
|
|
}
|
|
WordLibDbfInfo&operator=(const WordLibDbfInfo&data)
|
|
{
|
|
m_strvalue = data.m_strvalue;
|
|
m_strAttrivalue = data.m_strAttrivalue;
|
|
return *this;
|
|
}
|
|
public:
|
|
CString m_strAttrivalue;//dbf文档中的 type 或 name项
|
|
CString m_strvalue;//每行中的所有content
|
|
};
|
|
//存储dbf信息的数组
|
|
typedef Array<WordLibDbfInfo> DBFArray;
|
|
//根据dbf文档中的type项做键值 形成的 map
|
|
typedef std::map<CString,DBFArray> TARCHWORDLIBDBFMAP;
|
|
//存储xml文档节点信息的数组
|
|
typedef Array<CXMLNodeInfo> XMLNodeInfoArray;
|
|
// CArchTextLibDlg 对话框
|
|
class CArchTextLibDlg : public CInsTextDlg
|
|
{
|
|
DECLARE_DYNAMIC(CArchTextLibDlg)
|
|
|
|
public:
|
|
CArchTextLibDlg(CWnd* pParent = NULL); // 标准构造函数
|
|
virtual ~CArchTextLibDlg();
|
|
|
|
// 对话框数据
|
|
enum { IDD = IDD_ARCHTEXTLIB };
|
|
CComboBox m_comboStyle;
|
|
int m_iAlign;
|
|
|
|
// modify by xly on 101222 支持记录字高
|
|
//CString m_csHeight;
|
|
static CString m_csHeight;
|
|
|
|
// modify by xly on 101014 支持记录文字样式
|
|
//CString m_csTextStyle;
|
|
static CString m_csTextStyle;
|
|
int m_iRunMode;
|
|
void SetTextStyle(const TCHAR* szStyle);
|
|
protected:
|
|
BOOL m_bInDialog;
|
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
|
|
virtual BOOL OnInitDialog();
|
|
afx_msg void OnLbnDblclkDragName();
|
|
afx_msg void OnBnClickedButtonFile();//导入数据按钮消息函数
|
|
afx_msg void OnExport();//导出数据
|
|
afx_msg void OnButtonReplace();//替换按钮消息函数
|
|
afx_msg void OnButtonPick();//提取cad图中数据函数
|
|
afx_msg void OnClose();
|
|
// Zyu modify on 100726,支持64位
|
|
//afx_msg void OnTimer(UINT nIDEvent);
|
|
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
|
DECLARE_MESSAGE_MAP()
|
|
//读取txt数据
|
|
void ReadTxt(HTREEITEM hItem,const CString &strPath,CXMLDOMNodePtr&pXMLDOMNodePtr);
|
|
//读取xml数据
|
|
void ReadXml(HTREEITEM hItem,const CString &strPath,CXMLDOMNodePtr&pXMLDOMNodePtr);
|
|
//读取dbf数据
|
|
void ReadDbf(HTREEITEM hItem,const CString &strPath,CXMLDOMNodePtr&pXMLDOMNodePtr);
|
|
//把xml中指定节点下的词条数据导出txt
|
|
void ExportTxt(CStdioFile &file,const CXMLDOMNodePtr &pXmlNode);
|
|
//创建新的xml并把原xml文档指定节点下的所有数据导入新建的xml中
|
|
BOOL BuildDynamicXMLwithProcessingInstruction(CString&strPath);
|
|
public:
|
|
};
|
|
|
|
////////////////////////////////////////////////////
|
|
// TTextEdJig
|
|
class TTextEdJig : public TSymbEdJig {
|
|
protected:
|
|
TDbText *m_pText;
|
|
AcDbText *m_pAcadText;
|
|
static XExplodeDraw::TextAlignment m_AlignList[];
|
|
|
|
public:
|
|
TTextEdJig(CArchTextLibDlg *dlg, XPoint pt);
|
|
TTextEdJig(BOOL bIsTg, XPoint pt, double nHeight, const TCHAR*szText, AcDbObjectId idStyle, double nRotation);
|
|
~TTextEdJig();
|
|
virtual int DoIt(int *pKeyIndex=NULL);
|
|
DragStatus GetPoint(XPoint &pt);
|
|
CArchTextLibDlg *m_pDlg;
|
|
BOOL m_bIsTgText;
|
|
XPoint m_ptRef;
|
|
AcGeMatrix3d m_AcadTextMat;
|
|
AcDbObjectId m_idStyle;
|
|
void SetWHScale(double nWHScale);
|
|
void SetAlign(AcDb::TextVertMode vertMode, AcDb::TextHorzMode horzMode, AcGeMatrix3d mat);
|
|
void SetAlign(XExplodeDraw::TextAlignment Align);
|
|
protected:
|
|
virtual Adesk::Boolean update();
|
|
virtual AcDbEntity* entity() const;
|
|
};
|
|
///////////////////////////////////////////////////////////////////
|
|
//TMTextJig
|
|
class TMTextEdJig : public TSymbEdJig{
|
|
public:
|
|
TMTextEdJig(CArchTextLibDlg *dlg, XPoint pt);
|
|
TMTextEdJig(BOOL bIsTg, XPoint pt, double nHeight, const TCHAR*szText,
|
|
AcDbObjectId idStyle, double nRotation);
|
|
~TMTextEdJig();
|
|
virtual int DoIt(int *pKeyIndex=NULL);
|
|
DragStatus GetPoint(XPoint &pt);
|
|
CArchTextLibDlg *m_pDlg;
|
|
BOOL m_bIsTgText;
|
|
BOOL m_bSet;
|
|
XPoint m_ptRef;
|
|
AcGeMatrix3d m_AcadTextMat;
|
|
AcDbObjectId m_idStyle;
|
|
double m_dWidth;
|
|
CString m_strLast;//上一次的 jig中显示的文字
|
|
void SetWHScale(double nWHScale);
|
|
void SetAlign(AcDb::TextVertMode vertMode, AcDb::TextHorzMode horzMode, AcGeMatrix3d mat);
|
|
void SetAlign(XExplodeDraw::TextAlignment Align);
|
|
// Acad::ErrorStatus GetExtents2d(TDbEntity*pent,XPoint &ptLow, XPoint &ptUp);
|
|
// double GetMTextPageWidth();
|
|
protected:
|
|
virtual Adesk::Boolean update();
|
|
virtual AcDbEntity* entity() const;
|
|
protected:
|
|
TDbMText *m_pMText;
|
|
AcDbMText *m_pAcadMText;
|
|
// TDbText *m_pText;
|
|
// AcDbText *m_pAcadText;
|
|
// BOOL m_bMText;
|
|
static XExplodeDraw::TextAlignment m_AlignList[];
|
|
private:
|
|
};
|
|
|
|
bool GetSpecialChar(CWnd*pParent,CString &res);
|
|
bool GetWordFromLib(CWnd*pParent,CString &res);
|
|
//{{AFX_INSERT_LOCATION}}
|
|
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
|
///////////////////////////////////////////
|
|
class CChineseCode
|
|
{
|
|
public:
|
|
static void UTF_8ToUnicode(wchar_t* pOut,char *pText); // 把UTF-8转换成Unicode
|
|
static void UnicodeToUTF_8(char* pOut,wchar_t* pText); //Unicode 转换成UTF-8
|
|
static void UnicodeToGB2312(char* pOut,wchar_t uData); // 把Unicode 转换成 GB2312
|
|
static void Gb2312ToUnicode(wchar_t* pOut,char *gbBuffer);// GB2312 转换成 Unicode
|
|
static void GB2312ToUTF_8(CString& pOut,char *pText, int pLen);//GB2312 转为 UTF-8
|
|
static void UTF_8ToGB2312(CString &pOut, char *pText, int pLen);//UTF-8 转为 GB2312
|
|
};
|
|
#endif // !defined(AFX_INSTEXTDLG_H__FA6B9462_8FCD_432C_9C0E_3663CF9EC4F1__INCLUDED_)
|