. 열 표시 선

열 표시선이란 열이 어디쯤 되는지 표시하는 편집 보조선이다. 일정한 폭에 맞추어 강제 개행하고자 할 때 이 선의 도움을 받을 수 있다. 예를 들어 80컬럼에서 행을 강제로 끊고 싶다면 80컬럼 위치에 열 표시선을 표시해놓고 이 위치에서 <Enter>키를 입력하면 된다. ColMark 변수는 열 표시선을 어디쯤 표시할 것인가를 지정하며 0이면 열 표시선을 표시하지 않는다.

가변폭 폰트를 사용할 경우 열 표시선이 지정하는 위치는 정확하지 않으므로 참고 정보로만 사용해야 한다. 열이라는 개념은 문자의 평균폭을 기준으로 계산되는 것이므로 80컬럼까지라도 i 80문자 이상이 들어가며 W 80문자보다 적게 들어갈 것이다. 물론 고정폭 폰트를 사용한다면 정확한 열 표시를 할 수 있다. 열 표시선은 DrawLine에서 출력한다.

 

int CApiEdit::DrawLine(HDC hdc, int Line)

{

     ....

     if ((nShowCurLine==1 || nShowCurLine==2 || nShowCurLine==4) && bCurLine) {

          if (nShowCurLine == 1 || nShowCurLine == 4) {

              SetRect(&lrt,frt.left-1,0,frt.right+1,FontHeight);

          } else {

              SetRect(&lrt,frt.left-1,FontHeight,frt.right+1,FontHeight);

          }

          SetTextColor(hdc,RGB(0,0,0));

          SetBkColor(hdc,GetSysColor(COLOR_WINDOW));

          DrawFocusRect(hdc,&lrt);

     }

 

    if (ColMark != 0) {

        hMarPen=CreatePen(PS_SOLID,1,RGB(128,128,128));

        OldPen=(HPEN)SelectObject(hdc,hMarPen);

        MoveToEx(hdc,frt.left+ColMark*FontWidth-xPos,0,NULL);

        LineTo(hdc,frt.left+ColMark*FontWidth-xPos,LineHeight);

        SelectObject(hdc,OldPen);

        DeletePen(hMarPen);

    }

 

     if (MarginWidth != 0) {

     ....

 

ColMark 0이 아니면 이 위치에 회색의 수직선을 그어 주었다. 편집을 위한 보조선이므로 글자보다는 위에 출력되는 것이 더 좋으며 그래서 모든 텍스트를 출력하고 현재행 표시까지 출력한 후에 열 표시선을 출력하였다. OnPaint에서는 열 표시선을 출력하지 않으므로 문서의 아랫부분까지 열 표시선이 내려가지 않는다.