ShowCaret(hwnd);
return 0;
case WM_KILLFOCUS :
HideCaret(hwnd);
DestroyCaret();
return 0;
case WM_CHAR :
// user press KEYBOARD
for (i = 0 ; i < (int) LOWORD(lParam) ; i++)
{
switch (wParam)
{
case '\b' : // backspace pressed
if (xCaret > 0)
{
xCaret-- ;
cBuf[xCaret]=' ';
HideCaret(hwnd);
hdc=GetDC(hwnd);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
TextOut(hdc, xCaret * cxChar, yCaret *
cyChar,cBuf+xCaret,1);
ShowCaret(hwnd);
ReleaseDC(hwnd, hdc);
}
break;
case '\r' : // carriage return pressed
if (wFlag==1)
{
InvalidRect(hwnd,
NULL,
TRUE);
wFlag=0;
break;
}
wFlag=1;
cBuf[xCaret]=0;
if (xCaret!=0) {xCaret=0; +;}
READ_CMD(cBuf);
TEST_CMD(hwnd,xCaret, cxChar, yCaret,cyChar);
xCaret=0; =iLine;
if (yCaret >= cyBuffer) InvalidRect(hwnd, NULL, TRUE);
break ;
case '\x1B' : // escape pressed
InvalidRect (hwnd, NULL, TRUE) ;
xCaret=yCaret=0;
break;
default :
// other KEY pressed
cBuf[xCaret]=(char)
wParam;
HideCaret(hwnd);
hdc=GetDC (hwnd);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
TextOut(hdc,xCaret*cxChar,yCaret*cyChar,cBuf+xCaret,1);
ShowCaret(hwnd);
ReleaseDC(hwnd, hdc);
+;
break ;
}
}
SetCaretPos(xCaret*cxChar, yCaret*cyChar);
return 0;
case WM_PAINT :
// clr and show HELP
InvalidRect(hwnd, NULL, TRUE);
hdc=BeginPaint(hwnd, &ps);
26
Содержание OME-PCI-1602
Страница 37: ... Demo Program DEMO9 C 37 ...