📄 vt100disp.cpp
字号:
case '\x70'://'p'
case '\x72'://'r'
case '\x73'://'s'
case '\x71'://'q'
/*
MoveToEx(hDC,iXpos,iYpos+iHalfHigh,NULL);
LineTo(hDC,iXpos+struScrMsp.iChrWidth,iYpos+iHalfHigh);
*/
arrEndPoint[0].x=iXpos;
arrEndPoint[0].y=iYpos+iHalfHigh;
arrEndPoint[1].x=iXpos+struScrMsp.iChrWidth;
arrEndPoint[1].y=iYpos+iHalfHigh;
Polyline(hDC,arrEndPoint,2);
break;
case '\x78'://'x'
/*
MoveToEx(hDC,iXpos+iHalfWidth,iYpos,NULL);
LineTo(hDC,iXpos+iHalfWidth,iYpos+struScrMsp.iChrHigh);
*/
arrEndPoint[0].x=iXpos+iHalfWidth;
arrEndPoint[0].y=iYpos;
arrEndPoint[1].x=iXpos+iHalfWidth;
arrEndPoint[1].y=iYpos+struScrMsp.iChrHigh;
Polyline(hDC,arrEndPoint,2);
break;
case '\x6e'://+
/*
MoveToEx(hDC,iXpos+iHalfWidth,iYpos,NULL);
LineTo(hDC,iXpos+iHalfWidth,iYpos+struScrMsp.iChrHigh);
MoveToEx(hDC,iXpos,iYpos+iHalfHigh,NULL);
LineTo(hDC,iXpos+struScrMsp.iChrWidth,iYpos+iHalfHigh);
*/
arrEndPoint[0].x=iXpos+iHalfWidth;
arrEndPoint[0].y=iYpos;
arrEndPoint[1].x=iXpos+iHalfWidth;
arrEndPoint[1].y=iYpos+struScrMsp.iChrHigh;
Polyline(hDC,arrEndPoint,2);
arrEndPoint[0].x=iXpos;
arrEndPoint[0].y=iYpos+iHalfHigh;
arrEndPoint[1].x=iXpos+struScrMsp.iChrWidth;
arrEndPoint[1].y=iYpos+iHalfHigh;
Polyline(hDC,arrEndPoint,2);
break;
case '\x74':
/*
MoveToEx(hDC,iXpos+iHalfWidth,iYpos,NULL);
LineTo(hDC,iXpos+iHalfWidth,iYpos+struScrMsp.iChrHigh);
MoveToEx(hDC,iXpos+iHalfWidth,iYpos+iHalfHigh,NULL);
LineTo(hDC,iXpos+struScrMsp.iChrWidth,iYpos+iHalfHigh);
*/
arrEndPoint[0].x=iXpos+iHalfWidth;
arrEndPoint[0].y=iYpos;
arrEndPoint[1].x=iXpos+iHalfWidth;
arrEndPoint[1].y=iYpos+struScrMsp.iChrHigh;
Polyline(hDC,arrEndPoint,2);
arrEndPoint[0].x=iXpos+iHalfWidth;
arrEndPoint[0].y=iYpos+iHalfHigh;
arrEndPoint[1].x=iXpos+struScrMsp.iChrWidth;
arrEndPoint[1].y=iYpos+iHalfHigh;
Polyline(hDC,arrEndPoint,2);
break;
case '\x75':
/*
MoveToEx(hDC,iXpos+iHalfWidth,iYpos,NULL);
LineTo(hDC,iXpos+iHalfWidth,iYpos+struScrMsp.iChrHigh);
MoveToEx(hDC,iXpos,iYpos+iHalfHigh,NULL);
LineTo(hDC,iXpos+iHalfWidth,iYpos+iHalfHigh);
*/
arrEndPoint[0].x=iXpos+iHalfWidth;
arrEndPoint[0].y=iYpos;
arrEndPoint[1].x=iXpos+iHalfWidth;
arrEndPoint[1].y=iYpos+struScrMsp.iChrHigh;
Polyline(hDC,arrEndPoint,2);
arrEndPoint[0].x=iXpos;
arrEndPoint[0].y=iYpos+iHalfHigh;
arrEndPoint[1].x=iXpos+iHalfWidth;
arrEndPoint[1].y=iYpos+iHalfHigh;
Polyline(hDC,arrEndPoint,2);
break;
case '\x76':
/*
MoveToEx(hDC,iXpos+iHalfWidth,iYpos,NULL);
LineTo(hDC,iXpos+iHalfWidth,iYpos+iHalfHigh);
MoveToEx(hDC,iXpos,iYpos+struScrMsp.iChrHigh,NULL);
LineTo(hDC,iXpos+struScrMsp.iChrWidth,iYpos+struScrMsp.iChrHigh);
*/
arrEndPoint[0].x=iXpos+iHalfWidth;
arrEndPoint[0].y=iYpos;
arrEndPoint[1].x=iXpos+iHalfWidth;
arrEndPoint[1].y=iYpos+iHalfHigh;
Polyline(hDC,arrEndPoint,2);
arrEndPoint[0].x=iXpos;
arrEndPoint[0].y=iYpos+iHalfHigh;
arrEndPoint[1].x=iXpos+struScrMsp.iChrWidth;
arrEndPoint[1].y=iYpos+iHalfHigh;
Polyline(hDC,arrEndPoint,2);
break;
case '\x77':
/*
MoveToEx(hDC,iXpos+iHalfWidth,iYpos+iHalfHigh,NULL);
LineTo(hDC,iXpos+iHalfWidth,iYpos+struScrMsp.iChrHigh);
MoveToEx(hDC,iXpos,iYpos+iHalfHigh,NULL);
LineTo(hDC,iXpos+struScrMsp.iChrWidth,iYpos+iHalfHigh);
*/
arrEndPoint[0].x=iXpos+iHalfWidth;
arrEndPoint[0].y=iYpos+iHalfHigh;
arrEndPoint[1].x=iXpos+iHalfWidth;
arrEndPoint[1].y=iYpos+struScrMsp.iChrHigh;
Polyline(hDC,arrEndPoint,2);
arrEndPoint[0].x=iXpos;
arrEndPoint[0].y=iYpos+iHalfHigh;
arrEndPoint[1].x=iXpos+struScrMsp.iChrWidth;
arrEndPoint[1].y=iYpos+iHalfHigh;
Polyline(hDC,arrEndPoint,2);
break;
case '\x61':
Rectangle(hDC,iXpos,iYpos,iXpos+struScrMsp.iChrWidth,iYpos+struScrMsp.iChrHigh);
break;
default:
ExtTextOut(hDC,iXpos,iYpos,ETO_CLIPPED,&TextRect,_T("+"),1,NULL);
// TextOut(hDC,iXpos,iYpos,"+",1);
break;
}
iXpos+=struScrMsp.iChrWidth;
}
break;
default:
return 1;
}
if (iFan==1)
{
SetBkColor(hDC,RGB(0,0,0));
SetTextColor(hDC,RGB(255,255,255)); // 0 255 0
// SetTextColor(hDC,RGB(0,255,0)); //
}
ReleaseDC(hOutWnd,hDC);
return 0;
}
///////////////////////////////////////////////////////////////////////////
//向上滚屏(换行、向下光标)
int ScreenRollUp()
{
int i,j;
int iTopRow,iButtomRow;
int iRow,iNextRow;
if (struScrMsp.iTopRow ==0 && struScrMsp.iButtomRow ==23)//全屏滚动
{
ClearBuf(0,0,0,iWidth-1);
if (struScrMsp.iBaseRow<23)
struScrMsp.iBaseRow++;
else
struScrMsp.iBaseRow=0;
Refresh(0,0,23,iWidth-1);
}
else//局部滚屏
{
iTopRow=struScrMsp.iTopRow ;
iButtomRow=struScrMsp.iButtomRow;
for(i=iTopRow ;i<iButtomRow ;i++)
{
iRow=(i+struScrMsp.iBaseRow)%24;
iNextRow=(iRow+1)%24;
for(j=0;j<iWidth;j++)
{
ScreenBuf[iRow][j].ch =ScreenBuf[iNextRow][j].ch ;
ScreenBuf[iRow][j].iFan =ScreenBuf[iNextRow][j].iFan ;
ScreenBuf[iRow][j].iType =ScreenBuf[iNextRow][j].iType ;
}
}
ClearBuf(iButtomRow ,0,iButtomRow ,iWidth-1);
Refresh(iTopRow ,0,iButtomRow ,iWidth-1);
}
return 0;
}
///////////////////////////////////////////////////////////////////////////
//向下滚屏(向上光标)
int ScreenRollDown()
{
int i,j;
int iTopRow,iButtomRow;
int iRow,iNextRow;
if (struScrMsp.iTopRow ==0 && struScrMsp.iButtomRow ==23)//全屏滚动
{
ClearBuf(23,0,23,iWidth-1);
if (struScrMsp.iBaseRow>0)
struScrMsp.iBaseRow--;
else
struScrMsp.iBaseRow=23;
Refresh(0,0,23,iWidth-1);
}
else//局部滚屏
{
iTopRow=struScrMsp.iTopRow;
iButtomRow=struScrMsp.iButtomRow;
for(i=iButtomRow-1 ;i>=iTopRow ;i--)
{
iRow=(i+struScrMsp.iBaseRow)%24;
iNextRow=(iRow+1)%24;
for(j=0;j<iWidth;j++)
{
ScreenBuf[iNextRow][j].ch =ScreenBuf[iRow][j].ch ;
ScreenBuf[iNextRow][j].iFan =ScreenBuf[iRow][j].iFan ;
ScreenBuf[iNextRow][j].iType =ScreenBuf[iRow][j].iType ;
}
}
ClearBuf(iTopRow ,0,iTopRow ,iWidth-1);
Refresh(iTopRow ,0,iButtomRow ,iWidth-1);
}
return 0;
}
///显示字符串
int Display(char *szTmp)
{
unsigned int i,j;//循环变量
// char szDispBuf[81];//显示缓冲区
int iFan;//显示反向标志
int iType;//显示字符类型
int iCurrRow;//显示的行
int iStartCol,iEndCol;//显示起始列、结束列
// SetCursorHide();
iFan=struCharProp.iDisplay;
iType=struScrMsp.iCharSet;
iCurrRow=struScrMsp.iYPos ;
iStartCol=struScrMsp.iXPos;
iEndCol=struScrMsp.iXPos;
// memset(szDispBuf,0x00,sizeof(szDispBuf));
for (i=0; i<strlen(szTmp); i++)
{
switch (szTmp[i])
{
case '\xff':
break;
case '\x0d'://回车
// ShowText(struScrMsp.iYPos ,iStartCol,iType,iFan,szDispBuf);//显示缓冲区已有字符
Refresh(iCurrRow,iStartCol,iCurrRow,iEndCol-1);
CursorMoveTo(struScrMsp.iYPos ,0);
iCurrRow=struScrMsp.iYPos ;
// memset(szDispBuf,0x00,sizeof(szDispBuf));
iFan=struCharProp.iDisplay;
iType=struScrMsp.iCharSet;
iStartCol=struScrMsp.iXPos;
iEndCol=struScrMsp.iXPos ;
bHz=0;
break;
case '\x0a'://换行
// ShowText(struScrMsp.iYPos ,iStartCol,iType,iFan,szDispBuf);//显示缓冲区已有字符
Refresh(iCurrRow,iStartCol,iCurrRow,iEndCol);
if (struScrMsp.iYPos <struScrMsp.iButtomRow)//光标下移
CursorMoveTo(struScrMsp.iYPos+1,struScrMsp.iXPos );
else//滚屏
ScreenRollUp();
iCurrRow=struScrMsp.iYPos ;
// memset(szDispBuf,0x00,sizeof(szDispBuf));
iFan=struCharProp.iDisplay;
iType=struScrMsp.iCharSet;
iStartCol=struScrMsp.iXPos;
iEndCol=struScrMsp.iXPos ;
bHz=0;
break;
case '\x08'://BackSpace
// ShowText(struScrMsp.iYPos ,iStartCol,iType,iFan,szDispBuf);//显示缓冲区已有字符
Refresh(iCurrRow,iStartCol,iCurrRow,iEndCol);
if (struScrMsp.iXPos>0)
CursorMoveTo(struScrMsp.iYPos ,struScrMsp.iXPos -1);
iCurrRow=struScrMsp.iYPos ;
// memset(szDispBuf,0x00,sizeof(szDispBuf));
iFan=struCharProp.iDisplay;
iType=struScrMsp.iCharSet;
iStartCol=struScrMsp.iXPos;
iEndCol=struScrMsp.iXPos ;
bHz=0;
break;
case '\x09'://Tab
// ShowText(struScrMsp.iYPos ,iStartCol,iType,iFan,szDispBuf);//显示缓冲区已有字符
Refresh(iCurrRow,iStartCol,iCurrRow,iEndCol-1);
j=struScrMsp.iXPos+1;
while (struScrMsp.iArrTab [j]==0 && j<iWidth-1) j++;
CursorMoveTo(struScrMsp.iYPos ,j);
iCurrRow=struScrMsp.iYPos ;
// memset(szDispBuf,0x00,sizeof(szDispBuf));
iFan=struCharProp.iDisplay;
iType=struScrMsp.iCharSet;
iStartCol=struScrMsp.iXPos;
iEndCol=struScrMsp.iXPos ;
bHz=0;
break;
case '\x07'://响铃
// ShowText(struScrMsp.iYPos ,iStartCol,iType,iFan,szDispBuf);//显示缓冲区已有字符
Refresh(iCurrRow,iStartCol,iCurrRow,iEndCol);
CursorMoveTo(struScrMsp.iYPos ,struScrMsp.iXPos);//strlen(szDispBuf));
iCurrRow=struScrMsp.iYPos ;
#ifndef UNICODE
Beep(1000,100);
#endif
// memset(szDispBuf,0x00,sizeof(szDispBuf));
iFan=struCharProp.iDisplay;
iType=struScrMsp.iCharSet;
iStartCol=struScrMsp.iXPos;
iEndCol=struScrMsp.iXPos ;
bHz=0;
break;
case '\x0e'://G1->GL
// ShowText(struScrMsp.iYPos ,iStartCol,iType,iFan,szDispBuf);//显示缓冲区已有字符
Refresh(iCurrRow,iStartCol,iCurrRow,iEndCol);
CursorMoveTo(struScrMsp.iYPos ,struScrMsp.iXPos );//strlen(szDispBuf));
iCurrRow=struScrMsp.iYPos ;
// memset(szDispBuf,0x00,sizeof(szDispBuf));
iFan=struCharProp.iDisplay;
iType=G1;
iStartCol=struScrMsp.iXPos;
iEndCol=struScrMsp.iXPos ;
struScrMsp.iCharSet=G1;
bHz=0;
break;
case '\x0f'://G0->GL
// ShowText(struScrMsp.iYPos ,iStartCol,iType,iFan,szDispBuf);//显示缓冲区已有字符
Refresh(iCurrRow,iStartCol,iCurrRow,iEndCol);
CursorMoveTo(struScrMsp.iYPos ,struScrMsp.iXPos );//strlen(szDispBuf));
iCurrRow=struScrMsp.iYPos ;
// memset(szDispBuf,0x00,sizeof(szDispBuf));
iFan=struCharProp.iDisplay;
iType=G0;
iStartCol=struScrMsp.iXPos;
iEndCol=struScrMsp.iXPos ;
struScrMsp.iCharSet=G0;
bHz=0;
break;
default:
if (szTmp[i]>='\x00' && szTmp[i]<'\x20')
{
bHz=0;
break;
}
if ((szTmp[i]>='\x20' && szTmp[i]!='\x7f' && bHz==0) || (szTmp[i]<'\x40' && szTmp[i]>='\x20'))//普通字符
{
int Row,Col;
Row=(struScrMsp.iYPos+struScrMsp.iBaseRow)%24;
if (struScrMsp.iXPos<iWidth-1)
{
Col=struScrMsp.iXPos++;
iEndCol++;
}
else
Col=struScrMsp.iXPos;
// szDispBuf[strlen(szDispBuf)]=szTmp[i];
ScreenBuf[Row][Col].ch =szTmp[i];
ScreenBuf[Row][Col].iFan =iFan;
ScreenBuf[Row][Col].iType =iType;
ScreenBuf[Row][Col].iULine=struCharProp.iUnderLine;
ScreenBuf[Row][Col].iHighLight=struCharProp.iLight;
bHz=0;
}
else//汉字
{
if (szTmp[i]<0 || bHz==1 )
{
int Row,Col;
Row=(struScrMsp.iYPos+struScrMsp.iBaseRow)%24;
if (struScrMsp.iXPos<iWidth-1)
{
Col=struScrMsp.iXPos++;
iEndCol++;
}
else
Col=struScrMsp.iXPos;
ScreenBuf[Row][Col].ch =szTmp[i];
ScreenBuf[Row][Col].iFan =iFan;
ScreenBuf[Row][Col].iType =1;
ScreenBuf[Row][Col].iULine=struCharProp.iUnderLine;
ScreenBuf[Row][Col].iHighLight=struCharProp.iLight;
if (bHz==1)
bHz=0;
else
bHz=1;
}
}
break;
}
}
// ShowText(struScrMsp.iYPos ,iStartCol,iType,iFan,szDispBuf);//显示缓冲区已有字符
Refresh(iCurrRow,iStartCol,iCurrRow,iEndCol-1);
// MoveTo(struScrMsp.iYPos ,struScrMsp.iXPos +iEndCol-iStartCol);//strlen(szDispBuf));
CursorMoveTo(struScrMsp.iYPos ,struScrMsp.iXPos);
// SetCursorDisplay();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -