窗口设置最顶端,全屏

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

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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值