这是一个用鼠标框一个区域的代码片段,是《windows编程》里第七章的blokout1程序里的,如果有这书的朋友可以看看书。
有一个函数如下:
void DrawBoxOutline (HWND hwnd, POINT ptBeg, POINT ptEnd)
{
     HDC hdc ;
     
     hdc = GetDC (hwnd) ;
     
     SetROP2 (hdc, R2_NOT) ;
     SelectObject (hdc, GetStockObject (NULL_BRUSH)) ;
     Rectangle (hdc, ptBeg.x, ptBeg.y, ptEnd.x, ptEnd.y) ;
     
     ReleaseDC (hwnd, hdc) ;
}在消息里调用它:
case WM_MOUSEMOVE :
          if (fBlocking)
          {
               SetCursor (LoadCursor (NULL, IDC_CROSS)) ;    
               
               DrawBoxOutline (hwnd, ptBeg, ptEnd) ;               ptEnd.x = LOWORD (lParam) ;
               ptEnd.y = HIWORD (lParam) ;       DrawBoxOutline (hwnd, ptBeg, ptEnd) ;
          }
          return 0 ;为什么这里DrawBoxOutline要调用两次啊,调用一次也可以筐一个区域,但会花屏。请教为什么?