首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么将视图全屏显示

2012-05-05 
如何将视图全屏显示我建立了一个单文档MFC应用程序,为了将视图全屏显示,我去掉了标题、菜单、工具栏、状态栏

如何将视图全屏显示
我建立了一个单文档MFC应用程序,为了将视图全屏显示,我去掉了标题、菜单、工具栏、状态栏和边框。代码如下:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
  ..........//省略
ModifyStyle(WS_CAPTION,0); //去掉标题栏
ModifyStyle(WS_THICKFRAME,0);//去掉边框
  SetMenu(NULL); //去掉菜单
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
  //以下为设置全屏显示
  cs.x=cs.y=0; 
  cs.cx=GetSystemMetrics(SM_CXSCREEN);
  cs.cy=GetSystemMetrics(SM_CYSCREEN);
 
return TRUE;
}

运行程序后,发现视图的边界仍有两个像素宽的区域,该区域无法响应WM_MOUSEMOVE消息,同时该区域无法绘图,我觉得该区域不是客户区。我现在希望,全屏幕都可以绘图,可以设置背景颜色,请各位高手指点一下,Thank you very much!

[解决办法]
当然不是客户去啦!楼主的问题很典型,这其实是一个微软windows窗口的问题,是窗口就要有窗口区,通过扩大客户去是不能够进行全屏显示的,楼主可以查查全屏技术是如何实现的~~~~~希望对你有帮助!!!
[解决办法]
http://vcer.net/1076417661406.html
[解决办法]
我是全屏的代码

C/C++ code
 void   CMainFrame::OnViewFullScreen()       {     RECT   rectDesktop;             WINDOWPLACEMENT   wpNew;                 if   (!IsFullScreen())             {                     //   need   to   hide   all   status   bars                     //m_wndStatusBar.ShowWindow(SW_HIDE);             //m_wndToolBar.ShowWindow(SW_HIDE);         if(m_wndStatusBar!=NULL) delete   m_wndStatusBar;     if(m_wndToolBar!=NULL) delete   m_wndToolBar;     this->UpdateWindow();             //   We'll   need   these   to   restore   the   original   state.             GetWindowPlacement   (&m_wpPrev);             m_wpPrev.length   =   sizeof   m_wpPrev;                         //Adjust   RECT   to   new   size   of   window             ::GetWindowRect   (   ::GetDesktopWindow(),   &rectDesktop   );             ::AdjustWindowRectEx(&rectDesktop,   GetStyle(),   TRUE,   GetExStyle());                 //   Remember   this   for   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;             //   fail   to   create                     }                                           //don't   allow   the   toolbar   to   dock                       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_wndToolBar=new   CToolBar;     m_wndStatusBar=new   CStatusBar;     if   (!m_wndToolBar->Create(this)   ||     !m_wndToolBar->LoadToolBar(IDR_MAINFRAME))     {     TRACE0("Failed   to   create   toolbar\n");     return;     }         if   (!m_wndStatusBar->Create(this)   ||     !m_wndStatusBar->SetIndicators(indicators,         sizeof(indicators)/sizeof(UINT)))     {     TRACE0("Failed   to   create   status   bar\n");     return   ;             //   fail   to   create     }         //   TODO:   Remove   this   if   you   don't   want   tool   tips   or   a   resizeable   toolbar     m_wndToolBar->SetBarStyle(m_wndToolBar->GetBarStyle()   |     CBRS_TOOLTIPS   |   CBRS_FLYBY   |   CBRS_SIZE_DYNAMIC);         //   TODO:   Delete   these   three   lines   if   you   don't   want   the   toolbar   to     //     be   dockable     m_wndToolBar->EnableDocking(CBRS_ALIGN_ANY);     EnableDocking(CBRS_ALIGN_ANY);     DockControlBar(m_wndToolBar);                       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);         } 


[解决办法]
发现视图的边界仍有两个像素宽的区域是什么意思,显示有东西还是显示正常就是无法响应MOUSEMOVE消息啊?

热点排行