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);

    }

  • 相关阅读:
    LeetCode 189. Rotate Array
    LeetCode 965. Univalued Binary Tree
    LeetCode 111. Minimum Depth of Binary Tree
    LeetCode 104. Maximum Depth of Binary Tree
    Windows下MySQL的安装与配置
    LeetCode 58. Length of Last Word
    LeetCode 41. First Missing Positive
    LeetCode 283. Move Zeroes
    《蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践》读后感
    删除docker下的镜像
  • 原文地址:https://www.cnblogs.com/lidabo/p/3501352.html
Copyright © 2011-2022 走看看