我凭想象这样写的,可是不行bool MouseDown;case WM_LBUTTONDOWN:
     MouseDown=true;
     break;case WM_LBUTTONUP:
     MouseDown=false;
     break;case WM_MOUSEMOVE:
     if(MouseDown)
      {
          SetPixel(hdc,LOWORD(lParam),HIWORD(lParam),RGB(0,0,0));
      }
      break;可是结果却不是我想要的,我希望实现画笔中那样的画线功能,改如何写消息处理呢?

解决方案 »

  1.   

    你需要在WM_LBUTTONDOWN时记下起点。在WM_MOUSEMOVE/WM_LBUTTONUP中设置终点,在WM_PAINT用MoveTo/LineTo绘线。
      

  2.   

    我要的效果是,点下鼠标就绘一个点,鼠标不松开的情况下,移动到那里就画线到那里,跟Wiondos画笔中的铅笔工具效果是一样的!
      

  3.   

    需要记录上次鼠标的位置
    然后LineTo
      

  4.   

    1、画线的话不要用 SetPixel(hdc,LOWORD(lParam),HIWORD(lParam),RGB(0,0,0));
    而要用LineTo来画线2、判断鼠标是否按下有一个更好的办法: SetCapture(),这样当鼠标移出窗口再移回来你一样可以知道鼠标是按下的或者松开的
      

  5.   

    用LineTo,不过每次都要擦除上次的画线
      

  6.   

    bool MouseDown;case WM_LBUTTONDOWN:
         MouseDown=true;
         //记录鼠标位置A
         break;case WM_LBUTTONUP:
         MouseDown=false;
         break;case WM_MOUSEMOVE:
         if(MouseDown)
          {
              //取得鼠标位置B
              //保存B为C
              //用背景色画线LineTo(A,C)
              //用前景色画线lineto(A,B)
              SetPixel(hdc,LOWORD(lParam),HIWORD(lParam),RGB(0,0,0));
          }
          break;