在“CppEditorDlg.h”中添加下面的代碼

void GetRange(int start, int end, char* text);void SaveFile(CArchive& ar);
基於對話框的C++源代碼編輯器製作過程(七)——添加保存功能

在“CppEditorDlg.cpp”中添加下面的代碼

這是GetRange函數

void CCppEditorDlg::GetRange(int start, int end, char * text){TEXTRANGE tr;tr.chrg.cpMin = start;tr.chrg.cpMax = end;tr.lpstrText = (text);m_pScintillaWnd->SendMessage(EM_GETTEXTRANGE, 0, reinterpret_cast<LPARAM>(&tr));}

這是SaveFile函數

const int blockSize = 128 * 1024;void CCppEditorDlg::SaveFile(CArchive & ar){ASSERT_VALID(this);int nDocLength = m_pScintillaWnd->SendMessage(SCI_GETLENGTH);char data[blockSize + 1];int lengthDoc = m_pScintillaWnd->SendMessage(SCI_GETLENGTH);for (int i = 0; i < lengthDoc; i += blockSize) {int grabSize = lengthDoc - i;if (grabSize > blockSize)grabSize = blockSize;GetRange(i, i + grabSize, data);ar.Write(data, grabSize);}ar.Flush();m_pScintillaWnd->SendMessage(SCI_SETSAVEPOINT);}

如果報了下圖的錯誤,選擇“項目”——》“屬性”,彈出屬性窗口,將“字符集”改爲“使用多字節字符集”

基於對話框的C++源代碼編輯器製作過程(七)——添加保存功能

基於對話框的C++源代碼編輯器製作過程(七)——添加保存功能

爲“CCppEditorDlg”添加“OnSaveFile”函數,打開“類嚮導”,在“命令”裏找到ID爲“ID_SAVEFILE”的命令,添加處理程序。

基於對話框的C++源代碼編輯器製作過程(七)——添加保存功能

在OnSaveFile函數中添加下面的代碼

void CCppEditorDlg::OnSavefile(){// TODO: 在此添加命令處理程序代碼CFileDialog fDlg(FALSE);if (IDOK == fDlg.DoModal()){CFile File(fDlg.GetPathName(), CFile::modeCreate | CFile::modeWrite);CArchive ar(&File, CArchive::store);SaveFile(ar);ar.Close();File.Close();}}

這樣保存功能就實現了。

(未完待續)

查看原文 >>
相關文章