1. 程式人生 > >VC++MFC做文字編輯器(單文件模式)

VC++MFC做文字編輯器(單文件模式)

1,首先新建一個工程,選擇MFC AppWizard(exe),定名字為:textview_1,程式型別選擇單個文件,其他均預設完成。 
2,在系統自動生成的CTextview_1Doc類裡面增加一個控制元件,用於文字文件的暫時存放: 
class CTextview_1Doc : public CDocument 

...... 
public: 
CStringArray m_strContent; 

然後在CTextview_1Doc類的Serialize函式裡面增加開啟、儲存文字檔案的程式: 
void CTextview_1Doc::Serialize(CArchive& ar) 

CString str; 
if (ar.IsStoring()) 

   // TODO: add storing code here 
   int nLines = (int)m_strContent.GetSize(); 
   for ( int i=0; i<nLines; i++ ) 
   { 
    str = m_strContent.GetAt( i ); 
    ar.WriteString( str ); // 將字串集合類物件中文字儲存到硬碟 
   } 

else 

   // TODO: add loading code here 
   while ( ar.ReadString( str ) ) 
   { 
    m_strContent.Add( str ); // 將行文字新增到字串集合類物件中 
   } 


然後滑鼠在CTextview_1Doc 上點選右鍵,在彈出選單裡面選擇:Add Virtual Function,在彈出的視窗中選中DeleteContents,點選“新增和編輯”按鈕。在生成的程式中新增以下程式碼: 
void CTextview_1Doc::DeleteContents() 

// TODO: Add your specialized code here and/or call the base class 
m_strContent.RemoveAll();   // 清除集合類物件中的內容 

CDocument::DeleteContents(); 


3,在系統自動生成的CTextview_1View類裡面增加一個編輯器的控制元件指標成員,用於在介面中生成文字編輯器: 
class CTextview_1View : public CView 

...... 
public: 
CEdit* m_ctrlEdit; 

該指標成員在類建立時要設定初始化值為NULL,否則執行起來就會出錯,如下: 
CTextview_1View::CTextview_1View() 
: m_ctrlEdit(NULL)   //新增這一行初始化程式碼 

// TODO: add construction code here 


用第2點介紹的類似步驟,為CTextview_1View類重寫其OnInitialUpdate函式,新增內容如下: 
void CTextview_1View::OnInitialUpdate() 

CView::OnInitialUpdate(); 

// TODO: Add your specialized code here and/or call the base class 
CRect rcClient; 
GetClientRect( rcClient );     // 獲取當前檢視的客戶區大小 
// if ( m_ctrlEdit ) delete m_ctrlEdit; 
m_ctrlEdit = new CEdit(); 
m_ctrlEdit->Create( ES_MULTILINE | WS_CHILD | WS_VISIBLE 
   | WS_HSCROLL | ES_AUTOHSCROLL   // 自動水平滾動 
   | WS_VSCROLL | ES_AUTOVSCROLL ,   // 自動垂直滾動 
   rcClient, this, 201);     // 建立多行編輯控制元件 
CTextview_1Doc* pDoc = GetDocument(); // 獲取與檢視相關聯的文件指標 
// 以下是將文件中的m_strContent內容全部賦給str 
CString str; 
int nLines = (int)pDoc->m_strContent.GetSize(); 
for ( int i=0; i<nLines; i++ ) 

   str = str + pDoc->m_strContent.GetAt( i ); 
   str = str + "\r\n";      // 換行 

m_ctrlEdit->SetTabStops( 16 );    // 設定Tab符大小 
m_ctrlEdit->SetWindowText( str );   // 將文件內容傳給控制元件 


4,現在執行一下,文字編輯器就做好了。 
5,當然,現在的文字編輯器很不好用,因為不能滾動視窗。而且不會隨視窗的大小變化,因此需要增加一些程式碼。滑鼠停在CTextview_1View上點選右鍵,在彈出選單中選擇:Add Window Message Handle,在彈出的視窗中,選擇WM_SIZE訊息,並點選“Add & Edit”按鈕,在生成的函式中新增以下內容: 
void CTextview_1View::OnSize(UINT nType, int cx, int cy) 

CView::OnSize(nType, cx, cy); 

// TODO: Add your message handler code here 
CRect rcClient; 
GetClientRect( rcClient ); 
if ( m_ctrlEdit ) 
   m_ctrlEdit->MoveWindow( rcClient ); // 改變編輯控制元件視窗大小 

6,再執行,一個象模象樣的編輯器生成了。

相關推薦

VC++MFC文字編輯模式

1,首先新建一個工程,選擇MFC AppWizard(exe),定名字為:textview_1,程式型別選擇單個文件,其他均預設完成。  2,在系統自動生成的CTextview_1Doc類裡面增加一個控制元件,用於文字文件的暫時存放:  class CTextview_1Doc : public CDocu

wepy - 與原生有什麽不同模式

color round temp change hang inf app.js image family 小程序采用同文件夾(文件名),統一通過app.json來管理 而vue以及wepy采用的是單文件模式(js、html、css)合並在一起了!

10個免費的javascript富文字編輯jQuery and non-jQuery

http://www.cnblogs.com/ywqu/archive/2009/12/25/1631766.html 祝願園子裡的朋友聖誕節快樂。 本文介紹了10個免費易用富文字編輯器(rich text editors,RTE),其中5個是Jquery外掛,另外5個是非Jquery富文字編輯器 簡介 J

【洛谷 P4008】 [NOI2003]文字編輯 Splay

題目連結 \(Splay\)先練到這吧(好像還有道毒瘤的維護數列誒,算了吧) 記錄下游標的編號,維護就是\(Splay\)基操了。 另外資料有坑,資料是\(Windows\)下生成了,回車是'\n\r',我就被坑了。 #include <cstdio> #include <algorith

文字編輯UEditor的使用

富文字編輯器(UEditor)       在平時開發Java Web專案的時候,往往會使用第三方外掛來幫助我們更快的實現功能。       這裡教大家使用百度開源的富文字編輯器(UEditor)來幫助我們更好的編寫文字。 官網下載地址 這裡下載最新版

Vue專案中使用ueditor富文字編輯

vue專案打包後引入的ueditor富文字編輯器,資源載入不正確 如下圖:一個個解決: 1:ueditor.css ①如果用的是ueditor.all.js,在29336行修改如下: ②如果用的是ueditor.all.mai

SpringBoot整合富文字編輯UEditor

UEditro是一款比較好用的富文字編輯器,所謂的富文字編輯器就是和伺服器互動的資料不是普通的字串檔案,而是一些內容包含比較廣的字串,一般是指的html頁面,目前比較好用的是百度的UEditor,到官方網站下載: http://ueditor.baidu.co

layui富文字編輯提交獲取不到內容

form.verify({ content: function (value) { if (value.length > 500) { return '內容請輸入至多500個字元';

百度富文字編輯ueditor自定義上傳介面路徑

只針對 1.4.3 jsp 版本其他版本估計也差不多,剛開始上傳圖片各種錯誤,又是配路徑又是導jar包啥的,這都不說了,作為一個前端真的不太會玩這些java的東西,剛好同事搞過,把他的搬來用,他的版本很低1.3.6,高了半天上傳上去是自定義的一個資料夾,就存在t

文字編輯php

首先去ueditor的官網下載PHP版本的檔案,網站地址:http://ueditor.baidu.com/website/download.html 然後解壓出來 改名為ueditor 並放到專案檔案中。 前端程式碼: 1、引入ueditor的相關檔案 <script src="ueditor

使用Qt開發文字編輯:標籤頁式實現

Qt中相關的類 標籤頁俗稱Tab頁,Qt提供了QTableWidget用於建立基於Tab頁式的文件。使用QTableWidget,我們可以很方便得新增和刪除Tab、設定和獲取Tab頁上面的文字,設定當前的Tab。 實現 MainWindow類中維護

輕量級web富文字編輯可帶圖片上傳

業務需求: 通過後臺編輯文章和圖片,上傳到前端介面,展示新聞訊息模組。這個時候,需要一款簡潔的編輯器,百度編輯器是最常用的一種,但是功能太過於複雜,而wangEditor - 輕量級web富文字編輯器,配置方便,使用簡單。支援 IE10+ 瀏覽器,值得擁有。 wa

JAVA寫文字編輯

        這一章我們來處理一下JMenuBar裡的item的事件響應,首先從最簡單的item關於開始。        為什麼說這個簡單,因為它需要完成的功能很少,只是出來一個對話方塊或者視窗,然後顯示一個文字。        首先,我們按照執行軟體的順序來寫程式碼,我們

WangEditor富文字編輯圖片上傳

wangEditor基於javascript和css開發的 Web富文字編輯器, 輕量、簡潔、易用、開源免費 效果展示: 一:引入js <script type="text/javascript" src="./js/jquery.min.js"&

JAVA 整合 Ueditor 百度富文字編輯可自定義上傳路徑

開發環境:一個簡單的web專案中,用百度富文字編輯器 ueditor 實現圖片和檔案的上傳(可自定義上傳路徑)需要使用到的2個檔案如下(官網上下載):1,ueditor-1.4.3.3.zip2,ueditor1_4_3_3-utf8-jsp.zip所需jar包:配置完成後,

vim編輯鳥哥私房菜

vim 編輯器官網 http://www.vim.org/一,vi與vim1,為何要學vim?a)所有的 Unix Like 系統都會內建 vi 文書編輯器,其他的文書編輯器則不一定會存在;b)很多個別軟件的編輯接口都會主動呼叫 vi (例如未來會談到的 crontab, visudo, edquota 等指

KindEditor 一款好用的HTML可視化編輯編輯

好用 shu spl 相對 relative -a sda per 我想   KindEditor使用JavaScript編寫,可以無縫的於Java、.NET、PHP、ASP等程序接合。 KindEditor非常適合在CMS、商城、論壇、博客、Wiki、電子郵件等互聯網應用

CSDN新版Markdown編輯Alpha 2.0版使用須知:

感謝大家一直支援CSDN Markdown編輯器,每一次改動和優化,都是努力讓你的寫作體驗變得更好。這次我們更新了以下內容: 1. 我們重構了MD編輯器程式碼,比起以前更穩定,速度也更快; 2. 增加了儲存功能; 3. 支援圖片拖拽上傳; 4. 支援

secureCRT配置vim編輯語法高亮等

" 只在下列檔案型別被偵測到的時候顯示行號,普通文字檔案不顯示 if has("autocmd")    autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby set number    autocmd File

iOS tableView編輯刪除選 多選

viewDidload 新增for (int i = 0; i <_reouseArray.count ; i++) { NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; [dict