现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

MFC实现全屏功能的代码

2013-01-10 22:08 工业·编程 ⁄ 共 1210字 ⁄ 字号 暂无评论

很多的播放器都有快捷键控制窗口以全屏幕的方式显示。给应用程序加上全屏幕的功能,并不需要很多的代码,比如给一个基于对话框的应用程序加上全屏功能只需要以下少量代码就可以工作了。

void CShowDemoDlg::FullScreenView(void)
{
    RECT rectDesktop;
    WINDOWPLACEMENT wpNew;
    if (!IsFullScreen())
    {
        // We'll need these to restore the original state.
        GetWindowPlacement (&m_wpPrev);
        //Adjust RECT to new size of window
        ::GetWindowRect ( ::GetDesktopWindow(), &rectDesktop );
        ::AdjustWindowRectEx(&rectDesktop, GetStyle(), FALSE, GetExStyle());
        // Remember this for OnGetMinMaxInfo()
        m_rcFullScreenRect = rectDesktop;
        wpNew = m_wpPrev;
        wpNew.showCmd = SW_SHOWNORMAL;
        wpNew.rcNormalPosition = rectDesktop;
        m_bFullScreen=true;
    }
    else
    {
        // 退出全屏幕时恢复到原来的窗口状态
        m_bFullScreen=false;
        wpNew = m_wpPrev;
    }
    SetWindowPlacement ( &wpNew );
}

bool CShowDemoDlg::IsFullScreen(void)
{
    // 记录窗口当前是否处于全屏状态
    return m_bFullScreen;
}

void CShowDemoDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    if (IsFullScreen())
    {
        lpMMI->ptMaxSize.y = m_rcFullScreenRect.Height();
        lpMMI->ptMaxTrackSize.y = lpMMI->ptMaxSize.y;
        lpMMI->ptMaxSize.x = m_rcFullScreenRect.Width();
        lpMMI->ptMaxTrackSize.x = lpMMI->ptMaxSize.x;
    }
    CDialogEx::OnGetMinMaxInfo(lpMMI);
}

给我留言

留言无头像?