我现在有一幅图,要进行处理前需要初始化一些参数,其中就需要用鼠标点击在图上取得若干个点的像素值 ,应该怎么写这段代码呢?

解决方案 »

  1.   

    啊····LBUTTONDOWN,mfc的类向导里有,自己看下吧。
      

  2.   

    很简单,设置一个全局变量bVal,你的WM_LBUTTONDOWN在PrepareTranslateMessage进行处理的时候,先判断下bVal的值再进行相应的响应。不想让他响应的时候,就把bVal弄成false,那就不会响应了,想让它响应的时候再置为true
      

  3.   

    比如我是这样的:
    CXXVIEW::dosomething()
    {1....................//这一段就是我说的鼠标取像素初始化的地方,比如把相应的像素值存到数组a里2.........//这段是我根据a的内容来处理的代码
    }我现在就不知道1这部分怎么写。
      

  4.   

    楼上各位已经说的很清楚了    m_bDoSomething = FALSE;  //初始化
    OnLButtonDown()
    {
         if(m_bDoSomething)
         {
             .......  //GetPixel();
         }
    }CXXVIEW::dosomething() 

        m_bDoSomething = TRUE;  
        1....................//这一段就是我说的鼠标取像素初始化的地方,比如把相应的像素值存到数组a里      m_bDoSomething = FALSE;
         2.........//这段是我根据a的内容来处理的代码 } 
      

  5.   


    //一个全局变量,楼上已经说过的。
    BOOL CXX::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if(::TranslateAccelerator(AfxGetMainWnd()->m_hWnd,g_hAccelTable,pMsg))
    return TRUE;
    if(pMsg->message==WM_LBUTTONDOWN)
    {
    if(全局变量为真)
    //取得象素,把相应的像素值存到数组a里;
    //处理a的代码
    }
    return CFormView::PreTranslateMessage(pMsg);
    }
      

  6.   

    我设想的这个程序过程是这样的:先点了一个菜单项以后 就进入dosomething()里 然后就提示取若干个点(这部分在WM_LBUTTONDOWN里处理了) 取完后再进行2接下去处理。
    如果按照你说的这样 好像不行吧?
      

  7.   

    7楼的biweilun大侠思路都给得很清楚了
      

  8.   

    不好意思 我新手 有些问题自己表述不太清楚。想问的就是可不可能在dosomething里进行鼠标处理函数。就像顺序结构程序一样 在鼠标消息处理完之前 dosomething之后的代码都不会执行。
      

  9.   

    那你只要在WM_LBUTTONDOWN中了你点取的点保存下来就可以了,
    然后GetPixel().
    提示:方法和上面讲的一样,设一个BOOL,在弹出对话框输入需要取得像素点数目后(设为TRUE)才把点保存进来,
    取好后设回FALSE.
      

  10.   

    OnLButtonDown() 

            // 获取像素值,需要判断坐标点是否在图片上
             COLOREFF clr = GetPixel(int x, int y);
    DoSomething(/** 像素值 */)
    } DoSomething(/** 像素值 */) 

    int ncount = GetPixelCount();
    if ( ncount > m_ncount )
    {
    // 处理像素值 // 处理结束后保存结果 // 将像素值数组或者其他保存像素队列清空
    }
    else
    {
    // 保存像素值
    }