全屏显示单文档程序的编辑区(VC++…

编写一个全屏显示的程序很简单:

对全屏显示消息的响应函数如下:

void CMainFrame::FullScreenModeOn()
{

//以下的几句是隐藏当前的工具栏和状态栏,但是仅仅执行以下几句我们的菜单栏和状态栏的确是隐藏了,但是显示菜单栏和状态栏的背景依然存在,所以没有达到我们想要全//屏显示的效果,我们需要把背景也给隐藏了
m_bToolBarWasVisible=(m_wndToolBar.IsWindowVisible()!=0);
m_wndToolBar.ShowWindow(SW_HIDE);
m_bStatusBarWasVisible=(m_wndStatusBar.IsWindowVisible()!=0);
m_wndStatusBar.ShowWindow(SW_HIDE);

//我们要新建一个工具栏,以便在全屏状态时有一个可以回到正常状态的工具栏

m_pwndFullScreenBar=new CToolBar;
m_pwndFullScreenBar->Create(this);
m_pwndFullScreenBar->LoadToolBar(IDR_FULLSCREEN);
m_pwndFullScreenBar->SetBarStyle(m_pwndFullScreenBar->GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

m_pwndFullScreenBar->ModifyStyle(0, TBSTYLE_FLAT);
m_pwndFullScreenBar->EnableDocking(0);

CPoint pt(300,200);
FloatControlBar(m_pwndFullScreenBar,pt);//f浮动显示这个工具条,坐标是显示的位置

GetWindowRect(&m_mainRect);



LONG style=::GetWindowLong(m_hWnd,GWL_STYLE);
style&=~WS_CAPTION; //去掉style中的WS_CAPTION这个属性
::SetWindowLong(m_hWnd,GWL_STYLE,style);
int screenx=GetSystemMetrics(SM_CXSCREEN);
int screeny=GetSystemMetrics(SM_CYSCREEN);

SetWindowPos(NULL,0,0,screenx,screeny,SWP_NOZORDER);
style=::GetWindowLong(m_hWnd,GWL_STYLE);
m_bChildMax=(style & WS_MAXIMIZE)?true:false;
CMenu* pOldMenu=GetMenu();
m_OrgMenu.Attach(pOldMenu->Detach());
SetMenu((CMenu*)NULL);
this->ShowWindow (SW_SHOWMAXIMIZED);
m_bFullScreenMode=true;

}

结束全屏状态的函数:

void CMainFrame::FullScreenModeOff()
{
ASSERT(m_OrgMenu.GetSafeHmenu()!=NULL);
SetMenu(&m_OrgMenu);
m_OrgMenu.Detach();

delete m_pwndFullScreenBar;
LONG style=::GetWindowLong(m_hWnd,GWL_STYLE);
style|=WS_CAPTION;
::SetWindowLong(m_hWnd,GWL_STYLE,style);
if(m_bToolBarWasVisible)
m_wndToolBar.ShowWindow(SW_SHOW);
if(m_bStatusBarWasVisible)
m_wndStatusBar.ShowWindow(SW_SHOW);
MoveWindow(&m_mainRect);
RecalcLayout();

m_bFullScreenMode=false;
}

 

至此这个程序就完成了,当然里面有些变量是全局变量,需要读者自己去定义。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值