欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MFC仿播放器中的隐藏弹出toolbar

程序员文章站 2022-05-30 08:35:20
...

现在的播放器中都一个隐藏的toolbar(一般都用来放置播放以及音量调节等常用按键),当鼠标滑到特定区域的时候toolbar出现,离开的时候toolbar隐藏,用MFC来也可以模拟实现一下这种效果

要实现这种效果的话肯定至少需要两个对话框,MFC中对话框有3中style: child, popup,以及overlapped
child可以随父窗口的移动或者放大缩小而改变,当子对话框的属性为popup的时候,这个时候我们要使父子窗口同步变化,就要做一些处理
有两种情况:
- 第一种是父窗口移动的时候,希望子窗口进行移动
- 第二种是父窗口Size发生改变时,希望子窗口进行相应比例的改变
第一种情况需要在onmove中进行处理
第二种情况则需要在onsize中处理

void CWindowsFollowDlg::OnMouseMove(UINT nFlags, CPoint point)
{
    // TODO:  在此添加消息处理程序代码和/或调用默认值
    if (mHotRect.PtInRect(point))
    {
        ShowAllCrtls(TRUE);
    }
    else
    {
        ShowAllCrtls(FALSE);
    }
    CDialog::OnMouseMove(nFlags, point);
}

void CWindowsFollowDlg::OnMove(int x, int y)
{
    CDialog::OnMove(x, y);
    // TODO:  在此处添加消息处理程序代码
    ResizeItem(x, y);
}

实际的效果图如下,鼠标往左滑动出现子窗口,离开子窗口消失,尝试放大缩小父窗口,子窗口跟着改变,拖动父窗口,子窗口也跟着改变

MFC仿播放器中的隐藏弹出toolbar

具体的代码可以参考https://github.com/wirelessdisplay/MFC/tree/master/WindowsFollow

相关标签: MFC popup child