基於Scintilla開發的MFC多文檔源代碼編輯器CodeEditor(二)

一些功能的實現:

 

1 添加 文件打開對話框:

    在自己的view 類中處理菜單的打開消息:

   

並在CScintillaWnd 類中添加 BOOL   OpenFile ( LPCTSTR   lpFileName ); 函數

(這個方法比較笨,可以直接使用MFC 提供的串行化支持來實現,可以參考我的程序)

2 複製、粘貼、剪切、undo  操作

    view 類中爲相應菜單添加事件處理函數,代碼類似:

m_wndScintilla . SendMessage ( SCI_PASTE ,0,0);

3 跳轉到某一行(對話框)

新建一個對話框資源,

將該對話框關聯一個類 CJumpToLine

View 類中,設置一個 CJumpToLine 對象指針,並在 view 類的 OnCreate 函數中初始化,在析構中銷燬。這樣,在點擊菜單項時,創建 CJumpToLine 窗口,傳遞給它當前文本的總長度。當點擊 JumpToLine 對話框的確定按鈕後,發送消息給 view 類,由 OnDlgNotifyMsg 函數處理(對話框與父窗口間的消息傳遞)

4 )使用自定義的右鍵彈出菜單

CScintillaWnd中對其右鍵單擊消息進行響應

查找和替換對話框是調用view 類的

5 )狀態欄顯示當前行號列號

    在資源的StringTable 中增加一個 IDS_POS ,將其加入 MainFrame static UINT indicators[]  變量中,自己注意位置

修改view 類:在消息映射中添加

ON_UPDATE_COMMAND_UI(IDS_POS, OnUpdateLine) 

聲明並添加函數(注意怎樣獲得狀態欄的指針)也可直接在該函數中用 pCmdUI->SetText(str); 更改顯示

 

要修改顯示時的大小,去MainFrm 中的 OnCreate

         m_wndStatusBar . SetPaneWidth (2,40);

參數爲 indicators 中的序號,和  要設置的寬度

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章