程序可以运行,但按“上下左右”键的时候却不改变变量大小,为什么?主要的内容我加了粗体。(我是新手没编过几次程序,请各位指教)
以下是我编写的代码
#include<windows.h>
#include<stdio.h>LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
static TCHAR szClassName[]=TEXT("ClassName");
static TCHAR szTitleName[]=TEXT("Title");
WNDCLASS wndclass;
HWND hWnd;
MSG msg; wndclass.style=CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=szClassName;
if(!RegisterClass(&wndclass))
{
return FALSE;
} hWnd=CreateWindow(szClassName,szTitleName,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
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)
{
HDC hDC;
PAINTSTRUCT ps;

UINT Left=0,Up=0,Right=0,Down=0,x;
TCHAR str[200];
x=sprintf(str,"%d,%d,%d,%d",Left,Up,Right,Down);
switch(message)
{
case WM_PAINT:
hDC=BeginPaint(hWnd,&ps);
SelectObject(hDC,hbrush);
TextOut(hDC,0,100,str,x);
SelectObject(hDC,(HBRUSH)GetStockObject(WHITE_BRUSH));
EndPaint(hWnd,&ps);
return 0;
case WM_KEYDOWN:
switch(wParam)
{
case VK_LEFT:
Left++;
InvalidateRect(hWnd,NULL,1);
break;
case VK_RIGHT:
Right++;
InvalidateRect(hWnd,NULL,1);
break;
case VK_UP:
Up++;
InvalidateRect(hWnd,NULL,1);
break;
case VK_DOWN:
Down++;
InvalidateRect(hWnd,NULL,1);
break;
}
return 0;
case WM_KEYUP:
return 0; case WM_DESTROY:
DeleteObject(hbrush);
PostQuitMessage(0);
return 0;
default :
return DefWindowProc(hWnd,message,wParam,lParam);
}
}