TextContainer.RefreshLine() 驅動遞迴分行,產生 TextLine 物件集合(Lines 屬性),每行記錄:行距、元素集合、首尾元素、視圖區座標、內容寬度、所屬容器。
Lines,建立參與分行的元素集合(扁平化容器結構)。RefreshLine。TextElement.CanBeLineHead/CanBeLineEnd 虛方法由具體元素實作。需防死循環(容器過窄導致無法放置任何字符)。TextElement.WidthFix。Word 採用此策略,IE 則不修正。WidthFix。Top 使底緣對齊。BoundingBox,不同則加入重繪矩形集合。萬字符文檔分行明顯延遲。優化方向:增量分行(僅重算受影響段落)、背景執行緒預排版、佈局快取與脏標記機制。歡迎高手指教。
TextDocument:頂層文檔物件,提供刪除、複製貼上等高層操作、VBA 介面。Content:管理元素清單(Elements)、插入點(SelectStart)、選取範圍(SelectLength 正負表方向)。AutoClearSelection:按 Shift 時擴展選取,否則清除。選取變更優化:連續選取區間變更最多影響兩個不連續區塊,僅重繪這兩區塊元素。