Please Enable JavaScript!
Gon[ Enable JavaScript ]

텍스트 화면의 스크롤

C# & MFC

텍스트 화면의 스크롤 

#include 
#include   /* graphics.h 외 conio.h에도 컬러상수가 정의되어 있음 */
#define UP_SCROLL 0x06
#define DOWN_SCROLL 0x07

void scroll(int left, int top, int right, int bottom, int num, int func, int color)
{
   union REGS r;
   
   r.h.ah = func;      /* func 가 0x06이면 위로, 0x07이면 아래로 스크롤된다. */
   r.h.al = num;       /* 스크롤시킬 줄수 */                                          
   r.h.bh = color<<4;   /* 스크롤 된 후의 빈 공간의 색깔 */ 
   r.h.ch = top;       /* 스크롤시킬 화면의 시작 y 좌표 */ 
   r.h.cl = left;      /* 스크롤시킬 화면의 시작 x 좌표 */
   r.h.dh = bottom;    /* 스크롤시킬 화면의 끝 y 좌표 */
   r.h.dl = right;     /* 스크롤시킬 화면의 끝 x 좌표 */
   int86(0x10, &r, &r);
}
이 함수는 텍스트 모드에서 (left, top)-(right, botton) 부분을 상하로 스크롤시키는 함수이다.
여기서 ah 에 기능번호를 넣게 되는데, 쓰기에 편하게 #define문을 써서 UP_SCROLL을 0x06으로,
DOWN_SCROLL을
0x07로 정의하였다.
color 는 스크롤 된 후의 빈 공간의 색을 지정해 주는 것인데, graphics.h / conio.h 에 정의되어 있는
컬러상수를
사용하기 위해서는 컬러상수에 16(==0x10)을 곱해주어야 한다.
이는 왼쪽으로 4비트 이동시켜도 같은 효과를 얻을 수 있다. 0x10을 곱해주어야 하는 이유는 앞의
color() 함수에서 쓰인
색상바이트 구조대로 색을 넣어야 하기 때문이다.
단, 여기서는 배경색만 쓰이고, 전경색은 쓰이지 않으므로 색상바이트의 4비트만 채워주면 된다.

scroll(0, 0, 79, 23, 1, UP_SCROLL, BLACK); 이라고 쓰면 화면전체를 한칸 위로 스크롤시킨다.
set_blink() 함수를 써서 배경색으로 사용되는 색을 16가지로 늘릴 수 있다.

Posted by 녹두장군

댓글을 달아 주세요