一、简介
工具:VS2019社区版
项目:拖动没有标题栏的窗体(即鼠标按住窗体空白处拖动)
二、步骤
(一)创建"MFC应用"项目
给项目取个名字,选个路径(根据自己需要设置即可)——>点击“创建”
如果没有特殊要求,“应用程序类型”一般选择“基于对话框”——>点击“完成”
刚创建好的界面是这样的
(二)去掉标题栏
为了效果,我们先把标题栏去掉,鼠标点击一下窗体的空白处,在“属性”窗口中找到“标题栏”,将其值改为“false”
如果找不到“属性”窗口,可在界面最上面一排菜单栏,找到“视图”——>“属性窗口”就可以调出来
(三)代码实现
原本窗体是通过标题栏拖动的,但现在标题栏没有了,所以现在窗体直接运行的话是拖不了窗体的,接下来就需要通过代码来实现拖动窗体。
点击窗体的空白处,在“属性”窗口中先切换到“消息”栏(如下图所示),再找到鼠标移动的消息”WM_MOUSEMOVE“,然后添加鼠标移动事件(鼠标放到右边空白框里点一下,会出现一个下拉选项,点那个下拉选项就会自动创建鼠标移动事件)
然后代码中会看到这一段(这段代码是自动添加的)
接下来,添加具体的事件
代码如下,这里只截取鼠标移动事件的代码
void CMoveFormDemoDlg::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
static CPoint PrePoint = CPoint(0, 0);
if (MK_LBUTTON == nFlags)
{
if (point != PrePoint)
{
CPoint ptTemp = point - PrePoint;
CRect rcWindow;
GetWindowRect(&rcWindow);
rcWindow.OffsetRect(ptTemp.x, ptTemp.y);
MoveWindow(&rcWindow);
return;
}
}
PrePoint = point;
CDialogEx::OnMouseMove(nFlags, point);
}
这样就可以拖动无标题栏的窗体了