MFC限制鼠标区域、画橡皮条线、任务栏显示图标、核对标记、文档背景色

限制鼠标活动区域
可以写在view类的OnMouseMove中添加如下代码
if (nFlags&&MK_LBUTTON)
{
CWnd *hwnd = GetActiveWindow();
CRect rect;
hwnd->GetWindowRect(&rect);
ClipCursor(&rect);
}
当要恢复鼠标使用范围时调用ClipCursor(NULL);即可。

还有SetCapture()和ReleaseCapture()的使用

 

 

画弹性橡皮线
在view类里响应左键单击,以及鼠标移动和左键弹起消息
鼠标移动
CClientDC dc(this);
dc.SetROP2(R2_NOT);
dc.MoveTo(oldPoint);
dc.LineTo(newPoint);

dc.MoveTo(oldPoint);
dc.LineTo(point);

newPoint = point;
左键按下只需记录坐标点,鼠标弹起只需画线。
当要画其它图形时要麻烦很多,因为在鼠标移动时要用到画刷

画矩形
if (GetCapture()==this&& nFlags && MK_LBUTTON)
{
newPen->CreatePen(PS_DASHDOT,2,RGB(250,0,0));
oldPen = dc.SelectObject(newPen);
newBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
oldBrush = dc.SelectObject(newBrush);

dc.SetROP2(R2_NOT);
dc.Rectangle(oldPoint.x,oldPoint.y,newPoint.x,newPoint.y);
dc.Rectangle(oldPoint.x,oldPoint.y,point.x,point.y);

newPoint = point;
dc.SelectObject(oldBrush); //恢复画笔
dc.SelectObject(oldPen);
}

 

 

为菜单设置核对或者选中标记
主要函数是SetCheck()打钩,SetRadio()点位标记。
在命令菜单中设置变量的值,在命令更新消息中调用pCmdUI->SetCheck(m_option==?);
m_option为当前选中的菜单的标志变量

 

 

设置文档背景颜色
在View类的OnDraw中添加以下代码:
CRect rect;    //创建CRect对象
GetClientRect(rect);    //获取窗口大小
pDC->FillSolidRect(rect,RGB(0,0,0));   //用RGB()来指定文档的背景颜色

发表评论