關於排版的小軟體的實現

2021-04-01 16:26:40 字數 967 閱讀 9065

專案描述可以見8月22日的工作日誌

zhuyie老大對我說,先實現出乙個原形,然後通過不斷的重構來完善軟體。

以下就是要實現的功能和一些細節:

1、  用mfc搭好的框架,實現也基本用mfc+gdiplus

2、  從檔案讀入字元流,應該要有個字元快取(目前的實現是將檔案全部讀入記憶體,用list來儲存),應該在list中儲存字串,長度,最後提供出list的長度和最長字串的長度,以備排版加滾動條用。通過「/n」來決定分行,是否加入行號還要考慮。至於/t的考慮,根據對tab寬度的設計,在讀入字元時判斷,加入幾個空格

3、  根據字型,大小,按行繪製文字,如果超過介面大小,應該加入滾動條(應該考慮滾動條和插入符的位置,不能讓插入符看不見,即滾動條應該隨著插入符而動)。字型使用font類(gdi+),建構函式中可以選擇單位,現在定的單位是unitpoint,1/72英吋,這樣好以後換算成twip,即20twips。字型選擇使用font dialog box。

4、  對鍵盤上下左右移動的相應,按字移動(沒解決的問題就是英文本元和漢字混在一起的時候,就是全形和半形的問題),可以見msdn,在using carets最後乙個例子。根據當前游標的位置,推算出應該操作的字元,才能實現插入和刪除以及回車的動作(把行從list中揪出來處理,考慮好這個模組的設計),在這之後進行重畫(應該有個重畫模組,除了使用clear()函式,是否有重繪一行的函式)

5、  捕捉滑鼠的單擊,這也需要乙個模組,單擊後迅速定位插入符號,放在字前or字後

6、  已開始應該初始化好插入符號,高度要與字型大小相同,並顯示在首行首列

7、  單位轉換模組,點和1/72inch之間的轉換

8、  undo/redo在實現了以上問題後,再做考慮

補充的以後再新增

ps:可以看看

大朱 的一篇文章

關於排版的技巧

下面說乙個有關border的乙個屬性 transparent 透明的 placeholder 文字框顯示 游標在前面 普通的文字框顯示 游標在後面 排版的技巧 1.搞清楚結構層次 2.保證模組化 讓他們之間不能受到影響 排版時記住這兩個問題 1.元素的性質 2.標準流 因脫離標準文件流,父級撐不起高...

部落格中排版的小技巧

寫這篇文章,是我在參加csdn英雄會的時候,聽到大家對部落格的排版感覺很惱火。而我因為曾有解決這方面的經驗,並且理所當然地認為有很多的人有這方面的需求,所以寫出我在寫部落格的時候的簡單方法。方法很簡單,簡單到都不好意思放到部落格上了。這個方法,是在發現從排版良好 包含縮排 的word文章到csdn部...

部落格中排版的小技巧

2007年04月07日 19 12 00 寫這篇文章,是我在參加csdn英雄會的時候,聽到大家對部落格的排版感覺很惱火。而我因為曾有解決這方面的經驗,並且理所當然地認為有很多的人有這方面的需求,所以寫出我在寫部落格的時候的簡單方法。方法很簡單,簡單到都不好意思放到部落格上了。這個方法,是在發現從排版...