www.pudn.com > SegExample.zip > SegmentView.cpp


// SegmentView.cpp : implementation of the CSegmentView class 
// 
 
#include "stdafx.h" 
#include "Segment.h" 
 
#include "SegmentDoc.h" 
#include "SegmentView.h" 
#include "RMMAPI.h" 
bool g_bIsSucc=false; 
#include "SefFileDlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CSegmentView 
 
IMPLEMENT_DYNCREATE(CSegmentView, CFormView) 
 
BEGIN_MESSAGE_MAP(CSegmentView, CFormView) 
	//{{AFX_MSG_MAP(CSegmentView) 
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1) 
	ON_BN_CLICKED(IDC_BUTTON2, OnButton2) 
	ON_COMMAND(ID_SEGFILE, OnSegfile) 
	//}}AFX_MSG_MAP 
	// Standard printing commands 
	ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint) 
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint) 
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview) 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CSegmentView construction/destruction 
 
CSegmentView::CSegmentView() 
	: CFormView(CSegmentView::IDD) 
{ 
	//{{AFX_DATA_INIT(CSegmentView) 
	m_strToSeg = _T(""); 
	m_strSeged = _T(""); 
	//}}AFX_DATA_INIT 
	// TODO: add construction code here 
 
} 
 
CSegmentView::~CSegmentView() 
{ 
	if ( g_bIsSucc ){ 
		RMMExit(); 
	} 
} 
 
void CSegmentView::DoDataExchange(CDataExchange* pDX) 
{ 
	CFormView::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CSegmentView) 
	DDX_Control(pDX, IDC_LIST1, m_ctrResult); 
	DDX_Text(pDX, IDC_EDIT1, m_strToSeg); 
	DDX_Text(pDX, IDC_EDIT2, m_strSeged); 
	//}}AFX_DATA_MAP 
} 
 
BOOL CSegmentView::PreCreateWindow(CREATESTRUCT& cs) 
{ 
	// TODO: Modify the Window class or styles here by modifying 
	//  the CREATESTRUCT cs 
 
	return CFormView::PreCreateWindow(cs); 
} 
 
void CSegmentView::OnInitialUpdate() 
{ 
	CFormView::OnInitialUpdate(); 
	GetParentFrame()->RecalcLayout(); 
	ResizeParentToFit(); 
	if ( RMMInit("segment.idx","segment.dat") ){ 
		g_bIsSucc=true; 
	} 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CSegmentView printing 
 
BOOL CSegmentView::OnPreparePrinting(CPrintInfo* pInfo) 
{ 
	// default preparation 
	return DoPreparePrinting(pInfo); 
} 
 
void CSegmentView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) 
{ 
	// TODO: add extra initialization before printing 
} 
 
void CSegmentView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) 
{ 
	// TODO: add cleanup after printing 
} 
 
void CSegmentView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/) 
{ 
	// TODO: add customized printing code here 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CSegmentView diagnostics 
 
#ifdef _DEBUG 
void CSegmentView::AssertValid() const 
{ 
	CFormView::AssertValid(); 
} 
 
void CSegmentView::Dump(CDumpContext& dc) const 
{ 
	CFormView::Dump(dc); 
} 
 
CSegmentDoc* CSegmentView::GetDocument() // non-debug version is inline 
{ 
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSegmentDoc))); 
	return (CSegmentDoc*)m_pDocument; 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CSegmentView message handlers 
 
void CSegmentView::OnButton1()  
{ 
	UpdateData(true); 
	if ( m_strToSeg.IsEmpty() ){ 
		AfxMessageBox("ÇëÊäÈë´ýÇз־ä×Ó"); 
		return; 
	} 
	char szSeged[1024]; 
	RMMMain(m_strToSeg.GetBuffer(1024),szSeged); 
	m_strSeged=szSeged; 
	UpdateData(false); 
	 
} 
 
void CSegmentView::OnButton2()  
{ 
	UpdateData(true); 
	if ( !m_strSeged.IsEmpty() ){ 
		if ( m_ctrResult.FindString(-1,m_strSeged) == LB_ERR ) 
			m_ctrResult.AddString(m_strSeged); 
	} 
	UpdateData(false); 
	 
} 
 
void CSegmentView::OnSegfile()  
{ 
	CSefFileDlg obSefFileDlg; 
	if ( obSefFileDlg.DoModal() == IDOK ){ 
		char psInp[1024]; 
		char psOut[1024]; 
		strcpy(psInp,obSefFileDlg.m_strInp); 
		strcpy(psOut,obSefFileDlg.m_strOut); 
 
        FILE* fp=fopen(psInp,"rb"); 
        FILE* fpO=fopen(psOut,"wb"); 
        if(!fp) return; 
         
        char sWord[2000]; 
        char sSegmented[2000]; 
 
        while(!feof(fp)){ 
            fscanf(fp,"%s",sWord); 
            RMMMain(sWord,sSegmented); 
            fprintf(fpO,"%s\r\n",sSegmented); 
        } 
        fclose(fp); 
        fclose(fpO); 
		 
		sprintf(sSegmented,"notepad.exe %s",psOut); 
		WinExec(sSegmented,SW_SHOW); 
	} 
	 
}