怎样实现全屏显示(vc)
源代码如下:
void CMainFrame::SetFullScreenMode(BOOL bFullMode) // 全屏显示
{
if(bFullMode == m_bFullScreenMode)// 当前状态已经是全屏或非全屏状态,直接返回
return;
//m_bToolBarWasVisible = (m_wndToolBar.IsWindowVisible() != 0);
//m_wndToolBar.ShowWindow(!bFullMode);
m_bStatisBarWasVisible = (m_wndStatusBar.IsWindowVisible() != 0);
m_wndStatusBar.ShowWindow(!bFullMode);
// 保存窗口位置
if(bFullMode)
GetWindowRect(&m_MainRect);
else
MoveWindow(m_MainRect);
// 移走或添加主窗口的标题
LONG style = ::GetWindowLong(m_hWnd,GWL_STYLE);
if(bFullMode)
style &= ~WS_CAPTION;
else
style |= WS_CAPTION;
::SetWindowLong(m_hWnd,GWL_STYLE,style);
int cxScreen = GetSystemMetrics(SM_CXSCREEN);
int cyScreen = GetSystemMetrics(SM_CYSCREEN);
if(bFullMode)
{ //设置窗口位置
SetWindowPos(NULL,-2,-2,cxScreen,cyScreen,SWP_NOZORDER);
// 保存最初的菜单,并设置菜单为 NULL
ASSERT(m_OrgMenu.GetSafeHmenu() == NULL);
CMenu *pOldMenu = GetMenu();
m_OrgMenu.Attach(pOldMenu->Detach());
SetMenu((CMenu*)NULL);
// 右侧控制面板
m_wndMyBar1.ShowWindow(SW_HIDE);
m_TabCtrl.ShowWindow(SW_HIDE);
}
else
{
ASSERT(m_OrgMenu.GetSafeHmenu() != NULL);
SetMenu(&m_OrgMenu);
m_OrgMenu.Detach();
// 右侧控制面板
m_wndMyBar1.ShowWindow(SW_SHOW);
m_TabCtrl.ShowWindow(SW_SHOW);
}
// 窗口所有控件重排
RecalcLayout();
m_bFullScreenMode = bFullMode;
}
在View中调用
void CNiKoView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
if(nChar == 'F' || nChar == 'f' || nChar == VK_ESCAPE)
{// 全屏显示控制
CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd();
if(nChar == 'F' || nChar == 'f' )
pFrame->SetFullScreenMode(TRUE);
else
pFrame->SetFullScreenMode(FALSE);
}
CView::OnChar(nChar, nRepCnt, nFlags);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)