今天在C/SDK下写了一个WINMAIN()程序,出了点问题,让我有点想不清楚
    问题如下:
     我在WM_CREATE下对RECT进行了初始化,也就是   
                 rect.left=0;
        rect.right=1000;
        rect.bottom=254;
        rect.top=0;
         然后我在WM_PAINT里边用到了一个函数DRAWTEXT(),这个函数里用到了&RECT作为参数,但是我发现,这个RECT的值好像被修改了,为什么???
    后来当我把rect.left=0;
         rect.right=1000;
         rect.bottom=254;
         rect.top=0;
  放在WM_PAINT里边的时候,这个参数值被正确的传递给DRAWTEXT()这个函数,然后得以按我的意图显示文本!
     各位大侠,请指教

解决方案 »

  1.   

    case WM_CREATE:
              hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;          hBitmap1= LoadBitmap (hInstance, TEXT ("black")) ;
              GetObject (hBitmap1, sizeof (BITMAP), &bitmap1) ;
              cxSource = bitmap1.bmWidth ;
              cySource = bitmap1.bmHeight ;   hBitmap2 = LoadBitmap (hInstance, TEXT ("white")) ;   hBitmap3= LoadBitmap (hInstance, TEXT ("longblack")) ;
      GetObject (hBitmap3, sizeof (BITMAP), &bitmap3) ;
              cySourcel = bitmap3.bmHeight ;
      rect.left=0;
          rect.right=1000;
      rect.bottom=800;
      rect.top=0;
    case WM_PAINT:
              hdc = BeginPaint (hwnd, &ps) ;          hdcMem1 = CreateCompatibleDC (hdc) ;
              SelectObject (hdcMem1, hBitmap1) ;
      
             
              hdcMem2 = CreateCompatibleDC (hdc) ;
              SelectObject (hdcMem2, hBitmap2) ;   hdcMem3 = CreateCompatibleDC (hdc) ;
              SelectObject (hdcMem3, hBitmap3) 
               
      DrawText (hdc, TEXT ("13241411"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
                        DeleteDC (hdcMem1) ;
      DeleteDC (hdcMem2) ;
              EndPaint (hwnd, &ps) ;   //ValidateRect(hwnd,NULL);          return 0 ;
      

  2.   

    我自己想了一下,是不是在刚刚生成窗口的时候,客户区都是无效的,然后就把RECT里的值进行了修改。