请问各位大虾,hdc = GetDC (hwnd) ;和hdc = BeginPaint (hwnd, &ps) ;中取得的hdc究竟是不是有不同?windows程序设计第五版中原话是:
“与从BeginPaint传回设备内容句柄不同,GetDC传回的设备内容句柄具有一个剪取矩形,它等于整个显示区域。可以在显示区域的某一部分绘图,而不只是在无效矩形上绘图(如果确实存在无效矩形)。与BeginPaint不同,GetDC不会使任何无效区域变为有效。如果需要使整个显示区域有效,可以呼叫”这是不是意味着hdc = BeginPaint (hwnd, &ps) ;取得的hdc是针对无效区域的?
我起初也是这样认为的,但有点疑问就是这本书的第一个窗口程序hellowin中处理WM_PAINT消息是这样的:
case   WM_PAINT:
        
            hdc = BeginPaint (hwnd, &ps) ;
        
        
        
            GetClientRect (hwnd, &rect) ;
        
        
        
            DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
        
                   DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
        
                 EndPaint (hwnd, &ps) ;
        
                   return 0 ;
如果  hdc = BeginPaint (hwnd, &ps) ;取得的是无效区域的hdc,而GetClientRect (hwnd, &rect) ;取得的是整个客户区,那岂不是在整个客户区绘图了吗?那么  DrawText 中的hdc和rect不是自相矛盾么?小弟初学vc程序设计,希望各位大哥耐心指导,不胜感激,流泪中。。