以下程序目的是要在鼠标按下时在窗口中画线。为了避免闪烁,使用了双缓冲方式。但是结果确是屏幕上什么都没有。请高手指点一下到底是哪里出了问题。LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
static POINT  pt;
POINT  pt2;
static int  cxClient, cyClient;
static HDC srcbuf,realbuf;
static HBITMAP hbitmap; switch (message) 
{
case WM_COMMAND:
wmId    = LOWORD(wParam); 
wmEvent = HIWORD(wParam); 
// 分析菜单选择:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: 在此添加任意绘图代码...
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_LBUTTONDOWN:  // 左键按下
  pt.x = LOWORD(lParam);
  pt.y = HIWORD(lParam);   return 0;
case WM_MOUSEMOVE:  // 鼠标移动
  pt2.x = LOWORD(lParam);
  pt2.y = HIWORD(lParam);
  if(wParam&MK_LBUTTON){
hdc = GetDC(hWnd);
BitBlt(srcbuf,0,0,cxClient,cyClient,realbuf,0,0,SRCCOPY);
MoveToEx(srcbuf,pt.x,pt.y,NULL);
LineTo(srcbuf,pt2.x,pt2.y);
BitBlt(hdc,0,0,cxClient,cyClient,srcbuf,0,0,SRCCOPY);
DeleteDC(hdc);
  }
 
          return 0;
case WM_LBUTTONUP:
BitBlt(realbuf,0,0,cxClient,cyClient,srcbuf,0,0,SRCCOPY); return 0; case WM_SIZE:
          cxClient = LOWORD(lParam);
  cyClient = HIWORD(lParam);   return 0;
case WM_CREATE:
hdc=GetDC(hWnd);
hbitmap=CreateCompatibleBitmap(hdc,cxClient,cyClient);
srcbuf=CreateCompatibleDC(hdc);
realbuf=CreateCompatibleDC(hdc);
SelectObject(srcbuf,hbitmap);
SelectObject(realbuf,hbitmap);
BitBlt(srcbuf,0,0,cxClient,cyClient,hdc,0,0,SRCCOPY);
BitBlt(realbuf,0,0,cxClient,cyClient,hdc,0,0,SRCCOPY);
DeleteDC(hdc);
return 0; default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}