文字处理应用开发详解
1. 区域重绘与页面管理
在文字处理应用中,区域重绘是一个重要的功能。对于每一行文字,首先获取其高度,然后定位第一个字符的位置,创建并添加左侧区域到重绘集合中。同样,定位最后一个字符的位置,创建并添加右侧区域到重绘集合。如果段落为空,会创建一个包含整个段落的区域并添加到重绘集合。
以下是相关代码示例:
int iHeight = line.GetHeight(); CRect rcFirstChar = m_rectArray[iFirstChar]; CRect rcLeftBlock(0, iTotalHeight, rcFirstChar.left, iTotalHeight + iHeight); if (!rcLeftBlock.IsRectEmpty()) { pRepaintSet->Add(rcLeftBlock + szUpperLeft); } int iLastChar = line.GetLastChar(); CRect rcLastChar = m_rectArray[iLastChar]; CRect rcRightBlock(rcLastChar.right, iTotalHeight, PAGE_WIDTH, iTotalHeight + iHeight); if (!rcRightBlock.IsRectEmpty()) { pRepaintSet->Add(rcRightBlock + szUpperLeft); } iTotalHeight += iHeight;