⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ewordview.cpp

📁 该软件是为记忆、学习英语单词开发的 单词学习,单词复习
💻 CPP
字号:
// EWordView.cpp : implementation of the CEWordView class
//
#include <afxwin.h>
#include "stdafx.h"
#include "EWord.h"
#include "afx.h"
#include "EWordSet.h"
#include "EWordDoc.h"
#include "EWordView.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include "Studydlg.h"
#include "Reviewdlg.h"
#include "OptionDlg.h"
/////////////////////////////////////////////////////////////////////////////
// CEWordView

IMPLEMENT_DYNCREATE(CEWordView, CDaoRecordView)

BEGIN_MESSAGE_MAP(CEWordView, CDaoRecordView)
	//{{AFX_MSG_MAP(CEWordView)
	ON_COMMAND(ID_RECORD_ADD, OnRecordAdd)
	ON_EN_CHANGE(IDC_MEANS, OnChangeMeans)
	ON_COMMAND(ID_RECORD_DELETE, OnRecordDelete)
	ON_WM_LBUTTONDBLCLK()
	ON_COMMAND(ID_WORD_STUDY, OnWordStudy)
	ON_COMMAND(ID_WORD_REVIEW, OnWordReview)
	ON_COMMAND(IDC_OPTION, OnOption)
	ON_BN_CLICKED(IDC_ADD_OK, OnAddOk)
	ON_WM_RBUTTONDOWN()
	ON_EN_CHANGE(IDC_WORD, OnChangeWord)
	ON_BN_CLICKED(IDC_ADD_CANCEL, OnAddCancel)
	ON_COMMAND(ID_HELP, OnHelp)
	ON_COMMAND(ID_ADD_WORD,JSAddWord)
	ON_COMMAND(ID_SHOWMINAL,ShowSmall)
	ON_WM_TIMER()
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CDaoRecordView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CDaoRecordView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CDaoRecordView::OnFilePrintPreview)
   
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEWordView construction/destruction

CEWordView::CEWordView()
	: CDaoRecordView(CEWordView::IDD)
{
	//{{AFX_DATA_INIT(CEWordView)
	m_pSet = NULL;
	m_Meaning = _T("");
	m_Spell = _T("");
	//}}AFX_DATA_INIT
	// TODO: add construction code here
   m_bAdding=FALSE;
   CFile File;
   if(File.Open("Option.sav",CFile::modeRead))
   {
	   File.Read(&Option,sizeof(Option));
   }
   	else
   {
	 OptionInit();
	}

}

CEWordView::~CEWordView()
{
}

void CEWordView::DoDataExchange(CDataExchange* pDX)
{
	CDaoRecordView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CEWordView)
	DDX_Text(pDX, IDC_MEANS, m_Meaning);
	DDX_Text(pDX, IDC_WORD, m_Spell);
	//}}AFX_DATA_MAP
}

BOOL CEWordView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CDaoRecordView::PreCreateWindow(cs);
}

void CEWordView::OnInitialUpdate()
{
	m_pSet = &GetDocument()->m_eWordSet;
	CDaoRecordView::OnInitialUpdate();
}

/////////////////////////////////////////////////////////////////////////////
// CEWordView printing

BOOL CEWordView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CEWordView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CEWordView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CEWordView diagnostics

#ifdef _DEBUG
void CEWordView::AssertValid() const
{
	CDaoRecordView::AssertValid();
}

void CEWordView::Dump(CDumpContext& dc) const
{
	CDaoRecordView::Dump(dc);
}

CEWordDoc* CEWordView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CEWordDoc)));
	return (CEWordDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CEWordView database support
CDaoRecordset* CEWordView::OnGetRecordset()
{
	return m_pSet;
}


/////////////////////////////////////////////////////////////////////////////
// CEWordView message handlers

void CEWordView::OnRecordAdd() 
{
	// TODO: Add your command handler code here
	
   // m_pSet->AddNew();
    m_bAdding = TRUE;
	CButton *pb=(CButton*)GetDlgItem(IDC_ADD_OK);
	pb->ShowWindow(SW_SHOW);
	//pb->SetReadOnly(FALSE);
	pb=(CButton*)GetDlgItem(IDC_ADD_CANCEL);
    pb->ShowWindow(SW_SHOW);
//	pb->SetReadOnly(FALSE);
    CEdit* pCtrl = (CEdit*)GetDlgItem(IDC_WORD);
    pCtrl->SetReadOnly(FALSE);
    pCtrl->SetWindowText("");
	pCtrl = (CEdit*)GetDlgItem(IDC_MEANS);
     pCtrl->SetReadOnly(FALSE);
   //UpdateData(FALSE);
	pCtrl->SetWindowText("");
	

}

BOOL CEWordView::OnMove(UINT nIDMoveCommand) 
{
	// TODO: Add your specialized code here and/or call the base class
	 
     if (m_bAdding)
     {
		 CEdit *pCtrl=(CEdit*)GetDlgItem(IDC_WORD);
		 CString s;
		 pCtrl->GetWindowText(s);
		 
         if(s.GetLength()<1)
			 return(FALSE);
		  pCtrl=(CEdit*)GetDlgItem(IDC_MEANS);

		 pCtrl->GetWindowText(s);
		 
         if(s.GetLength()<1)
			 return(FALSE);
		 m_bAdding = FALSE;
         UpdateData(TRUE);
		 m_pSet->m_column4=0;
		 m_pSet->m_column5=0;
		 COleDateTime time;
		 time=time.GetCurrentTime();
		 m_pSet->m_column3=time;
         if (m_pSet->CanUpdate())
             m_pSet->Update();
         m_pSet->Requery();
         UpdateData(FALSE);
          pCtrl = (CEdit*)GetDlgItem(IDC_WORD);
         pCtrl->SetReadOnly(TRUE);
		 pCtrl = (CEdit*)GetDlgItem(IDC_MEANS);
         pCtrl->SetReadOnly(TRUE);

         return TRUE;
     }
     else

	 if(CDaoRecordView::OnMove(nIDMoveCommand))
	 {
		 m_Spell=m_pSet->m_column1;
		 m_Meaning=m_pSet->m_column2;
		 UpdateData(FALSE);
	     return(TRUE);
	 }
	 else return(FALSE);
}

void CEWordView::OnChangeMeans() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CRecordView::OnInitDialog()
	// function to send the EM_SETEVENTMASK message to the control
	// with the ENM_CHANGE flag ORed into the lParam mask.
	
	// TODO: Add your control notification handler code here
	
	if(!m_bAdding)return;
    
	 CEdit* pNewWord = (CEdit*)GetDlgItem(IDC_MEANS);
	 CString m_NewWord;
	 pNewWord->GetWindowText(m_NewWord);
	int i=m_NewWord.Find(':');
	if(i>2)
	{
	m_Spell=m_NewWord.Left(i-1);
	//CEdit * pWord=(CEdit*)GetDlgItem(IDC_WORD);
	//pWord->SetWindowText(m_Word);
	int j;
	j=m_NewWord.GetLength();
	if(i>2&&j>4)
	{
	m_Meaning=m_NewWord.Right(j-i-2);
	//CEdit * pMeans=(CEdit*)GetDlgItem(IDC_MEANS);
	//pMeans->SetWindowText(m_Means);
	}
	UpdateData(FALSE); 
	}
}

void CEWordView::OnRecordDelete() 
{										
	// TODO: Add your command handler code here
  if(m_pSet->m_column1=="Chenshengli"|m_pSet->m_column1=="EWord2000")
  {
	  MessageBox("不能删除该数据");
  return;
  }
  m_pSet->Delete();
  m_pSet->MoveNext();
  if (m_pSet->IsEOF())
  m_pSet->MoveLast();
  if (m_pSet->IsBOF())
  m_pSet->SetFieldNull(NULL);
        m_Spell=m_pSet->m_column1;
		 m_Meaning=m_pSet->m_column2;
		  UpdateData(FALSE);	
}

void CEWordView::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	// PostMessage(ID_RECORD_ADD,0,0);
	 OnRecordAdd();
	CDaoRecordView::OnLButtonDblClk(nFlags, point);
}

void CEWordView::OnWordStudy() 
{
	// TODO: Add your command handler code here
    CStudyDlg dlg(m_pSet);
	dlg.StudyNumber=Option.StudyNumber;
	if(dlg.DoModal()==IDOK)
	{
	}
	else
	{
	}
}

void CEWordView::OnWordReview() 
{
	// TODO: Add your command handler code here
	CReviewDlg dlg(Option,m_pSet);
	if(dlg.DoModal()==IDOK)
	{
	}
}

void CEWordView::OnOption() 
{
	// TODO: Add your command handler code here
	COptionDlg dlg(Option);
	if(dlg.DoModal()==IDOK)
	{
		
		Option=dlg.Option;
		  CFile File;
		  if(File.Open("Option.sav",CFile::modeCreate|CFile::modeWrite))
   {
	   File.Write(&Option,sizeof(Option));
   }

	}

}

void CEWordView::OptionInit()
{
   Option.StudyNumber=20;
	 Option.ReviewNumber=20;
	 Option.Day1=1;
	 Option.Day2=2;
	 Option.Day3=4;
	 Option.Day4=8;
	 Option.Day5=16;

}



BOOL CEWordView::OnAddOk() 
{
	// TODO: Add your control notification handler code here
    
	BOOL IsNewWord=TRUE;
    m_bAdding = FALSE;
	CButton *pb=(CButton*)GetDlgItem(IDC_ADD_OK);
	pb->ShowWindow(SW_HIDE);
	//pb->SetReadOnly(FALSE);
	pb=(CButton*)GetDlgItem(IDC_ADD_CANCEL);
    pb->ShowWindow(SW_HIDE);
    CEdit* pCtrl = (CEdit*)GetDlgItem(IDC_WORD);
    int result = pCtrl->SetReadOnly(TRUE);
	pCtrl = (CEdit*)GetDlgItem(IDC_MEANS);
     pCtrl->SetReadOnly(TRUE);
    UpdateData(TRUE);
	m_pSet->MoveFirst();
	while(!m_pSet->IsEOF()&&IsNewWord)
	{
		if(m_pSet->m_column1==m_Spell)
			IsNewWord=FALSE;
		 m_pSet->MoveNext();
	};
    if((!IsNewWord)|(m_Spell.GetLength()<1))
	{
		m_pSet->MoveFirst();
		MessageBox("该单词已存在或错误,不能加入词库");
		return FALSE;
	}
     m_pSet->AddNew();
     m_pSet->m_column1=m_Spell;
	 m_pSet->m_column2=m_Meaning;
	 m_pSet->m_column4=0;
	 m_pSet->m_column5=0;
	 COleDateTime time;
	 time=time.GetCurrentTime();
	 m_pSet->m_column3=time;
      if (m_pSet->CanUpdate())
             m_pSet->Update();
        m_pSet->Requery();
	while(!m_pSet->IsEOF())
	{
		if(m_pSet->m_column1==m_Spell)
		break;
		 m_pSet->MoveNext();
	};
return (TRUE);
}



void CEWordView::OnRButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
    CMenu Menu;
	Menu.LoadMenu(IDR_ADDMENU);
	pMenu=Menu.GetSubMenu(0);
	ASSERT(pMenu!=0);
	CPoint p=point;
	ClientToScreen(&p);
	pMenu->TrackPopupMenu(0,p.x,p.y,this);


	CDaoRecordView::OnRButtonDown(nFlags, point);
}

void CEWordView::OnChangeWord() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDaoRecordView::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	if(!m_bAdding)return;
     //CButton* pb=(CButton*)GetDlgItem(IDC_ADD_OK);
     //pb->EnableWindow(FALSE);
	 CEdit* pNewWord = (CEdit*)GetDlgItem(IDC_WORD);
	 CString m_NewWord;
	 pNewWord->GetWindowText(m_NewWord);
	 /*
	 if(m_NewWord.GetLength()>0)
	 {
       pb->EnableWindow(TRUE);
	 }
	 */
	int i=m_NewWord.Find(':');
	if(i>2)
	{
	m_Spell=m_NewWord.Left(i-1);
	//CEdit * pWord=(CEdit*)GetDlgItem(IDC_WORD);
	//pWord->SetWindowText(m_Word);
	int j;
	j=m_NewWord.GetLength();
	if(i>2&&j>4)
	{
	m_Meaning=m_NewWord.Right(j-i-2);
	//CEdit * pMeans=(CEdit*)GetDlgItem(IDC_MEANS);
	//pMeans->SetWindowText(m_Means);
	i=m_NewWord.ReverseFind('/');
		if(i>4)
         m_Meaning=m_NewWord.Right(j-i-1);   
	}
	UpdateData(FALSE);
}
}

void CEWordView::OnAddCancel() 
{
	// TODO: Add your control notification handler code here
	 m_bAdding = FALSE;
	CButton *pb=(CButton*)GetDlgItem(IDC_ADD_OK);
	pb->ShowWindow(SW_HIDE);
	//pb->SetReadOnly(FALSE);
	pb=(CButton*)GetDlgItem(IDC_ADD_CANCEL);
    pb->ShowWindow(SW_HIDE);
    CEdit* pCtrl = (CEdit*)GetDlgItem(IDC_WORD);
    int result = pCtrl->SetReadOnly(TRUE);
	pCtrl = (CEdit*)GetDlgItem(IDC_MEANS);
     pCtrl->SetReadOnly(TRUE);
        m_Spell=m_pSet->m_column1;
		 m_Meaning=m_pSet->m_column2;
		 UpdateData(FALSE);
}

void CEWordView::OnHelp() 
{
CString parth;
	CFile cFile;
     CString temp="eword2000.html";
	if(cFile.Open(temp,CFile::modeRead))
	{
		parth=cFile.GetFilePath();
		parth=parth.Left(parth.GetLength()-temp.GetLength());
		ShellExecute(::GetDesktopWindow(),"open","eword2000.html",
		NULL,parth,SW_SHOW );
	//	SW_SHOWMAXIMIZED );

	}
}

void CEWordView::JSAddWord()
{
       
	//	CMainFrame::OnAddWord();
		char *s;
		CString string;
	 if(OpenClipboard())
		 if(IsClipboardFormatAvailable (CF_TEXT))
		 {
		 HANDLE handle=GetClipboardData(CF_TEXT);
		 s=(char*)handle;
		 string=s;
		 }
		 CloseClipboard();
          int i=string.Find(" ");
		  int j=string.Find(":");
          if(i<2&&j!=(i-1)){
		 MessageBox("没有选定要加入的单词");
		 }
		  else
		  {
		  {
         if(string.GetLength()>100)
			 string=string.Left(100);
		 OnRecordAdd();
		 m_Spell=string;
		 UpdateData(FALSE);
         OnChangeWord();
		  }
		  CMainFrame * cwnd;
           cwnd=(CMainFrame*)GetParent();
		   if(!cwnd->IsWindowVisible( )) 
		   cwnd->OnAddWord();
    	}	
	
}

void CEWordView::ShowSmall ()
{
         CMainFrame * cwnd;
           cwnd=(CMainFrame*)GetParent();
		   cwnd->ShowWindow(SW_HIDE);
}

void CEWordView::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default

char *s;
		CString string;
		if(OpenClipboard()){
		 if(IsClipboardFormatAvailable (CF_TEXT))
		 {
		 HANDLE handle=GetClipboardData(CF_TEXT);
		 s=(char*)handle;
		 string=s;
		 }
		 CloseClipboard();
          int i=string.Find(" ");
		  int j=string.Find(":");
          if(i>2&&j==(i+1)&&m_TempString!=string)
		  {
			  m_TempString=string;
			  JSAddWord();
		 	}
		 
    	}
	CDaoRecordView::OnTimer(nIDEvent);
}

int CEWordView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CDaoRecordView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	SetTimer(0,1000,NULL);
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -