




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 建立工程 推荐使用英文版的VC+6.0!(1) 在E:盘建立Work文件夹(2) 启动VC+6.0,选择MFC AppWizardexe,Project name取名RegExDemo点击确定按钮(3) 出现如下界面,选择基本对话框,点击下一步;(4) 出现如下界面,不做变化,点击下一步(5) 出现如下界面,选择类:CRegExDemoDlg,然后点击完成(6)出现如下界面,点击确定2 拷贝文件并添加到工程中(1)把下面两对文件拷贝到新建工程文件夹E:WorkRegExDemo内:AG_FindDialog.cpp,AG_FindDialog.hAG_RegEx.cpp,AG_RegEx.
2、h(2) 选择工程菜单下增加到工程子菜单的文件选项,如下图所示弹出下面子窗口:(3)在子窗口中选中刚才拷贝的那两对文件,点击确定,添加到工程中去。此时窗口左列中显示出来了所有被添加进去的文件,如下图所示:3 关于RegExDemo.cpp文件打开RegExDemo.cpp文件,在BOOL CRegExDemoApp:InitInstance()函数中找到下面代码位置,加入下面加黄色标记的内容:#elseEnable3dControlsStatic();/ Call this when linking to MFC statically#endif AfxInitRichEdit();CRegE
3、xDemoDlg dlg;m_pMainWnd = &dlg;int nResponse = dlg.DoModal();if (nResponse = IDOK)4 RegExDemoDlg.h的处理:(1)首先打开RegExDemoDlg.h文件,在头部加入下面的语句:#include "AG_FindDialog.h"#include "AG_RegEx.h",见黄色标记所示。/ RegExDemoDlg.h : header file/#if !defined(AFX_REGEXDEMODLG_H_47C1F8FA_0712_4476_A
4、BB1_712EA6E62374_INCLUDED_)#define AFX_REGEXDEMODLG_H_47C1F8FA_0712_4476_ABB1_712EA6E62374_INCLUDED_#if _MSC_VER > 1000#pragma once#endif / _MSC_VER > 1000/ CRegExDemoDlg dialog#include "AG_FindDialog.h"#include "AG_RegEx.h"以下代码略。(2)点击ResourceView,右键单击其中的RegExDemo resource,
5、在弹出的对话框中选择插入,在后面弹出的对话框中选择MENU,然后选择新建,如图所示然后右键单击IDR_MENU1,选择属性,如下图:将其ID修改为: IDR_MAIN_MENU,如图:(3)点击ResourceView中的Menu下面的IDR_MAIN_MENU,出来如下窗口:在虚线框处(红色框标注的地方)右键单击,选择属性,如图所示在弹出的对话框的“标明”中填入File,同时原来的窗口中也会出现File,如下图红圈所示:用同样的方法,为其添加Edit和Help(4)在File的下拉菜单中单击右键,选择属性,为其添加Open(打开文件)选项,其ID为ID_FILE_OPEN,标明为Open:(
6、5)接下来,用同样的方法,为File添加Exit选项,ID :ID_FILE_EXIT,标明:Exit;为Edit添加Find选项,ID:ID_EDIT_FIND,标明:Find,添加TestMenu选项,ID:ID_EDIT_TESTMENU,标明:TestMenu;为Help添加About选项,ID:ID_HELP_ABOUT,标明:About。(6)在ResourceView下的Dialog单击鼠标右键,选择插入Dialog,如图:在新建的Dialog中,将其ID改为IDD_FIND_DIALOG,将其两个按钮进行分别修改为Find Next,ID为IDC_FIND_NEXT,标明Fin
7、d Next和Close,ID为IDC_CLOSE_BUTTON,标明Close。然后利用控件工具中的编辑框控件做一个编辑框,其ID为IDC_REG_EX_EDIT,得到如下结果:鼠标左键双击IDD_ABOUTBOX可以对程序帮助的相关内容作修改(7)鼠标左键双击IDD_REGEXDEMO_DIALOG,对这个对话框作修改,删除对话框中的所有控件,然后添加控件中的Rich Edit,不要修改其ID在其属性的样式中做如下选择:(8)至此,所有的对话框都已经完成,下面逐步实现其功能。在查看中选择建立类向导,在弹出的对话框中,选择Select an existing class,点击OK:然后选择C
8、RegExDemoDlg,点击Select;在弹出的对话框中,为ID_EDIT_FIND添加功能,在Messages中选择COMMOND,然后点击Add Function,在弹出的对话框中选择OK(9)同样的,为ID_EDIT_TESTMENU,ID_FILE_EXIT,ID_FILE_OPEN,ID_HELP_ABOUT添加COMMOND功能,为IDC_RICHEDIT1添加NM_CLICK功能。最后点击确定。(10)对于IDC_RICHEDIT1,还需要做以下定义:最后点击确定。5、RegExDemoDlg.cpp文件的处理:在RegExDemoDlg.cpp程序添加:void CRegE
9、xDemoDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CRegExDemoDlg)DDX_Control(pDX, IDC_RICHEDIT1, m_rich_edit);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CRegExDemoDlg, CDialog)/AFX_MSG_MAP(CRegExDemoDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_COMMAND(ID_EDIT_FIND
10、, OnEditFind)ON_COMMAND(ID_EDIT_TESTMENU, OnEditTestmenu)ON_COMMAND(ID_FILE_EXIT, OnFileExit)ON_COMMAND(ID_FILE_OPEN, OnFileOpen)ON_COMMAND(ID_HELP_ABOUT, OnHelpAbout) ON_MESSAGE(WM_FIND_NEXT, OnFindNext)ON_NOTIFY(NM_CLICK, IDC_RICHEDIT1, OnClickRichedit1)/AFX_MSG_MAPEND_MESSAGE_MAP()在BOOL CRegExDem
11、oDlg:OnInitDialog()下添加/ TODO: Add extra initialization here/ Create main menuif(m_MainMenu.LoadMenu(IDR_MAIN_MENU)SetMenu(&m_MainMenu);else AfxMessageBox(_T("Could not create main menu.");/ Create Find Dialogm_FindDialog.Create(IDD_FIND_DIALOG, this);m_FindDialog.ShowWindow(SW_HIDE);/
12、Set Font to be courier newLOGFONT lf;memset(&lf, 0, sizeof(LOGFONT);/ zero out structurelf.lfHeight = 14;/ request a 12-pixel-height fontstrcpy(lf.lfFaceName, "Courier New");/ request a face name "Arial"m_Font.CreateFontIndirect(&lf);/ create the fontm_rich_edit.SetFont(&
13、amp;m_Font);return TRUE; / return TRUE unless you set the focus to a controlvoid CRegExDemoDlg:OnEditFind() / TODO: Add your command handler code herem_FindDialog.ShowWindow(SW_SHOW);LRESULT CRegExDemoDlg:OnFindNext(WPARAM wParam, LPARAM lParam)static CString strRegEx = _T("");/ return val
14、uesint nPos;string strPattern;/ get the regular expressionCString strRegExText;m_FindDialog.GetDlgItemText(IDC_REG_EX_EDIT, strRegExText);/ if regular expression was changed then parse itif(strRegExText.Compare(strRegEx) != 0)if(!m_RegEx.SetRegEx(string(strRegExText)AfxMessageBox(_T("Error pars
15、ing regular expression.");/ Save Tables for debuging purposesm_RegEx.SaveNFATable();m_RegEx.SaveDFATable();m_RegEx.SaveNFAGraph();m_RegEx.SaveDFAGraph();CString strTextToSearch;m_rich_edit.GetWindowText(strTextToSearch);/ now call m_RegEx.FindFirst(.);if(m_RegEx.FindFirst(string(strTextToSearch
16、), nPos, strPattern)int nStartPos = nPos;int nEndPos= nStartPos + strPattern.size();m_rich_edit.SetSel(nStartPos, nEndPos);m_rich_edit.HideSelection(FALSE, TRUE);strRegEx = strRegExText;return 0;else strRegEx = strRegExText;return -1;else/ Call find nextif(m_RegEx.FindNext(nPos, strPattern)int nStar
17、tPos = nPos;int nEndPos= nStartPos + strPattern.size();m_rich_edit.SetSel(nStartPos, nEndPos);m_rich_edit.HideSelection(FALSE, TRUE);else return -1;return 0;void CRegExDemoDlg:OnEditTestmenu() / TODO: Add your command handler code herevoid CRegExDemoDlg:OnFileExit() / TODO: Add your command handler
18、code hereEndDialog(0); void CRegExDemoDlg:OnFileOpen() / TODO: Add your command handler code hereCFileDialog dlg(TRUE);if(dlg.DoModal() = IDOK)CFile f;if(f.Open(dlg.GetPathName(), CFile:modeRead | CFile:typeBinary)char *pBuff = new charf.GetLength()+1;if(f.Read(pBuff, f.GetLength() != f.GetLength()A
19、fxMessageBox(_T("Did not read complete file.");pBufff.GetLength() = 0;m_rich_edit.SetWindowText(pBuff);delete pBuff;f.Close();else AfxMessageBox(_T("Could not open file " + dlg.GetPathName();void CRegExDemoDlg:OnHelpAbout() / TODO: Add your command handler code hereCAboutDlg dlg;
20、dlg.DoModal();void CRegExDemoDlg:OnClickRichedit1(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code here *pResult = 0;6、RegExDemoDlg.h的处理public:CRegExDemoDlg(CWnd* pParent = NULL);/ standard constructor/ Dialog Data/AFX_DATA(CRegExDemoDlg)enum IDD = IDD_REGEXDEMO_DI
21、ALOG ;/ NOTE: the ClassWizard will add data members here/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CRegExDemoDlg)protected:virtual void DoDataExchange(CDataExchange* pDX);/ DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:HICON m_hIcon; / Main Menu CMenu m_MainMenu;/
22、 Find DialogCAG_FindDialog m_FindDialog;/ Regular Expression ParserCAG_RegEx m_RegEx;/ Rich Edit FontCFont m_Font;/ Generated message map functions/AFX_MSG(CRegExDemoDlg)virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnEditFind()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度新能源汽车物流安全合作协议
- 二零二五年度抵押汽车小额贷款合同样本
- 2025年度智能设备研发中心员工劳动合同
- 二零二五年度商铺租赁合同终止条件及赔偿细则协议
- 2025年度超市员工聘用合同及岗位责任制规范合同
- 2025年度电商平台春节促销活动合同
- 二零二五年度中式快餐店转让及品牌合作协议
- 二零二五年度食品加工技术研发与委托生产合同
- 发廊老板与员工二零二五年度职业技能培训合同
- 二零二五年度暗股投资新材料研发合作协议
- 安徽2025年安徽医科大学第一附属医院临床医技护理管理岗位招聘156人笔试历年参考题库附带答案详解
- 旅游景区股份合作开发协议书范本
- 《以哪吒精神照亮成长之路》开学家长会课件
- 2024年计算机二级WPS考试题库(共380题含答案)
- 《钢铁是怎样炼成的》读书分享课件
- 四年级数学(下)全册先学后教,当堂训练教案
- 最新修改 班组安全管理建设--5831模式通用课件
- 2018年柴油机大修工程量单
- 2022年“叶圣陶杯”全国中学生新作文大赛专用稿纸
- 法兰理论重量表正式版
- 汽车行业MSA测量系统分析(共98页).ppt
评论
0/150
提交评论