我在窗口过程中对WM_KEYDOWN消息进行响应,希望当按下一个键时能够在窗体上显示该键的码,但总是无法即时显示,非要我改变窗口大小才能够显示出来,不知道为什么?
char a[30];
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch (message)
{
case WM_CREATE:
return 0 ;
case WM_KEYDOWN:
_itoa(wParam,a,16);
SendMessage(hwnd,WM_PAINT,0,0);
return 0;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
GetClientRect (hwnd, &rect) ;
DrawText (hdc, a, -1, &rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ; }
return DefWindowProc(hwnd,message,wParam,lParam);
}
char a[30];
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch (message)
{
case WM_CREATE:
return 0 ;
case WM_KEYDOWN:
_itoa(wParam,a,16);
SendMessage(hwnd,WM_PAINT,0,0);
return 0;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
GetClientRect (hwnd, &rect) ;
DrawText (hdc, a, -1, &rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ; }
return DefWindowProc(hwnd,message,wParam,lParam);
}
用InvalidateRect(hwnd, NULL, TRUE);替换
SendMessage(hwnd,WM_PAINT,0,0);让InvaliedateRect调用屏幕刷新才对~~