窗口设置最顶端,全屏

简介: 使窗口设置为最大化,最顶层 int cxScreen,cyScreen; cxScreen=GetSystemMetrics(SM_CXSCREEN);//获得屏幕的宽度 cyScreen=GetSystemMetrics(SM_CYSCREEN);//获得屏幕的高度     SetWind...

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

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

}

目录
相关文章
|
数据采集 存储 SQL
基于Apache doris的元数据管理系统
什么是元数据?元数据和数据的区别是什么?元数据有什么作用。
1552 0
基于Apache doris的元数据管理系统
|
数据采集 SQL 运维
巧用指标平台DataIndex,五步法轻松实现指标管理
在业务发展初期,企业需要做好规范的指标管理,以保证随着业务的不断发展,数据化决策能够成为业务强有力的支撑。本文将为大家详解如何通过袋鼠云指标管理平台DataIndex 进行规范化的指标开发管理,轻松开发指标,避免各类指标问题。
1454 0
|
SQL NoSQL Java
JAVA使用Apcahe Calcite 解析sql
JAVA使用Apcahe Calcite 解析sql
4176 0
|
数据采集 分布式计算 Hadoop
开源数据质量解决方案——Apache Griffin入门宝典(上)
开源数据质量解决方案——Apache Griffin入门宝典
1820 0
|
SQL druid 搜索推荐
最强最全面的数仓建设规范指南 (一)
本文将全面讲解数仓建设规范,从数据模型规范,到数仓公共规范,数仓各层规范,最后到数仓命名规范,包括表命名,指标字段命名规范等!
13478 2
|
数据采集 存储 分布式计算
一篇文章搞懂数据仓库:数据治理(目的、方法、流程)
一篇文章搞懂数据仓库:数据治理(目的、方法、流程)
27078 2
一篇文章搞懂数据仓库:数据治理(目的、方法、流程)
|
存储 算法 Python
|
架构师
走向思考
走向思考 最近因为工作的原因,好几天没有更新文章了...... 今天下午面试回来(以失败告终),睡了一觉,夜里不困,于是就写了写 说起工作(我指的是软件行业,其他专业也雷同),怎么说呢?只有亲身体会才知道,一个字,难 为什么这么说呢: 亲身经历:平均每天每家公司或企业...
1023 0
|
网络协议 Android开发
I.MX6 HUAWEI MU609 3G porting
/*************************************************************************** * I.MX6 HUAWEI MU609 3G porting * 声明: * 本文主要是记录移植3G模块时,查看的资料与遇到的一些问题, * 使用的解决方法。
1026 0