TestSegExDlg.cpp
资源名称:11111111.rar [点击查看]
上传用户:fujunqh
上传日期:2021-05-10
资源大小:7090k
文件大小:23k
源码类别:
多国语言处理
开发平台:
Visual C++
- // TestSegExDlg.cpp : implementation file
- //
- #include "stdafx.h"
- #include "TestSegEx.h"
- #include "TestSegExDlg.h"
- #include "WaitDlgmy.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CAboutDlg dialog used for App About
- class CAboutDlg : public CDialog
- {
- public:
- CAboutDlg();
- // Dialog Data
- //{{AFX_DATA(CAboutDlg)
- enum { IDD = IDD_ABOUTBOX };
- //}}AFX_DATA
- // ClassWizard generated virtual function overrides
- //{{AFX_VIRTUAL(CAboutDlg)
- protected:
- virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
- //}}AFX_VIRTUAL
- // Implementation
- protected:
- //{{AFX_MSG(CAboutDlg)
- afx_msg void OnStaticAboutpic();
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
- CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
- {
- //{{AFX_DATA_INIT(CAboutDlg)
- //}}AFX_DATA_INIT
- }
- void CAboutDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CAboutDlg)
- //}}AFX_DATA_MAP
- }
- BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
- //{{AFX_MSG_MAP(CAboutDlg)
- ON_BN_CLICKED(IDC_STATIC_ABOUTPIC, OnStaticAboutpic)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CTestSegExDlg dialog
- CTestSegExDlg::CTestSegExDlg(CWnd* pParent /*=NULL*/)
- : CDialog(CTestSegExDlg::IDD, pParent)
- {
- //{{AFX_DATA_INIT(CTestSegExDlg)
- m_strSource = _T("");
- m_strResult = _T("");
- m_bKeyWord = FALSE;
- m_bPos = FALSE;
- m_bSearch = FALSE;
- m_bFinger = FALSE;
- m_strFinger = _T("");
- m_strKey = _T("");
- //}}AFX_DATA_INIT
- // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
- m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
- }
- void CTestSegExDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CTestSegExDlg)
- DDX_Control(pDX, IDC_RICHEDIT_RESULT, m_cResult);
- DDX_Text(pDX, IDC_EDIT_SOURCE, m_strSource);
- DDX_Text(pDX, IDC_RICHEDIT_RESULT, m_strResult);
- DDX_Check(pDX, IDC_CHECK_IE, m_bKeyWord);
- DDX_Check(pDX, IDC_CHECK_POS, m_bPos);
- DDX_Check(pDX, IDC_CHECK_SEARCH, m_bSearch);
- DDX_Check(pDX, IDC_CHECK_UUI, m_bFinger);
- DDX_Text(pDX, IDC_STATIC_UUID, m_strFinger);
- DDX_Text(pDX, IDC_RICHEDIT_KEY, m_strKey);
- //}}AFX_DATA_MAP
- }
- BEGIN_MESSAGE_MAP(CTestSegExDlg, CDialog)
- //{{AFX_MSG_MAP(CTestSegExDlg)
- ON_WM_SYSCOMMAND()
- ON_WM_PAINT()
- ON_WM_QUERYDRAGICON()
- ON_BN_CLICKED(IDC_BTN_EXIT, OnBtnExit)
- ON_BN_CLICKED(IDC_BTN_SEGMENT, OnBtnSegment)
- ON_BN_CLICKED(IDC_BTN_CLEAR, OnBtnClear)
- ON_BN_CLICKED(IDC_BTN_LOAD_FILE, OnBtnLoadFile)
- ON_BN_CLICKED(IDC_BTN_MTEST, OnBtnMtest)
- ON_WM_CLOSE()
- ON_BN_CLICKED(IDC_BTN_ABOUT, OnBtnAbout)
- ON_BN_CLICKED(IDC_STATIC_PIC, OnStaticPic)
- ON_BN_CLICKED(IDC_BTN_OPEN_UDICT, OnBtnOpenUdict)
- ON_BN_CLICKED(IDC_BTN_CLOSEUDICT, OnBtnCloseudict)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CTestSegExDlg message handlers
- BOOL CTestSegExDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
- // 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)
- {
- CString strAboutMenu;
- strAboutMenu.LoadString(IDS_ABOUTBOX);
- 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
- ///初始化分词
- if(!HLSplitInit())
- {
- AfxMessageBox("分词初始化失败!");
- return FALSE ;
- }
- return TRUE; // return TRUE unless you set the focus to a control
- }
- void CTestSegExDlg::OnSysCommand(UINT nID, LPARAM lParam)
- {
- if ((nID & 0xFFF0) == IDM_ABOUTBOX)
- {
- CAboutDlg dlgAbout;
- dlgAbout.DoModal();
- }
- else
- {
- CDialog::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 CTestSegExDlg::OnPaint()
- {
- if (IsIconic())
- {
- CPaintDC dc(this); // device context for painting
- SendMessage(WM_ICONERASEBKGND, (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
- {
- CDialog::OnPaint();
- }
- }
- // The system calls this to obtain the cursor to display while the user drags
- // the minimized window.
- HCURSOR CTestSegExDlg::OnQueryDragIcon()
- {
- return (HCURSOR) m_hIcon;
- }
- //********************************************************************
- // 函 数 名: OnBtnExit
- // 作 者: lili
- // 日 期: 2005.4.20
- // 功能描述: 退出函数
- // 参数说明:
- // 返 回 值:
- // 负面影响: 无
- // 备 忘:
- // 已知限制: 无
- // 错 误 号: 无
- // 更新纪录:
- // 日 期 姓 名 描述
- // =========== ========= ========================================
- //********************************************************************
- void CTestSegExDlg::OnBtnExit()
- {
- // TODO: Add your control notification handler code here
- //卸载分词
- HLFreeSplit();
- CDialog::OnOK();
- }
- //********************************************************************
- // 函 数 名: OnBtnSegment
- // 作 者: lili
- // 日 期: 2005.4.20
- // 功能描述: 对输入框内的内容进行分词
- // 参数说明:
- // 返 回 值:
- // 负面影响: 无
- // 备 忘:
- // 已知限制: 无
- // 错 误 号: 无
- // 更新纪录:
- // 日 期 姓 名 描述
- // =========== ========= ========================================
- //********************************************************************
- void CTestSegExDlg::OnBtnSegment()
- {
- // TODO: Add your control notification handler code here
- UpdateData();
- m_strResult.Empty();
- m_strFinger.Empty();
- int nExtra = 0;
- m_strKey.Empty();
- //获得附加计算标识
- if(m_bPos)
- nExtra |= HL_CAL_OPT_POS ;
- if(m_bKeyWord)
- nExtra |= HL_CAL_OPT_KEYWORD ;
- if(m_bSearch)
- nExtra |= HL_CAL_OPT_SEARCH;
- if(m_bFinger)
- nExtra |= HL_CAL_OPT_FINGER ;
- ///打开分词句柄
- HANDLE hHandle = HLOpenSplit();
- if(hHandle == INVALID_HANDLE_VALUE)
- {
- AfxMessageBox("分词句柄打开失败!");
- return ;
- }
- DWORD dwStart = GetTickCount();
- HLSplitWord(hHandle,(LPCTSTR)m_strSource,nExtra);//进行分词
- DWORD dwEnd = GetTickCount();
- CString strMsg ;
- strMsg.Format("字节:%d 耗时:%dms",m_strSource.GetLength(),(dwEnd-dwStart));
- AfxMessageBox(strMsg);
- int nCnt = HLGetWordCnt(hHandle) ;//获得分词结果个数
- SHLSegWord* pWord = NULL ;
- for(int i = 0 ; i < nCnt ; i++)
- {//获得分词结果
- CString strWord;
- pWord = HLGetWordAt(hHandle,i);//获得指定的分词结果
- strWord = pWord->s_szWord ;
- if(m_bPos)//词性
- {//显示词性标准
- AddNatureString(strWord,pWord->s_dwPOS);
- }
- strWord += _T(" ");
- m_strResult += strWord ;
- }//for i
- if(m_bKeyWord)
- {//获取关键词
- int nKeyCnt = HLGetFileKeyCnt(hHandle) ;//获得关键词个数
- for(int j = 0 ; j < nKeyCnt ; j++)
- {
- SHLSegWord* pKey = HLGetFileKeyAt(hHandle,j);//获得指定的关键词
- if(!pKey)
- continue ;
- CString strKey ;
- strKey.Format("%d. %s %fn",j+1,pKey->s_szWord ,pKey->s_fWeight) ;
- m_strKey += strKey ;
- }//for j
- }
- if(m_bFinger)
- {//获取语义指纹
- LPBYTE pData ;
- unsigned long nDataLen ;
- m_strFinger += _T("语义指纹:");
- if(HLGetFingerM(hHandle,pData,nDataLen))//获得语义指纹
- {
- for(int j = 0 ; j < nDataLen ; j++)
- {
- CString strU ;
- strU.Format("%2.2x ",pData[j]);
- m_strFinger += strU ;
- }
- }//
- }
- HLCloseSplit(hHandle);//关闭分词句柄
- UpdateData(FALSE);
- }
- //********************************************************************
- // 函 数 名: OnBtnClear
- // 作 者: lili
- // 日 期: 2005.4.20
- // 功能描述: 清空界面显示
- // 参数说明:
- // 返 回 值:
- // 负面影响: 无
- // 备 忘:
- // 已知限制: 无
- // 错 误 号: 无
- // 更新纪录:
- // 日 期 姓 名 描述
- // =========== ========= ========================================
- //********************************************************************
- void CTestSegExDlg::OnBtnClear()
- {
- // TODO: Add your control notification handler code here
- m_strSource = _T("");
- m_strResult = _T("");
- m_cResult.SetWindowText("");
- m_bKeyWord = FALSE;
- m_bPos = FALSE;
- m_bSearch = FALSE;
- m_bFinger = FALSE;
- m_strFinger = _T("");
- m_strKey.Empty();
- UpdateData(FALSE);
- }
- //********************************************************************
- // 函 数 名: OnBtnLoadFile
- // 作 者: lili
- // 日 期: 2005.4.20
- // 功能描述: 装载文件
- // 参数说明:
- // 返 回 值:
- // 负面影响: 无
- // 备 忘:
- // 已知限制: 无
- // 错 误 号: 无
- // 更新纪录:
- // 日 期 姓 名 描述
- // =========== ========= ========================================
- //********************************************************************
- void CTestSegExDlg::OnBtnLoadFile()
- {
- // TODO: Add your control notification handler code here
- UpdateData();
- //选择文件
- CFileDialog cdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"文本文件(*.txt)|*.txt|All File(*.*)|*.*||",this);
- if(cdlg.DoModal()==IDOK)
- {
- CFile file ;
- CString strFile = cdlg.GetFileName();
- if(!file.Open(strFile,CFile::modeRead))//打开选择的文件
- {
- AfxMessageBox("文件打开失败!");
- return ;
- }
- int nLen = file.GetLength();//获得文件长度
- LPSTR lpTemp = m_strSource.GetBuffer(nLen+1);
- file.Read(lpTemp,nLen);//读取文件内容
- lpTemp[nLen] = _T(' ');
- m_strSource.ReleaseBuffer() ;
- UpdateData(FALSE);//显示在界面中
- }
- }
- //********************************************************************
- // 函 数 名: AddNatureString
- // 作 者: lili
- // 日 期: 2005.4.20
- // 功能描述: 根据词性标识标注词性
- // 参数说明: strWord [IN/OUT] 一个分词结果串
- // dwPos [IN] 词性标识
- // 返 回 值:
- // 负面影响: 无
- // 备 忘:
- // 已知限制: 无
- // 错 误 号: 无
- // 更新纪录:
- // 日 期 姓 名 描述
- // =========== ========= ========================================
- //********************************************************************
- void CTestSegExDlg::AddNatureString(CString &strWord, DWORD dwPos)
- {
- if((dwPos & NATURE_D_A) == NATURE_D_A)
- {
- strWord += _T("/a");//形容词
- }
- else if((dwPos & NATURE_D_B) == NATURE_D_B)
- {
- strWord += _T("/b");//区别词
- }
- else if((dwPos & NATURE_D_C) == NATURE_D_C)
- {
- strWord += _T("/c");//连词
- }
- else if((dwPos & NATURE_D_D) == NATURE_D_D)
- {
- strWord += _T("/d");//副词
- }
- else if((dwPos & NATURE_D_E) == NATURE_D_E)
- {
- strWord += _T("/e");//叹词
- }
- else if((dwPos & NATURE_D_F) == NATURE_D_F)
- {
- strWord += _T("/f");//方位词
- }
- else if((dwPos & NATURE_D_I) == NATURE_D_I)
- {
- strWord += _T("/i");//成语
- }
- else if((dwPos & NATURE_D_L) == NATURE_D_L)
- {
- strWord += _T("/l");//习语
- }
- else if((dwPos & NATURE_A_M) == NATURE_A_M)
- {
- strWord += _T("/m");//数词
- }
- else if((dwPos & NATURE_D_MQ) == NATURE_D_MQ)
- {
- strWord += _T("/mq");//数量词
- }
- else if((dwPos & NATURE_D_N) == NATURE_D_N)
- {
- strWord += _T("/n");//名词
- }
- else if((dwPos & NATURE_D_O) == NATURE_D_O)
- {
- strWord += _T("/o");//拟声词
- }
- else if((dwPos & NATURE_D_P) == NATURE_D_P)
- {
- strWord += _T("/p");//介词
- }
- else if((dwPos & NATURE_A_Q) == NATURE_A_Q)
- {
- strWord += _T("/q");//量词
- }
- else if((dwPos & NATURE_D_R) == NATURE_D_R)
- {
- strWord += _T("/r");//代词
- }
- else if((dwPos & NATURE_D_S) == NATURE_D_S)
- {
- strWord += _T("/s");//处所词
- }
- else if((dwPos & NATURE_D_T) == NATURE_D_T)
- {
- strWord += _T("/t");//时间词
- }
- else if((dwPos & NATURE_D_U) == NATURE_D_U)
- {
- strWord += _T("/u");//助词
- }
- else if((dwPos & NATURE_D_V) == NATURE_D_V)
- {
- strWord += _T("/v");//动词
- }
- else if((dwPos & NATURE_D_W) == NATURE_D_W)
- {
- strWord += _T("/w");//标点符号
- }
- else if((dwPos & NATURE_D_X) == NATURE_D_X)
- {
- strWord += _T("/x");//非语素字
- }
- else if((dwPos & NATURE_D_Y) == NATURE_D_Y)
- {
- strWord += _T("/y");//语气词
- }
- else if((dwPos & NATURE_D_Z) == NATURE_D_Z)
- {
- strWord += _T("/z");//状态词
- }
- else if((dwPos & NATURE_A_NR) == NATURE_A_NR)
- {
- strWord += _T("/nr");//人名
- }
- else if((dwPos & NATURE_A_NS) == NATURE_A_NS)
- {
- strWord += _T("/ns");//地名
- }
- else if((dwPos & NATURE_A_NT) == NATURE_A_NT)
- {
- strWord += _T("/nt");//机构团体
- }
- else if((dwPos & NATURE_A_NX) == NATURE_A_NX)
- {
- strWord += _T("/nx");//外文字符
- }
- else if((dwPos & NATURE_A_NZ) == NATURE_A_NZ)
- {
- strWord += _T("/nz");//其他专名
- }
- else if((dwPos & NATURE_D_H) == NATURE_D_H)
- {
- strWord += _T("/h");//前接成分
- }
- else if((dwPos & NATURE_D_K) == NATURE_D_K)
- {
- strWord += _T("/k");//后接成分
- }
- else
- {
- strWord += _T("/?");//未知词性
- }
- }
- //********************************************************************
- // 函 数 名: OnBtnMtest
- // 作 者: lili
- // 日 期: 2005.4.20
- // 功能描述: 批量处理
- // 参数说明:
- // 返 回 值:
- // 负面影响: 无
- // 备 忘:
- // 已知限制: 无
- // 错 误 号: 无
- // 更新纪录:
- // 日 期 姓 名 描述
- // =========== ========= ========================================
- //********************************************************************
- void CTestSegExDlg::OnBtnMtest()
- {
- // TODO: Add your control notification handler code here
- UpdateData();
- m_bstop = false ;
- m_bPause = FALSE ;
- int nFileCnt = 0 , nSplitCnt = 0 , nAllLen = 0 ;
- DWORD dwTime = 0 ;//耗时
- //选择目录
- CDirDialog cdlg ;
- CString strPath;
- if(cdlg.DoBrowse(this))
- {
- strPath = cdlg.m_strSelDir ;//目录路径
- }
- //遍历目录,获得目录下的txt文件
- CStringArray csaFileName ;
- csaFileName.RemoveAll();
- GetFileName((LPCTSTR)strPath,csaFileName);
- nFileCnt = csaFileName.GetSize();
- /////设置进度对话框
- CWaitDlgmy dlgWait;
- dlgWait.Create(IDD_DIALOG_WAIT, this);
- dlgWait.CenterWindow(this);
- dlgWait.ShowWindow(SW_SHOW);
- dlgWait.SetRange(1, nFileCnt);
- //对每个txt文件 进行分词
- for(int i = 0 ; i < nFileCnt &&!m_bstop ; i++)
- {
- TreatMessageLoop();
- dlgWait.SetPos(i);//设置进度条
- CString strText ;
- CString strFileName = csaFileName.GetAt(i);//获得文件名称
- //打开文件读取文件内容
- CFile cSplitFile ;
- if(!cSplitFile.Open(strFileName,CFile::shareDenyWrite))//打开文件
- continue ;
- int nFileLen = cSplitFile.GetLength();//获得文件长度
- LPTSTR lpText = strText.GetBuffer(nFileLen+1) ;
- cSplitFile.Read(lpText,nFileLen) ;//读取文件内容
- lpText[nFileLen] = _T(' ') ;
- strText.ReleaseBuffer();
- cSplitFile.Close() ;//关闭文件
- //进行分词
- HANDLE hHandle = HLOpenSplit();//打开分词句柄
- if(hHandle == INVALID_HANDLE_VALUE)
- {
- AfxMessageBox("打开分词句柄失败!");
- continue ;
- }
- DWORD dwStart = GetTickCount();
- bool bOK = HLSplitWord(hHandle,strText,0);//分词
- DWORD dwEnd = GetTickCount();
- dwTime +=(dwEnd-dwStart);
- if(bOK)
- {//分词成功
- nAllLen += nFileLen ;
- CString strResult ;//存放分词结果
- int nSplitWordCnt = HLGetWordCnt(hHandle);//获得分词结果个数
- for(int j = 0 ; j < nSplitWordCnt ; j++)
- {//获得分词结果
- SHLSegWord* pWord = HLGetWordAt(hHandle,j) ;
- strResult += pWord->s_szWord ;
- strResult += _T(' ');//以空格分割分词结果
- }//for j
- nSplitCnt++ ;
- }
- HLCloseSplit(hHandle);//关闭分词句柄
- while(m_bPause && !m_bstop)
- {
- Sleep(5);//暂停
- TreatMessageLoop();
- }
- }//for i
- dlgWait.DestroyWindow();
- CString strMsg ;
- float fPer = ((float)nAllLen/(float)1024)/(float)(dwTime/1000) ;
- strMsg.Format("处理完成,共有%d篇,成功处理%d篇,文章长度%d字节,耗时%dms!效率:%fKB/s!",nFileCnt,nSplitCnt,nAllLen,dwTime,fPer);
- AfxMessageBox((LPCTSTR)strMsg);
- }
- //********************************************************************
- // 函 数 名: OnClose
- // 作 者: lili
- // 日 期: 2005.4.20
- // 功能描述: 退出程序
- // 参数说明:
- // 返 回 值:
- // 负面影响: 无
- // 备 忘:
- // 已知限制: 无
- // 错 误 号: 无
- // 更新纪录:
- // 日 期 姓 名 描述
- // =========== ========= ========================================
- //********************************************************************
- void CTestSegExDlg::OnClose()
- {
- // TODO: Add your message handler code here and/or call default
- HLFreeSplit();//卸载分词系统
- CDialog::OnClose();
- }
- //********************************************************************
- // 函 数 名: OnBtnAbout
- // 作 者: lili
- // 日 期: 2005.4.20
- // 功能描述: 显示About对话框
- // 参数说明:
- // 返 回 值:
- // 负面影响: 无
- // 备 忘:
- // 已知限制: 无
- // 错 误 号: 无
- // 更新纪录:
- // 日 期 姓 名 描述
- // =========== ========= ========================================
- //********************************************************************
- void CTestSegExDlg::OnBtnAbout()
- {
- // TODO: Add your control notification handler code here
- CAboutDlg cAbout ;
- cAbout.DoModal();
- }
- //********************************************************************
- // 函 数 名: GetFileName
- // 作 者: lili
- // 日 期: 2005.4.20
- // 功能描述: 遍历目录,获得目录下的txt文件名
- // 参数说明: lpPath [IN] 目录名称
- // csaFileName [OUT] 目录下的文件名数组
- // 返 回 值:
- // 负面影响: 无
- // 备 忘:
- // 已知限制: 无
- // 错 误 号: 无
- // 更新纪录:
- // 日 期 姓 名 描述
- // =========== ========= ========================================
- //********************************************************************
- void CTestSegExDlg::GetFileName(LPCTSTR lpPath , CStringArray& csaFileName)
- {
- CStringArray astrPath ;
- CString strDir(lpPath);
- if(strDir.IsEmpty())
- return ;
- astrPath.Add(lpPath);
- strDir += _T("*.*");
- CFileFind cFind;
- bool bFindDir = false;
- BOOL bFindNext = cFind.FindFile(strDir);
- while(bFindNext)
- {
- bFindNext = cFind.FindNextFile();
- if(!cFind.IsDots())
- {
- CString strTmp = cFind.GetFilePath();
- if(cFind.IsDirectory())
- {//是目录
- if(!bFindDir)
- {
- astrPath.Add(strTmp);
- }
- else
- {
- csaFileName.Add(cFind.GetFileTitle());
- }
- }
- else if(strTmp.Right(strlen(".txt")).CompareNoCase(".txt") == 0)
- {//是txt文件
- csaFileName.Add(strTmp);
- }
- }
- if(!bFindNext)
- {
- if(bFindDir)
- break;
- int iUpBound = astrPath.GetUpperBound();
- if(iUpBound == 0)
- break;
- cFind.Close();
- CString strTmpDir = astrPath.GetAt(iUpBound);
- astrPath.RemoveAt(iUpBound);
- if(strTmpDir.Right(1) != _T('\'))
- strTmpDir += _T('\');
- strTmpDir += _T("*.*");
- bFindNext = cFind.FindFile(strTmpDir);
- }
- }
- cFind.Close();
- }
- //********************************************************************
- // 函 数 名: SetStopFlag
- // 作 者: lili
- // 日 期: 2005.4.20
- // 功能描述: 设置停止标识
- // 参数说明: 无
- // 返 回 值:
- // 负面影响: 无
- // 备 忘:
- // 已知限制: 无
- // 错 误 号: 无
- // 更新纪录:
- // 日 期 姓 名 描述
- // =========== ========= ========================================
- //********************************************************************
- void CTestSegExDlg::SetStopFlag()
- {
- m_bstop = true ;
- }
- //********************************************************************
- // 函 数 名: SetPauseFlag
- // 作 者: lili
- // 日 期: 2005.4.20
- // 功能描述: 设置暂停标识
- // 参数说明: 无
- // 返 回 值:
- // 负面影响: 无
- // 备 忘:
- // 已知限制: 无
- // 错 误 号: 无
- // 更新纪录:
- // 日 期 姓 名 描述
- // =========== ========= ========================================
- //********************************************************************
- void CTestSegExDlg::SetPauseFlag(BOOL bPause)
- {
- m_bPause = bPause ;
- }
- //********************************************************************
- // 函 数 名: TreatMessageLoop
- // 作 者: lili
- // 日 期: 2005.4.20
- // 功能描述: 消息循环函数
- // 参数说明: 无
- // 返 回 值:
- // 负面影响: 无
- // 备 忘:
- // 已知限制: 无
- // 错 误 号: 无
- // 更新纪录:
- // 日 期 姓 名 描述
- // =========== ========= ========================================
- //********************************************************************
- void CTestSegExDlg::TreatMessageLoop()
- {
- MSG msg;
- while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
- void CTestSegExDlg::OnStaticPic()
- {
- // TODO: Add your control notification handler code here
- ShellExecute(this->m_hWnd,"open","http://www.hylanda.com/center/introduction.htm","","",SW_SHOW);
- }
- //********************************************************************
- // 函 数 名: OnBtnOpenUdict
- // 作 者: lili
- // 日 期: 2005.4.20
- // 功能描述: 装载用户词典
- // 参数说明: 无
- // 返 回 值:
- // 负面影响: 无
- // 备 忘:
- // 已知限制: 无
- // 错 误 号: 无
- // 更新纪录:
- // 日 期 姓 名 描述
- // =========== ========= ========================================
- //********************************************************************
- void CTestSegExDlg::OnBtnOpenUdict()
- {
- // TODO: Add your control notification handler code here
- UpdateData(TRUE);
- CFileDialog cdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"文本文件(*.txt)|*.txt|All File(*.*)|*.*||",this);
- if(cdlg.DoModal()==IDOK)
- {
- CFile file ;
- CString strFile = cdlg.GetFileName();//获得选择的文件名
- bool bOK = HLOpenUsrDict((LPCTSTR)strFile);//装载用户词典
- if(bOK)
- AfxMessageBox("装载用户词典成功!");
- else
- AfxMessageBox("装载用户词典失败!");
- }
- }
- //********************************************************************
- // 函 数 名: OnBtnCloseudict
- // 作 者: lili
- // 日 期: 2005.4.20
- // 功能描述: 卸载用户词典
- // 参数说明: 无
- // 返 回 值:
- // 负面影响: 无
- // 备 忘:
- // 已知限制: 无
- // 错 误 号: 无
- // 更新纪录:
- // 日 期 姓 名 描述
- // =========== ========= ========================================
- //********************************************************************
- void CTestSegExDlg::OnBtnCloseudict()
- {
- // TODO: Add your control notification handler code here
- UpdateData(TRUE);
- HLFreeUsrDict();
- AfxMessageBox("卸载成功!");
- }
- void CAboutDlg::OnStaticAboutpic()
- {
- // TODO: Add your control notification handler code here
- ShellExecute(this->m_hWnd,"open","http://www.hylanda.com/center/introduction.htm","","",SW_SHOW);
- }