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

📄 texteditor.cpp

📁 客户端: 这是一个完整的基于Wince 4.1图形图象,网络通讯(C/S)模式下的商用程序源代码包.
💻 CPP
字号:
// TextEditor.cpp : implementation file
//

#include "stdafx.h"
#include "PPPClient.h"
#include "TextEditor.h"



#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CList<LOGFONT,LOGFONT&> m_all_logfont;
extern int m_edit_type;//-1:无效,0-Append ,1-Insert(Before),Modify:2
extern CPlayTableData m_cur_data;
/////////////////////////////////////////////////////////////////////////////
// CTextEditor dialog


CTextEditor::CTextEditor(CWnd* pParent /*=NULL*/)
	: CDialog(CTextEditor::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTextEditor)
	m_edit_filename = _T("");
	m_fontheight = 0;
	m_fontwidth = 0;
	m_startx = 0;
	m_starty = 0;
	m_auto_return = FALSE;
	//}}AFX_DATA_INIT
}


void CTextEditor::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTextEditor)
	DDX_Control(pDX, IDC_SETFC_BUTTON, m_SetfcButton);
	DDX_Control(pDX, IDC_SETBC_BUTTON, m_SetbcButton);
	DDX_Control(pDX, IDC_SAVEAS_BUTTON, m_SaveAsButton);
	DDX_Control(pDX, IDC_SAVE_BUTTON, m_SaveButton);
	DDX_Control(pDX, IDC_OPEN_BUTTON, m_OpenButton);
	DDX_Control(pDX, IDC_OK_BUTTON, m_OkButton);
	DDX_Control(pDX, IDC_NEW_BUTTON, m_NewButton);
	DDX_Control(pDX, IDC_CANCEL_BUTTON, m_CancelButton);
	DDX_Control(pDX, IDC_TEXTEDITOR_EDIT, m_text_editor);
	DDX_Control(pDX, IDC_FONTLIST_COMBO, m_fontlist_combobox);
	DDX_Control(pDX, IDC_FC_STATIC, m_fc_static);
	DDX_Control(pDX, IDC_BC_STATIC, m_bc_static);
	DDX_Text(pDX, IDC_EDITFILENAME_EDIT, m_edit_filename);
	DDX_Text(pDX, IDC_FONTHEIGHT_EDIT, m_fontheight);
	DDV_MinMaxLong(pDX, m_fontheight, 8, 256);
	DDX_Text(pDX, IDC_FONTWIDTH_EDIT, m_fontwidth);
	DDV_MinMaxLong(pDX, m_fontwidth, 8, 256);
	DDX_Text(pDX, IDC_SX_EDIT, m_startx);
	DDV_MinMaxInt(pDX, m_startx, 0, 1024);
	DDX_Text(pDX, IDC_SY_EDIT, m_starty);
	DDV_MinMaxInt(pDX, m_starty, 0, 768);
	DDX_Check(pDX, IDC_AUTO_RETURN_CHECK, m_auto_return);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTextEditor, CDialog)
	//{{AFX_MSG_MAP(CTextEditor)
	ON_BN_CLICKED(IDC_NEW_BUTTON, OnNewButton)
	ON_BN_CLICKED(IDC_OPEN_BUTTON, OnOpenButton)
	ON_BN_CLICKED(IDC_SAVE_BUTTON, OnSaveButton)
	ON_BN_CLICKED(IDC_SAVEAS_BUTTON, OnSaveasButton)
	ON_BN_CLICKED(IDC_SETFC_BUTTON, OnSetfcButton)
	ON_BN_CLICKED(IDC_SETBC_BUTTON, OnSetbcButton)
	ON_BN_CLICKED(IDC_CANCEL_BUTTON, OnCancelButton)
	ON_BN_CLICKED(IDC_OK_BUTTON, OnOkButton)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTextEditor message handlers

BOOL CTextEditor::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	//load fc param 
    //...........
	m_fontlist_combobox.ResetContent();
	POSITION pos;
	LOGFONT lg;
	for(int i=0;i<m_all_logfont.GetCount();i++)
	{
      pos=m_all_logfont.FindIndex(i);
	  if(pos)
	  {
	   lg=m_all_logfont.GetAt(pos);
       m_fontlist_combobox.AddString(lg.lfFaceName); 
	  }///????
	}
	//
	if(m_fontlist_combobox.GetCount()>0)
		m_fontlist_combobox.SetCurSel(m_cur_data.tp.m_text_font_name);  
	//width
	m_fontwidth=m_cur_data.tp.m_text_font_width; 
	//height
	m_fontheight=m_cur_data.tp.m_text_font_height;
	//width
	CSpinButtonCtrl *pwSpin=(CSpinButtonCtrl *)GetDlgItem(IDC_FONTWIDTH_SPIN);
	ASSERT(pwSpin!=NULL);
	pwSpin->SetBuddy(GetDlgItem(IDC_FONTWIDTH_EDIT));
	pwSpin->SetRange(8,256);
	pwSpin->SetPos(m_fontwidth);
	//height
	CSpinButtonCtrl *phSpin=(CSpinButtonCtrl *)GetDlgItem(IDC_FONTHEIGHT_SPIN);
	ASSERT(phSpin!=NULL);
	phSpin->SetBuddy(GetDlgItem(IDC_FONTHEIGHT_EDIT));
	phSpin->SetRange(8,256);
	phSpin->SetPos(m_fontheight);
	/////////
	//startx
	m_startx=m_cur_data.tp.startx; 
	//starty
	m_starty=m_cur_data.tp.starty;
	//startx
	CSpinButtonCtrl *pxSpin=(CSpinButtonCtrl *)GetDlgItem(IDC_SX_SPIN);
	ASSERT(pxSpin!=NULL);
	pxSpin->SetBuddy(GetDlgItem(IDC_SX_EDIT));
	pxSpin->SetRange(0,1024);
	pxSpin->SetPos(m_startx);
	//starty
	CSpinButtonCtrl *pySpin=(CSpinButtonCtrl *)GetDlgItem(IDC_SY_SPIN);
	ASSERT(pySpin!=NULL);
	pySpin->SetBuddy(GetDlgItem(IDC_SY_EDIT));
	pySpin->SetRange(0,768);
	pySpin->SetPos(m_starty);
	//auto return
    if(m_cur_data.tp.return_flag==1)
	  m_auto_return=TRUE;
	else
      m_auto_return=FALSE; 
	//..
	//fc color
	m_fc_static.SetBkColor(m_cur_data.tp.m_text_fc_color);
	//bk color
	m_bc_static.SetBkColor(m_cur_data.tp.m_text_bc_color);
	//
	m_edit_filename=m_cur_data.filename;//_T("");  
    //load data...
	m_text_editor.SetWindowText(_T(""));
	m_text_editor.LimitText(256*1024);//128
	//load data to texteditor
	// READ FILE
	 CFile m_file;
	 if(m_file.Open(m_edit_filename,CFile::modeRead|CFile::shareDenyNone)==0)
	 {
		 //MessageBox(L"Open file failed",L"System error!",MB_OK|MB_ICONERROR);
		 //return;
	 }
	 else
	 {
	
	 DWORD len;
	 DWORD uTmp;
	 len=m_file.GetLength(); 
	 if(len>=256*1024)
	 {
		 len=256*1024;
	 }
	 TCHAR *buff=new TCHAR[len+1];//64*1024+1];//ANSI :UNICODE len/2
	 if(buff==NULL)
	 {
		 m_file.Close();
         MessageBox(TEXT("Not more memory"),TEXT("System error!"),MB_OK|MB_ICONERROR);   
		 //return FALSE;
		 goto exit_init;
	 }
	 uTmp=m_file.Read(buff,len);
	 if(uTmp!=len)
	 {
		 delete[] buff;
         m_file.Close();
         MessageBox(TEXT("read file failed"),TEXT("System error!"),MB_OK|MB_ICONERROR);   
		 //return FALSE;
		 goto exit_init;
	 }
     buff[len]='\0';//NULL;//len/2
	 //
	 m_text_editor.SetWindowText(buff);
	 
	 delete[] buff;
	 m_file.Close();
	 } 
exit_init: 
	 if(m_edit_type==0)//append
	 {
		 SetWindowText(TEXT("Append Text item"));
	 }
	 else if(m_edit_type==1)//insert text
	 {
        SetWindowText(TEXT("Insert Text item"));    
	 }
	 else if(m_edit_type==2)//modify text
	 {
        SetWindowText(TEXT("Modify Text item"));  
	 }
	 else
	 {
		 SetWindowText(TEXT("Text Editor"));
	 }

	UpdateData(FALSE);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CTextEditor::OnNewButton() 
{
	// TODO: Add your control notification handler code here
	CFileDialog filedlg(TRUE,_T("TXT"),NULL,OFN_HIDEREADONLY,TEXT("Text Files(*.txt)|*.txt|All Files(*.*)|*.*||"));
//	filedlg.m_ofn.lpstrInitialDir=_T("\\");  
	if(filedlg.DoModal()==IDOK)
	{
	 m_edit_filename=filedlg.GetPathName();
	
	 m_text_editor.SetWindowText(_T("")); 	 
	 UpdateData(FALSE);
	}
}

void CTextEditor::OnOpenButton() 
{
	// TODO: Add your control notification handler code here
	TCHAR chFilter[]=TEXT("Text Files(*.txt)|*.txt|All Files(*.*)|*.*||");
	CFileDialog filedlg(TRUE,_T("*.TXT"),NULL,OFN_HIDEREADONLY,chFilter);
//	filedlg.m_ofn.lpstrInitialDir=_T("\\");  
	if(filedlg.DoModal()==IDOK)
	{
	 m_edit_filename=filedlg.GetPathName();
	 // READ FILE
	 CFile m_file;
	 if(m_file.Open(m_edit_filename,CFile::modeRead|CFile::shareDenyNone)==0)
	 {
		 MessageBox(TEXT("Open file failed"),TEXT("System error!"),MB_OK|MB_ICONERROR);
		 return;
	 }
	
	 DWORD len;
	 len=m_file.GetLength(); 
	 if(len>=256*1024)
	 {
		 len=256*1024;
	 }
	 TCHAR *buff=new TCHAR[len+1];//256*1024+1];//ANSI
	 if(buff==NULL)
	 {
		 m_file.Close();
         MessageBox(TEXT("Not more memory"),TEXT("System error!"),MB_OK|MB_ICONERROR);   
		 return;
	 }
	 DWORD uTmp=m_file.Read(buff,len);
	 if(uTmp!=len)
	 {
		 delete[] buff;
         m_file.Close();
         MessageBox(TEXT("read file failed"),TEXT("System error!"),MB_OK|MB_ICONERROR);   
		 return;
	 }
     buff[len]=NULL;//len/2
	 //
	 m_text_editor.SetWindowText(buff);
	 
	 delete[] buff;
	 m_file.Close();
	  
	 UpdateData(FALSE);
	}
}

void CTextEditor::OnSaveButton() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	//1.save file and save 
	//wcscpy(m_cur_data.filename,m_edit_filename); 
	TCHAR *buff=new TCHAR[256*1024+1];
	 if(buff==NULL)
	 {
		 AfxMessageBox(TEXT("Not More Memory !!!"));
		 return;
	 }
	 CString str;
     m_text_editor.GetWindowText(str); 
	 _tcscpy(buff,str);
    
	if(m_edit_filename!=_T(""))
	{
     	
	 // READ FILE
	 CFile m_file;
	 if(m_file.Open(m_edit_filename,CFile::modeCreate|CFile::modeWrite|CFile::shareDenyNone)==0)
	 {
		 delete [] buff;
		 MessageBox(TEXT("save file failed"),TEXT("System error!"),MB_OK|MB_ICONERROR);
		 return;
	 }
	 //
	 //m_file.SetLength(0);
	 m_file.Write(buff,str.GetLength()); //str.GetLength()*2
	 m_file.Close();	
	 
	}
    delete[] buff;
}

void CTextEditor::OnSaveasButton() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	TCHAR *buff=new TCHAR[256*1024+1];
	if(buff==NULL)
	 {
		 AfxMessageBox(TEXT("Not More Memory !!!"));
		 return;
	 }
	 CString str;
     m_text_editor.GetWindowText(str); 
	 _tcscpy(buff,str);//
	TCHAR chFilter[]=TEXT("Text Files(*.txt)|*.txt|All Files(*.*)|*.*||");
    CFileDialog filedlg(FALSE,_T("TXT"),NULL,OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY,chFilter);
	//filedlg.m_ofn.lpstrInitialDir=_T("\\"); 
	if(filedlg.DoModal()==IDOK)
	{
     
	 m_edit_filename=filedlg.GetPathName();
	 // READ FILE
	 CFile m_file;
	 if(m_file.Open(m_edit_filename,CFile::modeCreate|CFile::modeWrite|CFile::shareDenyNone )==0)
	 {
		 delete [] buff;
		 MessageBox(TEXT("save as file failed"),TEXT("System error!"),MB_OK|MB_ICONERROR);
		 return;
	 }
	 //
	// m_file.SetLength(0);
	 m_file.Write(buff,str.GetLength()); //str.GetLength()*2
	 m_file.Close();
	 
	// this->SetWindowText(filedlg.GetFileTitle()); 
	 UpdateData(FALSE);
	}
	delete[] buff;
}

void CTextEditor::OnSetfcButton() 
{
	// TODO: Add your control notification handler code here
	CColorDialog dlg(m_fc_static.m_bkcolor, CC_FULLOPEN);
    if(dlg.DoModal()==IDOK)
	{
		 
		 m_fc_static.SetBkColor(dlg.GetColor()); 
	}
}

void CTextEditor::OnSetbcButton() 
{
	// TODO: Add your control notification handler code here
	CColorDialog dlg(m_bc_static.m_bkcolor, CC_FULLOPEN);
    if(dlg.DoModal()==IDOK)
	{
		
		m_bc_static.SetBkColor(dlg.GetColor()); 
	}
}

void CTextEditor::OnCancelButton() 
{
	// TODO: Add your control notification handler code here
	EndDialog(1);
}

void CTextEditor::OnOkButton() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	//1.save file and save 
	_tcscpy(m_cur_data.filename,m_edit_filename); 
    //2.SAVE text property....
	m_cur_data.tp.m_text_font_name=m_fontlist_combobox.GetCurSel();
	m_cur_data.tp.m_text_font_width=m_fontwidth;
	m_cur_data.tp.m_text_font_height =m_fontheight;
	m_cur_data.tp.m_text_fc_color=m_fc_static.m_bkcolor; 
	m_cur_data.tp.m_text_bc_color=m_bc_static.m_bkcolor;

	m_cur_data.tp.startx=m_startx;
	m_cur_data.tp.starty=m_starty;
	if(m_auto_return)
	m_cur_data.tp.return_flag=1; 
	else
    m_cur_data.tp.return_flag=0; 

	EndDialog(0);
}

⌨️ 快捷键说明

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