- 鼠标消息和鼠标事件
windows中鼠标事件分为三种:单击(按下或释放鼠标)、双击(doublieclick)、拖曳(移动鼠标)
鼠标消息分为两类:客户区鼠标消息、非客户区鼠标消息。
双击鼠标消息是按照顺序产生4个消息
WM_LBUTTONDOWN; //第一次左键按下
WM_LBUTTONUP; //第一次左键释放
WM_LBUTTONDBCLK; //第二次左键按下
WM_LBUTTONUP; //第二次左键释放
按住鼠标左键时移动鼠标画出鼠标轨迹(画出的时一段一段的小虚线)
void CMouseMessageView::OnMouseMove(UNIT nFlags,CPoint point)
{
CClientDC dc(this); //获取设备上下文
if((nFlags&MK_LBUTTON))
{
dc.SetPoxel(point.x,point.y,RGB(100,100,250)); //画出鼠标所点击对应的像素点,RGB显示像素点的颜色
}
CView::OnMouseMove(nFlags,point) //产生对应的消息映射
按下鼠标右键画出连续的实线
void CMouseMessageView::OnMouseMove(UNIT nFlags,CPoint point)
{
CClientDC dc(this);
if((nFlags&MK_RBUTTOON))
{
dc.MoveTo(p0);
dc.LienTo(point.x,point.y);
p0=point; //类似于一个交换算法
}
CView::OnMouseMove(nFlags,point); //产生相应的消息映射
}
//还需在每次移动之前重设起点p0的值
void CMouseMessageView::OnRButtonDown(UNIT nFlags,CPoint point)
{
p0=point;
CView::OnRButtonDown(nFlags,point);
}