敏感词提示及管理,增删改,并保存至xml,使用tinyxml
2013-10-11 11:28
375 查看
// SenStivWrdDlg.cpp : implementation file // #include "stdafx.h" #include "SenStivWrd.h" #include "SenStivWrdDlg.h" #include "afxdialogex.h" #include "ModifyDlg.h" #include "AddDlg.h" #include "tinystr.h" #include "tinyxml.h" #include <xstring> #ifdef _DEBUG #define new DEBUG_NEW #endif // CAboutDlg dialog used for App About class CAboutDlg : public CDialogEx { public: CAboutDlg(); // Dialog Data enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support // Implementation protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CSenStivWrdDlg dialog CSenStivWrdDlg::CSenStivWrdDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CSenStivWrdDlg::IDD, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CSenStivWrdDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_RICHEDIT21, m_RichEditCtrl); DDX_Control(pDX, IDC_LIST1, m_ListCtrl); } BEGIN_MESSAGE_MAP(CSenStivWrdDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDSEND, &CSenStivWrdDlg::OnBnClickedSend) ON_BN_CLICKED(IDC_ADD, &CSenStivWrdDlg::OnBnClickedAdd) ON_BN_CLICKED(IDC_MODIF, &CSenStivWrdDlg::OnBnClickedModif) ON_BN_CLICKED(IDC_DEL, &CSenStivWrdDlg::OnBnClickedDel) ON_BN_CLICKED(IDC_S***E, &CSenStivWrdDlg::OnBnClickedSave) END_MESSAGE_MAP() // CSenStivWrdDlg message handlers BOOL CSenStivWrdDlg::OnInitDialog() { CDialogEx::OnInitDialog(); flag = 0; // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control } void CSenStivWrdDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialogEx::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CSenStivWrdDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialogEx::OnPaint(); } } // The system calls this function to obtain the cursor to display while the user drags // the minimized window. HCURSOR CSenStivWrdDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CSenStivWrdDlg::OnBnClickedSend() { // TODO: Add your control notification handler code here int nCont = m_ListCtrl.GetItemCount(); int index = 0; long n = 0; for(index = 0; index < nCont; index++) { CString str = m_ListCtrl.GetItemText(index, 0); FINDTEXTEX ft; ft.chrg.cpMin = 0; ft.chrg.cpMax = -1; ft.lpstrText = str; n = m_RichEditCtrl.FindText(FR_DOWN, &ft); // FR_DOWN从前往后、匹配大小写、整词|FR_MATCHCASE|FR_WHOLEWORD if (n != -1) { MessageBox(_T("您发送内容中含有关健敏感字!")); break; } } } // 增加敏感词 void CSenStivWrdDlg::OnBnClickedAdd() { // TODO: Add your control notification handler code here CAddDlg AddDlg; AddDlg.DoModal(); int Item = m_ListCtrl.InsertItem(flag, AddDlg.m_AddWrd); //MessageBox(m_ListCtrl.GetItemText(Item, 0)); //int index = m_ListCtrl.GetItemCount(); //m_ListCtrl.InsertItem(index, _T("File Name")); flag++; } // 更改敏感词 void CSenStivWrdDlg::OnBnClickedModif() { // TODO: Add your control notification handler code here int nIdx = m_ListCtrl.GetNextItem(-1, LVNI_SELECTED); // -1表示匹配的第一个项目 if (nIdx != -1) { CModifyDlg Dlg; // 弹出修改敏感词对话框 Dlg.DoModal(); m_ListCtrl.SetItemText(nIdx, 0, Dlg.m_Modifywrd); // 将item中的text改为修改敏感词对话框中的输入内容 } } // 删除敏感词 void CSenStivWrdDlg::OnBnClickedDel() { // TODO: Add your control notification handler code here int nIdx = m_ListCtrl.GetNextItem(-1, LVNI_SELECTED); // -1表示匹配的第一个项目 if (nIdx != -1) { m_ListCtrl.DeleteItem(nIdx); } } // 保存关键词到xml文件 void CSenStivWrdDlg::OnBnClickedSave() { // TODO: Add your control notification handler code here TiXmlDocument* pDoc = new TiXmlDocument; //定义一个TiXmlDocument类指针 TiXmlElement *pRootEle = new TiXmlElement("SensitiveWord"); // 生成根节点指针做参数 pDoc->LinkEndChild(pRootEle); int nCont = m_ListCtrl.GetItemCount(); int index = 0; long n = 0; for(index = 0; index < nCont; index++) { //TiXmlElement *pEle = new TiXmlElement("StvWrd"); CString str = m_ListCtrl.GetItemText(index, 0); // 得到listctrl上的敏感词 // CString转换为const char* int nTextLen = WideCharToMultiByte (CP_UTF8, 0, str, -1, NULL, 0, NULL, NULL); char* pElementText = new char[nTextLen + 1]; memset((void*)pElementText, 0, sizeof(char)*(nTextLen + 1)); WideCharToMultiByte( CP_UTF8,0, str, -1, pElementText, nTextLen, NULL, NULL ); // 宽字节转换为多字节 TiXmlElement *pEle = new TiXmlElement(pElementText); // 将敏感词作为各个节点名称保存到xml文件 //pEle->SetAttribute("Value", pElementText); // 敏感词作为节点Value属性值 pRootEle->LinkEndChild(pEle); } pDoc->SaveFile("1.xml"); }
相关文章推荐
- CTreeCtrl保存成XML 从XML中加载项的辅助类(使用tinyxml)
- 解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
- 系统管理系列--01BE备份系统提示“无法使用其指定的登录账户登录服务器”
- 安装sql sever 2008 r2时,提示“必须使用“角色管理工具”安装或配置microsoft.net framework3.5”
- Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 1 -使用FOR XML返回XML结果集
- 使用ASIHTTPRequest 编译提示找不到"libxml/HTMLparser.h"的解决方法
- 使用ASIHTTPRequest 编译提示找不到"libxml/HTMLparser.h"的解决方法
- 使用dom4j框架,创建xml文档并输出保存
- 在编写xsd文件时,不能使用xml注释,否则会导致NetBeans没有代码提示功能
- 放弃redis使用mongodb做任务队列支持增删改管理 推荐
- xml文件使用浏览器打开,提示"This page contains the following errors"解决办法
- C++文本查询程序 不要定义类和智能指针管理数据 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果
- SQL Server2008 SP1安装提示报错,.必须使用"角色管理工具"安装或配置Microsoft.net.framework 3.5 sp1
- android xml布局文件中使用RelativeLayout,明明有这个id,却提示找不到---->解决办法
- Cocos2dx---------------- TinyXml 解析 XML(推荐使用rapidxml)
- java使用poi或者jxl实现excel导出之后如何弹出保存提示框
- Visual C# 中智能提示(XML注释)的使用(含注释在开发时显示换行)
- tomcat 中的 tomcat-users.xml 配置不生效原因 + tomcat8以上管理页面提示403问题解决方案
- 使用TinyXML进行xml文件解析,生成xml文件
- Cocos2dx---------------- TinyXml 解析 XML(推荐使用rapidxml)