none
用ondraw画出来的直线怎么用鼠标拖动 RRS feed

全部回复

  • 您需要解决当前鼠标点在直线上,然后刷新重新绘制新直线即可。
    至于如何判断点在直线上请参看:http://blog.csdn.net/happy__888/article/details/526154
    即计算点到直线的距离小于一个指定的值即可认为这个点在直线上。


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年8月19日 0:14
    版主
  • 当鼠标点击没有放开并且移动的时候消息怎么实现? 以前只有单一的click, dubleclick,mouse move消息,可是如果click+mouse move消息怎么实现不知道啊
    2011年8月19日 1:19
  • 设置一个BOOL标记,初始值为FALSE,WM_LBUTTDOWN的时候为TRUE,WM_LBUTTONUP的时候为FALSE,WM_MOUSEMOVE里判断一下该标记的值是否为TRUE,为TRUE的话,再判断当前的点是否在直线上即可
    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    2011年8月19日 4:42
    版主
  • 下面这段代码是扑克牌源代码,哪句是鼠标按下的标志啊?

     case WM_MOUSEMOVE:
       switch(iGameState)
       {
       case GAME_STATE_MENU:
        btLevel1.DetectMouseMove(LOWORD(lParam),HIWORD(lParam));
        btLevel2.DetectMouseMove(LOWORD(lParam),HIWORD(lParam));
        break;
       case GAME_STATE_MAIN:
        //defect01
        if(wParam & MK_LBUTTON)
        {
         gmap.LMOVEproc(LOWORD(lParam),HIWORD(lParam));
        }
        else
        {
         //移动过程中,左键松开
         gmap.ClearCatchPaper();
        }
        btRestart.DetectMouseMove(LOWORD(lParam),HIWORD(lParam));
        btBegin.DetectMouseMove(LOWORD(lParam),HIWORD(lParam));
        break;

       case GAME_STATE_WIN:
        btRestart.DetectMouseMove(LOWORD(lParam),HIWORD(lParam));
        btBegin.DetectMouseMove(LOWORD(lParam),HIWORD(lParam));
        break;
       }
       InvalidateRect(hWnd,NULL,false);
       break;

    2011年8月27日 11:30