LRESULT CALLBACK WindowProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
)
{
 int i=0,i2=0;
     HDC         hdc ;//设备句柄
     PAINTSTRUCT ps ;//数据结构
     RECT        rect ;//数据结构
     char buff[50];
switch  (uMsg)
{
case WM_CREATE:
 break;
case WM_PAINT:
 break;  
    case WM_KEYDOWN:
     SetRect(&rect,0,0,500,30);
            
 InvalidateRect(hwnd,&rect,true);
 hdc=BeginPaint(hwnd,&ps);
         TextOut(hdc,0,0,buff,sprintf(buff,"%c 按钮被按下 KEYDOWN事件",LOWORD(wParam)));
         EndPaint(hwnd,&ps);
 break;
//为什么我改成 SetRect(&rect,0,30,500,30);
//且改TextOut(hdc,0,30,buff,sprintf(buff,"%c 按钮被按下 KEYDOWN事件",LOWORD(wParam)));
//就显示不出字符了呢    case WM_KEYUP:
 SetRect(&rect,0,0,500,30);
 InvalidateRect(hwnd,&rect,true);
 hdc=BeginPaint(hwnd,&ps);
         TextOut(hdc,0,0,buff,sprintf(buff,"%c 按钮被释放 KEYUP事件",LOWORD(wParam)));
         EndPaint(hwnd,&ps);
    break;
case WM_SYSKEYDOWN:
 break;
case WM_SYSKEYUP:
 break;
    case WM_DESTROY:
 PostQuitMessage (0) ;
         return 0 ;
}
return DefWindowProc(hwnd,uMsg,wParam,lParam);

}
======================
改了以后没法显示了 怎么改才能显示这样的字符呢
我仅仅是想在下面一点显示

解决方案 »

  1.   

    朋友 你有没又搞错?
    同样的只是换个坐标就可以显示呀
    SetRect(&rect,0,0,500,30);能够显示
    那又怎么样解释?
      

  2.   

    靠,看看解释SetRect(
      LPRECT lprc, // rectangle
      int xLeft,   // left side
      int yTop,    // top side
      int xRight,  // right side
      int yBottom  // bottom side
    );top side = bottom side,这还是Rect吗?????
      

  3.   

    看楼上的。
    SetRect(&rect,0,30,500,30),这好象连线都不是呀,什么也没有呀,没有区域往哪显示呀。
      

  4.   

    SetRect(&rect,0,30,500,30);有问题