Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1217562
  • 博文数量: 950
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 13070
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-04 09:23
文章分类

全部博文(950)

文章存档

2011年(1)

2008年(949)

我的朋友

分类: C/C++

2008-08-04 09:29:32

下载本文示例代码
下载本文示例源代码

这是工作室为实现全屏显示所发集的一个演示程序。你可以通过选择全屏显示菜单选项时看到相应的效果。这段代码包括两个内容:全屏显示,浮动工具条(用于恢复操作)。

下图便是全屏状态和用于切换的浮动工具条


具体实现步骤:

以下的代码被添加到CmainFrame类中。这里是使用到的四个消息以及他们的简要说明:
1. OnViewFullScreen:全屏显示菜单项的句柄。
2. OnGetMinMaxInfo:捕获 WM_GETMINMAXINFO消息来让你改变窗体大小。
3. IsFullScreen:测试程序是否是以全屏模式显示。
4. OnUpdateViewFullScreen:根据程序模式显示选中或不选中全屏显示菜单项。

主要代码举例:

void CMainFrame::OnViewFullScreen() 

{

	RECT rectDesktop;

    WINDOWPLACEMENT wpNew;



    if (!IsFullScreen())

    {

        // 需要所有状态栏

        m_wndStatusBar.ShowWindow(SW_HIDE);

	    m_wndToolBar.ShowWindow(SW_HIDE);



	    // 还需要恢复原状

	    GetWindowPlacement (&m_wpPrev);



	    m_wpPrev.length = sizeof m_wpPrev;



        //通过调节RECT 来确定新窗口的大小

	    ::GetWindowRect ( ::GetDesktopWindow(), &rectDesktop );

	    ::AdjustWindowRectEx(&rectDesktop, GetStyle(), TRUE, GetExStyle());



	    // 把参数用于 OnGetMinMaxInfo()

	    m_FullScreenWindowRect = rectDesktop;

        

        wpNew = m_wpPrev;

        wpNew.showCmd =  SW_SHOWNORMAL;

	    wpNew.rcNormalPosition = rectDesktop;

	    

        // 创建新的工具栏

         m_pwndFullScrnBar=new CToolBar;



         if (!m_pwndFullScrnBar->Create(this,CBRS_SIZE_DYNAMIC|CBRS_FLOATING) ||

		    !m_pwndFullScrnBar->LoadToolBar(IDR_FULLSCREEN))

    	    {

	    	    TRACE0("Failed to create toolbar\n");

			    return;      //创建失败

	        }

        

         //不允许工具栏停靠

         m_pwndFullScrnBar->EnableDocking(0);

		 m_pwndFullScrnBar->SetWindowPos(0, 100,100, 0,0,SWP_NOSIZE|SWP_NOZORDER| SWP_NOACTIVATE|SWP_SHOWWINDOW);   

		 m_pwndFullScrnBar->SetWindowText(_T("Full Screen"));

	     FloatControlBar(m_pwndFullScrnBar, CPoint(100,100));

		 m_bFullScreen=TRUE;

    }

    else

    {

         m_pwndFullScrnBar->DestroyWindow();

		 delete m_pwndFullScrnBar;



         m_bFullScreen=FALSE;

         //恢复窗体

         m_wndStatusBar.ShowWindow(SW_SHOWNORMAL);

	     m_wndToolBar.ShowWindow(SW_SHOWNORMAL);

         wpNew = m_wpPrev;

     }

    

     SetWindowPlacement ( &wpNew );

	    

}

//改变窗体大小
void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 

{

	if (IsFullScreen())

    {

        lpMMI->ptMaxSize.y = m_FullScreenWindowRect.Height();

	    lpMMI->ptMaxTrackSize.y = lpMMI->ptMaxSize.y;

	    lpMMI->ptMaxSize.x = m_FullScreenWindowRect.Width();

	    lpMMI->ptMaxTrackSize.x = lpMMI->ptMaxSize.x;

    }

   

}
//测试窗体状态
BOOL CMainFrame::IsFullScreen()

{

     return m_bFullScreen;

}
//是否选中菜单
void CMainFrame::OnUpdateViewFullScreen(CCmdUI* pCmdUI) 

{

	pCmdUI->Enable();



	if (IsFullScreen())

		pCmdUI->SetCheck();

	else

        pCmdUI->SetCheck(0);



}

(全文完) 下载本文示例代码
阅读(96) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~