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

📄 rtext.cpp

📁 智能阅读器       阅读器(运行于WINCE平台):阅读器满足一般现实中阅读书籍时的需求
💻 CPP
字号:
// RText.cpp : implementation file
//

#include "stdafx.h"
#include "WinCEJob.h"
#include "RText.h"
#include "searcht.h"
#include "number.h"
#include "percent.h"
#include "settime.h"
#include "cage.h"
#include "jump.h"
#include "addmark.h"
#include "FileLoader.h"
#include "showmark.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CRText dialog


CRText::CRText(CWnd* pParent /*=NULL*/)
	: CDialog(CRText::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRText)
	m_text = _T("");
	//}}AFX_DATA_INIT
}


void CRText::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRText)
	DDX_Text(pDX, IDC_EDIT1, m_text);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRText, CDialog)
	//{{AFX_MSG_MAP(CRText)
	ON_COMMAND(IDD_CLOSE, OnClose)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_COMMAND(IDD_FINDS, OnFinds)
	ON_COMMAND(ID_NEXTPAGE, OnNextpage)
	ON_COMMAND(ID_Prepage, OnPrepage)
	ON_COMMAND(ID_BYPAGE, OnBypage)
	ON_COMMAND(ID_BYPERCENT, OnBypercent)
	ON_COMMAND(ID_ENDPAGE, OnEndpage)
	ON_COMMAND(ID_FIRSTPAGE, OnFirstpage)
	ON_COMMAND(ID_MENUITEM32799, OnMenuitem32799)
	ON_COMMAND(ID_LOOKMARK, OnLookmark)
	ON_COMMAND(ID_ADDMARK, OnAddmark)
	ON_COMMAND(ID_EDITMARK, OnEditmark)
	ON_COMMAND(ID_JUMPTOMARK, OnJumptomark)
	ON_COMMAND(ID_MARK, OnMark)
	ON_COMMAND(IDD_CLEARMARK, OnClearmark)
	ON_COMMAND(IDD_BACK, OnBack)
	ON_COMMAND(IDD_FORWARD, OnForward)
	ON_COMMAND(ID_PAGEONTIME, OnPageontime)
	ON_COMMAND(ID_FILEINFO, OnFileinfo)
	ON_WM_TIMER()
	ON_COMMAND(IDD_CATEGORIES, OnCategories)
	ON_COMMAND(ID_XUANXIANG, OnXuanxiang)
	ON_COMMAND(ID_SETREAD, OnSetread)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRText message handlers

void CRText::OnOK() 
{
	CDialog::OnOK();
}
//****************************************************************
//函数名:	OnInitDialog
//参数:	
//功能:	初始化EDIT框的内容
//作者:	杨淑华
//实现日期: 05-3-14
/****************************************************************/
BOOL CRText::OnInitDialog()
{
	CDialog::OnInitDialog();

	m_text = m_filetext;
	if(m_openfile.Right(3) ==L"PBD" || m_openfile.Right(3) ==L"pbd")
	{
		m_fileloader = new FileLoader(this->m_openfile);
//		this->m_fileloader->tot_mark=0;
	}
//	CString str = L"统计,你好啊asdyangshuhua sd;lfjasld;fjasldkjfaksdjgllllllllllllllddddddddddddddddddddddddddddkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajjjjjjjjjjjjjjjjjjjjjjjjjjjjjjbbbbbbbbbbbbbbbbbbbbbbbbb";
//	m_text = str+str+str;
//	m_text += m_text+m_text;
//	m_text.Format(L"%d", str.GetLength());
	
	SHMENUBARINFO mbi;
    ZeroMemory(&mbi, sizeof(SHMENUBARINFO));
    mbi.cbSize = sizeof(SHMENUBARINFO);
    mbi.hwndParent = this->m_hWnd;
    mbi.nToolBarId = IDR_MENUBAR3;
    mbi.hInstRes = AfxGetInstanceHandle();
    if(!SHCreateMenuBar(&mbi))
    {
        // Couldn't create the menu bar.  Fail creation of the window.
        MessageBox(L"Couldn't create the menu bar");
    }
	UpdateData(false);
	this->m_edit = (CEdit*) this->GetDlgItem(IDC_EDIT1);
	m_iCount = 0;
/*
	HWND hand;
	this->GetDlgItem(IDC_EDIT1, &hand);
	HDC hdc = ::GetWindowDC(hand);

	if(hdc)
	{
		MessageBox(L"success!");
	}
	CDC cdc;
	cdc.Attach(hdc);
	CPen myPen1(PS_SOLID, 2, RGB(0,255,0));

	CPen * oldpen = (CPen*)cdc.SelectObject(myPen1);
	RECT rt;
	rt.bottom = 30;
	rt.left	=	0;
	rt.right =	40;
	rt.top =	0;
	cdc.Ellipse(&rt);

	cdc.SelectObject(oldpen);


LPVOID lpMsgBuf;
FormatMessage( 
    FORMAT_MESSAGE_ALLOCATE_BUFFER | 
    FORMAT_MESSAGE_FROM_SYSTEM | 
    FORMAT_MESSAGE_IGNORE_INSERTS,
    NULL,
    GetLastError(),
    0, // Default language
    (LPTSTR) &lpMsgBuf,
    0,
    NULL 
);
// Process any inserts in lpMsgBuf.
// ...
// Display the string.
::MessageBox( NULL, (LPCTSTR)lpMsgBuf, L"Error", MB_OK | MB_ICONINFORMATION );
// Free the buffer.
LocalFree( lpMsgBuf );	
*/
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CRText::OnClose() 
{
	if(m_openfile.Right(3) ==L"PBD" || m_openfile.Right(3) ==L"pbd")
	{
		if(m_fileloader->ModifyInfo())
		{
			AfxMessageBox(L"aaa");
		}
		else
		{
			AfxMessageBox(L"bbb");
		}
	//	this->m_fileloader->tot_mark=0;
	}
	CDialog::OnOK();
}

void CRText::OnButton1() 
{
	HWND hand;
	this->GetDlgItem(IDC_EDIT1, &hand);
	HDC hdc = ::GetWindowDC(hand);

	if(!hdc)
	{
		MessageBox(L"failed!");
	}
	CDC cdc;
	cdc.Attach(hdc);
	CPen myPen1(PS_SOLID, 2, RGB(0,255,0));

	CPen * oldpen = (CPen*)cdc.SelectObject(myPen1);
	RECT rt;
	rt.bottom = 30;
	rt.left	=	0;
	rt.right =	40;
	rt.top =	0;
	cdc.Ellipse(&rt);
	rt.right = 200;
	rt.bottom = 200;
//	cdc.DrawText(L"asldkfjasl;kdjfa;lksdjfa;lkdhga;lskdjfalksdjfaldfksad", &rt, DT_NOCLIP);
	cdc.SelectObject(oldpen);

	cdc.Detach();
	delete [] cdc;
}
extern CString searchcontent;
void CRText::OnFinds() 
{
	CSearchT cs;
	cs.DoModal();

	Search(searchcontent);
}

void CRText::OnNextpage() 
{
	m_edit->LineScroll(17);
}

void CRText::OnPrepage() 
{
	m_edit->LineScroll(-17);
}
extern int bypage;
void CRText::OnBypage() 
{
	CNumber cn;
	cn.DoModal();
//	int a,b;
//	m_edit->GetScrollRange(SB_VERT, &a, &b);
	m_edit->LineScroll(-1000);
	m_edit->LineScroll(bypage*17);
}
extern int percent;
void CRText::OnBypercent() 
{
	CPercent cp;
	cp.DoModal();
	int a,b;
	m_edit->GetScrollRange(SB_VERT, &a, &b);
	int i = percent*(b-a)/100;
	m_edit->LineScroll(i);
}

void CRText::OnEndpage() 
{
	int a,b;
	m_edit->GetScrollRange(SB_VERT, &a, &b);
	m_edit->LineScroll(b-a);
}

void CRText::OnFirstpage() 
{
	int a,b;
	m_edit->GetScrollRange(SB_VERT, &a, &b);
	m_edit->LineScroll(a-b);
}
extern int m_currentsel;
void CRText::OnMenuitem32799() 
{
	// TODO: Add your command handler code here
	
}

void CRText::OnLookmark() 
{
	OnEditmark();
}
extern CString markname;
void CRText::OnAddmark() 
{
	CAddmark ca;
	ca.DoModal();
	
	m_fileloader->SetBookmark(m_edit->GetFirstVisibleLine(), markname);
//	this->m_fileloader->tot_mark++;
}
extern int jumpmark;
void CRText::OnEditmark() 
{
	CShowMark cs;
	
	cs.m_totalmark = this->m_fileloader->tot_mark;
	for(int i=0; i<this->m_fileloader->tot_mark; i++)
	{
		cs.marks[i] = this->m_fileloader->mark_line[i];
		cs.markname[i] = this->m_fileloader->mark_name[i];
	}
	cs.DoModal();
	m_edit->LineScroll(-1000);
	m_edit->LineScroll(this->m_fileloader->mark_line[jumpmark]);
}

void CRText::OnJumptomark() 
{
	CJump cj;
	cj.m_number = this->m_chapternum;
	for(int i=0; i<m_chapternum; i++)
	{
		cj.name[i] = this->m_fileloader->m_chapter[i];
	}
	cj.DoModal();
	m_edit->LineScroll(-1000);
	m_edit->LineScroll(this->m_chapterline[m_currentsel]);
}

void CRText::OnMark() 
{
	// TODO: Add your command handler code here
	
}

void CRText::OnClearmark() 
{
	// TODO: Add your command handler code here
	
}

void CRText::OnBack() 
{
	
}

void CRText::OnForward() 
{
	// TODO: Add your command handler code here
	
}
extern int timeset;
void CRText::OnPageontime() 
{
	int a,b;
	m_edit->GetScrollRange(SB_VERT, &a, &b);
	m_total = b-a;
	CSetTime cs;
	cs.DoModal();

	SetTimer(1, timeset*1000, NULL);
}

void CRText::OnFileinfo() 
{
//	CSearchT cs;
//	cs.DoModal();
//	Search(searchcontent);
}

void CRText::OnTimer(UINT nIDEvent) 
{
	if(m_iCount*17 < m_total)
	{
		m_iCount++;
		m_edit->LineScroll(17);
	}
	else
	{
		KillTimer(0);
	}
	CDialog::OnTimer(nIDEvent);
}

void CRText::OnCategories() 
{
	CCage cc;
	cc.DoModal();
}

CRText::~CRText()
{
	if(m_openfile.Right(3) ==L"PBD" || m_openfile.Right(3) ==L"pbd")
	{
		if(m_fileloader->ModifyInfo())
		{
	//		AfxMessageBox(L"aaa");
		}
		else
		{
	//		AfxMessageBox(L"bbb");
		}
	}
}

int CRText::Search(CString ss)
{
	int pos;
	pos = 0;
	m_text.MakeLower();
	ss.MakeLower();
	do
	{
		pos = m_text.Find(ss,pos);	
		if(pos == -1)
		{
			AfxMessageBox(L"找不到相应的字符串");
			return 0;
		}
		m_edit->SetSel(pos,pos+ss.GetLength()*2,false);
		m_edit->LineScroll(2);
		pos += ss.GetLength();
		if(AfxMessageBox(L"继续查找?",MB_OKCANCEL) == IDCANCEL)
		{
			pos = -1;
		}
	}while(pos!=-1);
	return 1;
}

int CRText::GetLine(int pos,int l,int e)
{
/*	int i;
	for( ;l<e ;l++ )
	{
		if(m_edit->GetLine(l)<pos+1)
			if(m_edit->GetLine(l+1)>pos)
				return l;
	}
	return e;*/
	return 0;
}

void CRText::OnXuanxiang() 
{
	// TODO: Add your command handler code here
	
}

void CRText::OnSetread() 
{
	// TODO: Add your command handler code here
	
}

⌨️ 快捷键说明

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