private void FormatRange(int aStartDrawItemNo, int aLastItemNo) { int vPrioDrawItemNo = -1, vStartItemNo = -1, vStartOffset = -1; HCParaStyle vParaStyle = null; POINT vPos = new POINT(); FFormatStartDrawItemNo = aStartDrawItemNo; // 获取起始DrawItem的上一个序号及格式化开始位置 if (aStartDrawItemNo > 0) { vPrioDrawItemNo = aStartDrawItemNo - 1; // 上一个最后的DrawItem vStartItemNo = DrawItems[aStartDrawItemNo].ItemNo; vStartOffset = DrawItems[aStartDrawItemNo].CharOffs; vParaStyle = Style.ParaStyles[Items[vStartItemNo].ParaNo]; if (DrawItems[aStartDrawItemNo].LineFirst) { vPos.X = vParaStyle.LeftIndentPix; vPos.Y = DrawItems[vPrioDrawItemNo].Rect.Bottom; } else { vPos.X = DrawItems[vPrioDrawItemNo].Rect.Right; vPos.Y = DrawItems[vPrioDrawItemNo].Rect.Top; } } else // 是第一个 { vPrioDrawItemNo = -1; vStartItemNo = 0; vStartOffset = 1; vParaStyle = Style.ParaStyles[Items[vStartItemNo].ParaNo]; vPos.X = vParaStyle.LeftIndentPix; vPos.Y = 0; } Style.ApplyTempStyle(HCStyle.Null); FormatItemToDrawItems(vStartItemNo, vStartOffset, vParaStyle.LeftIndentPix, FWidth - vParaStyle.RightIndentPix, FWidth, ref vPos, ref vPrioDrawItemNo); for (int i = vStartItemNo + 1; i <= aLastItemNo; i++) // 格式 { if (Items[i].ParaFirst) { vParaStyle = Style.ParaStyles[Items[i].ParaNo]; vPos.X = vParaStyle.LeftIndentPix; } FormatItemToDrawItems(i, 1, vParaStyle.LeftIndentPix, FWidth - vParaStyle.RightIndentPix, FWidth, ref vPos, ref vPrioDrawItemNo); } DrawItems.DeleteFormatMark(); }