MFC创建一个全屏窗口(附源码)

正在学习MFC编程之全屏显示窗口,结合网上的资料,自己写了一个关于全屏窗口的项目。

具体步骤如下:

1、首先在MainFrm.h头文件中定义以下成员变量和成员函数。

protected: 
       WINDOWPLACEMENT  m_OldWndPlacement;
BOOL  m_bFullScreen;
CRect  m_FullScreenRect;


2、增加相应的消息映射函数。

在MainFrm.cpp中,通过创建菜单栏的view子菜单下的“全屏显示”的ID关联消息处理函数OnFullScreen();

函数内容如下

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); 
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;
WINDOWPLACEMENT wndpl; 
wndpl.length=sizeof(WINDOWPLACEMENT); 
wndpl.flags=0; 
wndpl.showCmd=SW_SHOWNORMAL; 
wndpl.rcNormalPosition=m_FullScreenRect; 
SetWindowPlacement(&wndpl);


3、增加消息处理命令WM_GETMINMAXINFO,在重载函数OnGetMinMaxInfo()中编写以下内容。

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


4、全屏窗口后就得有退出全屏窗口的操作才算是完整,下面添加通过按键Esc退出全屏的函数。

需要在CView类中添加消息命令WM_KEYDOWN处理函数,在函数中编写如下代码:

 if(nChar==VK_ESCAPE) // 如果按的键为Esc键 
  {//获取主框架窗口的指针 
  CMainFrame*  pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd; 
  // 调用主窗口类的自定义函数 EndFullScreen ,便可退出全屏显示状态 
  pFrame->EndFullScreen();} 

5、最后编写EndFullScreen()函数。

void CMainFrame::EndFullScreen(void)
{
	 if(m_bFullScreen) 
     {         //退出全屏显示, 恢复原窗口显示 
       ShowWindow(SW_HIDE); 
       SetWindowPlacement(&m_OldWndPlacement);     
	 }

}

整个显示和退出全屏操作到此完成,源码下载地址到下载:点击打开链接

参考资料点击打开链接



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值