|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
# include <windows.h>
# define BUFFER (x, y) * (pBuffer + y * cxBuffer + x)
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("Typer");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wndclass.hInstance = hInstance;
wndclass.lpfnWndProc = WndProc;
wndclass.lpszClassName = szAppName;
wndclass.lpszMenuName = NULL;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR);
return 0;
}
hwnd = CreateWindow (szAppName, TEXT ("Typing Program"), WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL);
ShowWindow (hwnd, iCmdShow);
UpdateWindow (hwnd);
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static DWORD dwCharSet = DEFAULT_CHARSET;
static int cxChar, cyChar, cxClient, cyClient,
cxBuffer, cyBuffer, xCaret, yCaret;
static TCHAR * pBuffer = NULL;
HDC hdc;
int x, y, i;
PAINTSTRUCT ps;
TEXTMETRIC tm;
switch (message)
{
case WM_INPUTLANGCHANGE:
dwCharSet = wParam;
case WM_CREATE:
hdc = GetDC (hwnd);
SelectObject (hdc, CreateFont (0, 0, 0, 0, 0, 0, 0, 0,
dwCharSet, 0, 0, 0, FIXED_PITCH, NULL));
GetTextMetrics (hdc, &tm);
cxChar = tm.tmAveCharWidth;
cyChar = tm.tmHeight;
DeleteObject (SelectObject (hdc, GetStockObject (SYSTEM_FONT)));
ReleaseDC (hwnd, hdc);
case WM_SIZE:
if (message == WM_SIZE)
{
cxClient = LOWORD (lParam);
cyClient = HIWORD (lParam);
}
cxBuffer = max (1, cxClient / cxChar);
cyBuffer = max (1, cyClient / cyChar);
if (pBuffer != NULL)
free (pBuffer);
pBuffer = (TCHAR *) malloc (cxBuffer * cyBuffer * sizeof (TCHAR));
for (y=0; y < cyBuffer; x++)
for (x=0; x <cxBuffer; x++)
BUFFER (x, y) = ' ';
xCaret = 0;
yCaret = 0;
if (hwnd == GetFocus ())
SetCaretPos (xCaret * cxChar, yCaret * cyChar);
InvalidateRect (hwnd, NULL,TRUE);
case WM_SETFOCUS:
CreateCaret (hwnd, NULL, cxChar, cyChar);
SetCaretPos (xCaret * cxChar, yCaret * cyChar);
ShowCaret (hwnd);
return 0;
case WM_KILLFOCUS:
HideCaret (hwnd);
DestroyCaret ();
return 0;
case WM_KEYDOWN:
switch (wParam)
{
case VK_HOME:
xCaret = 0;
break;
case VK_END:
xCaret = cxBuffer - 1;
break;
case VK_PRIOR:
yCaret = 0;
break;
case VK_NEXT:
yCaret = cyBuffer - 1;
break;
case VK_LEFT:
xCaret = max (xCaret - 1, 0);
break;
case VK_RIGHT:
xCaret = min (xCaret + 1, cxBuffer - 1);
break;
case VK_UP:
yCaret = max (yCaret - 1, 0);
break;
case VK_DOWN:
yCaret = min (yCaret + 1, cyBuffer - 1);
break;
case VK_DELETE:
for (x = xCaret; x < cxBuffer - 1; x++)
BUFFER (x, yCaret) = BUFFER (x + 1, yCaret);
BUFFER (cxBuffer - 1, yCaret) = ' ';
HideCaret (hwnd);
hdc = GetDC (hwnd);
SelectObject (hdc, CreateFont (0, 0, 0, 0, 0, 0, 0, 0,
dwCharSet, 0, 0, 0, FIXED_PITCH, NULL));
TextOut (hdc, xCaret, yCaret * cyChar, & BUFFER (xCaret, yCaret), cxBuffer - xCaret);
DeleteObject (SelectObject (hdc, GetStockObject (SYSTEM_FONT)));
ReleaseDC (hwnd, hdc);
ShowCaret (hwnd);
break;
}
case WM_CHAR:
for (i=0; i < (int) LOWORD (lParam); i++)
{
switch (wParam)
{
case '\b':
if (xCaret > 0)
{
xCaret --;
SendMessage (hwnd, WM_KEYDOWN, VK_DELETE, i);
}
break;
case '\t':
do
{
SendMessage (hwnd, WM_CHAR, ' ', i);
}
while (xCaret % 8 != 0);
break;
case '\n':
if (++yCaret == cyBuffer)
yCaret = 0;
break;
case '\r':
xCaret = 0;
if (++yCaret == cyBuffer)
yCaret = 0;
break;
case '\x1B':
for (y=0; y < cyBuffer; y++)
for (x=0; x < cxBuffer; x++)
BUFFER (x, y) = ' ';
xCaret = 0;
yCaret = 0;
InvalidateRect (hwnd, NULL, FALSE);
break;
default:
BUFFER (xCaret, yCaret) = (TCHAR) wParam;
HideCaret (hwnd);
hdc = GetDC (hwnd);
SelectObject (hdc, CreateFont (0, 0, 0, 0, 0, 0, 0, 0,
dwCharSet, 0, 0, 0, FIXED_PITCH, NULL));
TextOut (hdc, xCaret * cxChar, yCaret * cyChar,
& BUFFER (xCaret, yCaret), 1);
DeleteObject (SelectObject (hdc, GetStockObject (SYSTEM_FONT)));
ReleaseDC (hwnd, hdc);
ShowCaret (hwnd);
if (++xCaret == cxBuffer)
{
xCaret = 0;
if (++yCaret == cyBuffer)
yCaret = 0;
}
break;
}
}
SetCaretPos (xCaret * cxChar, yCaret * cyChar);
return 0;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps);
SelectObject (hdc, CreateFont (0, 0, 0, 0, 0, 0, 0, 0,
dwCharSet, 0, 0, 0, FIXED_PITCH, NULL));
for (y=0; y < cyBuffer; y++)
TextOut (hdc, 0, y * cyChar, & BUFFER (0, y), cxBuffer);
DeleteObject (SelectObject (hdc, GetStockObject (SYSTEM_FONT)));
EndPaint (hwnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage (0);
return 0;
}
return DefWindowProc (hwnd, message, wParam, lParam);
}
--------------------Configuration: TYPER - Win32 Debug--------------------
Compiling...
TYPER.CPP
D:\Program Files\Microsoft Visual Studio\MyProjects\TYPER\TYPER.CPP(93) : error C2064: term does not evaluate to a function
D:\Program Files\Microsoft Visual Studio\MyProjects\TYPER\TYPER.CPP(150) : error C2064: term does not evaluate to a function
D:\Program Files\Microsoft Visual Studio\MyProjects\TYPER\TYPER.CPP(150) : error C2064: term does not evaluate to a function
D:\Program Files\Microsoft Visual Studio\MyProjects\TYPER\TYPER.CPP(152) : error C2064: term does not evaluate to a function
D:\Program Files\Microsoft Visual Studio\MyProjects\TYPER\TYPER.CPP(161) : error C2064: term does not evaluate to a function
D:\Program Files\Microsoft Visual Studio\MyProjects\TYPER\TYPER.CPP(206) : error C2064: term does not evaluate to a function
D:\Program Files\Microsoft Visual Studio\MyProjects\TYPER\TYPER.CPP(216) : error C2064: term does not evaluate to a function
D:\Program Files\Microsoft Visual Studio\MyProjects\TYPER\TYPER.CPP(225) : error C2064: term does not evaluate to a function
D:\Program Files\Microsoft Visual Studio\MyProjects\TYPER\TYPER.CPP(252) : error C2064: term does not evaluate to a function
执行 cl.exe 时出错.
TYPER.OBJ - 1 error(s), 0 warning(s)
大家好,新手自己看不懂这个错误提示的意思。请高手帮忙指点一下,非常感谢。 |
|