zoukankan      html  css  js  c++  java
  • 窗口设置最顶端,全屏

    使窗口设置为最大化,最顶层

    int cxScreen,cyScreen;

    cxScreen=GetSystemMetrics(SM_CXSCREEN);//获得屏幕的宽度

    cyScreen=GetSystemMetrics(SM_CYSCREEN);//获得屏幕的高度

        SetWindowPos(&wndTopMost,0,0,cxScreen,cyScreen,SWP_SHOWWINDOW);//设置窗口为最顶层

    设置窗口为最顶层,不可移动和改变尺寸

    AfxGetMainWnd()->SetWindowPos(&CWnd::wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

    多文档的全屏显示与退出

    1.       在CMainFrame类中新增一下三个成员变量

    WINDOWPLACEMENT m_OldWndPlacement; //用来保存原窗口位置

    BOOL m_bFullScreen;//全屏显示标志

          CRect m_FullScreenRect; //表示全屏显示时的窗口位置

    2.       增加一个‘全屏显示’菜单项,用于消息响应。点击时,即全屏显示;编辑消息响应处理函数:(消息响应函数在CMainFrame中)

         GetWindowPlacement(&m_OldWndPlacement);//获取窗口位置

         CRect WindowRect;

         GetWindowRect(&WindowRect);//获取窗口大小

         CRect ClientRect;

         RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposQuery, &ClientRect);//获取控制条窗口的大小

         ClientToScreen(&ClientRect);//转换为屏幕坐标

         //获取屏幕的分辨率

         int nFullWidth=GetSystemMetrics(SM_CXSCREEN);

         int nFullHeight=GetSystemMetrics(SM_CYSCREEN);

         //将除控制条外的客户区全屏显示到从(0,0)到(nFullWidth, nFullHeight)区域, 将(0,0)和(nFullWidth, nFullHeight)两个点外扩充原窗口和除控制条之外的客户区位置间的差值, 就得到全屏显示的窗口位置

         m_FullScreenRect.left=WindowRect.left-ClientRect.left;

         m_FullScreenRect.top=WindowRect.top-ClientRect.top;

         m_FullScreenRect.right=WindowRect.right-ClientRect.right+nFullWidth;

         m_FullScreenRect.bottom=WindowRect.bottom-ClientRect.bottom+nFullHeight;

         m_bFullScreen=TRUE; //设置全屏显示标志为 TRUE

         //进入全屏显示状态

         WINDOWPLACEMENT wndpl;

         wndpl.length=sizeof(WINDOWPLACEMENT);

         wndpl.flags=0;

         wndpl.showCmd=SW_SHOWNORMAL;

         wndpl.rcNormalPosition=m_FullScreenRect;

         SetWindowPlacement(&wndpl);

    3.       为CMainFrame类增加WM_GETMINMAXINFO消息,编辑代码如下:

    if(m_bFullScreen)

    {

               //全屏显示的大小

               lpMMI->ptMaxSize.x=m_FullScreenRect.Width();

               lpMMI->ptMaxSize.y=m_FullScreenRect.Height();

               //全屏显示的位置

               lpMMI->ptMaxPosition.x=m_FullScreenRect.Width();

               lpMMI->ptMaxPosition.y=m_FullScreenRect.Height();

               //最大的Track尺寸也要改变

               lpMMI->ptMaxTrackSize.x=m_FullScreenRect.Width();

               lpMMI->ptMaxTrackSize.y=m_FullScreenRect.Height();

    }

        CFrameWnd::OnGetMinMaxInfo(lpMMI);

    4.       为CMainFrame增加成员函数,退出全屏EndFullScreen();

    if(m_bFullScreen)

    {

               //退出全屏显示, 恢复原窗口显示

               ShowWindow(SW_HIDE);

               SetWindowPlacement(&m_OldWndPlacement);

         }

    5.       在CxxxxView类中,增加WM_KEYDOWN消息响应函数;当用户按下Esc键时,退出全屏

     

    void CXXXXXXXView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)

    {

    // TODO: Add your message handler code here and/or call default

    if(nChar==VK_ESCAPE)//如果按的键为Esc键

    {

               //获取主框架窗口的指针

               CMainFrame *pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;

               //调用主窗口类的自定义函数 EndFullScreen ,退出全屏显示状态

               pFrame->EndFullScreen();

    }

    CView::OnKeyDown(nChar, nRepCnt, nFlags);

    }

  • 相关阅读:
    golang模板语法
    大白话讲解如何给github上项目贡献代码
    markdown 语法汇总
    小程序开发遇到的一些坑
    Python打包上传
    Python虚拟环境设置
    Python 多版本共存之pyenv
    Python读取指定目录下指定后缀文件并保存为docx
    Ubuntu下的OpenResty 安装
    禁止apache显示目录索引的常见方法(apache禁止列目录)
  • 原文地址:https://www.cnblogs.com/lidabo/p/3501352.html
Copyright © 2011-2022 走看看