当前位置: 代码迷 >> VC >> 好手来帮帮忙
  详细解决方案

好手来帮帮忙

热度:5373   发布时间:2013-02-25 00:00:00.0
高手来帮帮忙
我在客户区实现了一个图像随鼠标移动变色的代码;
void   Ctest1View::OnMouseMove(UINT   nFlags,   CPoint   point)
{
//   TODO:   在此添加消息处理程序代码和/或调用默认值
int   i=point.x;
int   j=point.y;

if((i> 100&&i <700)&&(j> 100&&j <400)){
       
//BYTE   *   p=(BYTE   *)(m_image.GetBits());


for(int   n=0;n <600*300;n++){
bp[n]=(BYTE)((i-100)*255/600);

      }

}
else
return;

Invalidate(FALSE);
UpdateWindow();

CView::OnMouseMove(nFlags,   point);
}
可是当有遮挡窗口时   窗口重绘不了   我已经调用UpdateWindow();了   怎么回事啊
技术说的在OnDraw里面画     可是怎么跟鼠标移动联系起来啊

------解决方案--------------------------------------------------------
你先在C**View类里面添加两变量x,y
用于记录变化着的鼠标的坐标值
在OnMouseMove函数里面不断把鼠标的坐标赋给x,y,即:
void Ctest1View::OnMouseMove(UINT nFlags, CPoint point)
{
if((nFlags & MK_LBUTTON))
{
x = point.x;
y = point.y;

Invalidate();
}

CView::OnMouseMove(nFlags, point);
}
然后把上面绘制的代码写在OnDraw()里面就行啦。。
  相关解决方案