CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

关于全屏 - 让我一个头两个大的问题

楼主yanf_99()2003-12-03 17:56:54 在 VC/MFC / 界面 提问

看着不起眼的问题捣鼓好几天了,烦躁不安,哭笑不得。麻烦各位帮帮忙吧。  
   
  程序中有父子窗口,父窗口控制子窗口,间中使之全屏。用SetWindowPos将窗口放至极大,比如说,  
  hr   =   m_pModeless->SetWindowPos(   NULL,   0-GetSystemMetrics(   SM_CXBORDER   )-3,   0-GetSystemMetrics(   SM_CYCAPTION   )-GetSystemMetrics(   SM_CYBORDER   )-3,   lWidth+2*GetSystemMetrics(   SM_CXBORDER   )+6,   lHeight+GetSystemMetrics(   SM_CYCAPTION   )+2*GetSystemMetrics(   SM_CYBORDER   )+10,   SWP_NOOWNERZORDER   );  
  可窗口确实变大不少,但并非全屏,在自动隐藏taskbar的情况下,窗口下面的框飘浮在距屏幕下方约5mm的地方。明显,这是“一个有些发育不良的全屏显示窗口。”  
   
  参考过http://search.csdn.net/expert/topic/50/5001/2002/8/14/938580.htm   和例程,但不知为什么我的程序好像从没获得过WM_GETMINMAXINFO消息   --   OnGetMinMaxInfo似乎从没执行过,PreTranslateMessage也截获不到这一消息。不知道问题在哪里,望请指教。  
   
  多谢。 问题点数:100、回复次数:6Top

1 楼aaasng()回复于 2003-12-03 19:08:09 得分 25

SetWindowPos(&wndTopMost,   0,   0,   GetSystemMetrics(SM_CXSCREEN),   GetSystemMetrics(SM_CYSCREEN),SWP_SHOWWINDOW);Top

2 楼adamchao()回复于 2003-12-03 19:17:53 得分 25

你用一下ShowWindow(SW_SHOWMAXIMIZED);试一下,也许管用Top

3 楼yanf_99()回复于 2003-12-04 10:05:15 得分 0

谢了,不过因为我所要的全屏是没有title   bar也没有边框的,所以楼上好像不大适用。还有没有其他意见呢?Top

4 楼wangjinwang(王者之疯)回复于 2003-12-04 10:23:44 得分 50

这是一个比较完整的实现说明(当然要例子也有)  
  例子:  
  视图:http://www.yangning.com/cgi-bin/topic.cgi?forum=1&topic=23  
  对话框:http://www.yangning.com/cgi-bin/topic.cgi?forum=1&topic=93  
  说明:  
  1  
  //   定义三个全局或CMainFrame成员变量  
  WINDOWPLACEMENT   m_OldWndPlacement;//   用来保存原窗口位置  
  BOOL   m_bFullScreen;                               //   全屏显示标志  
  CRect   m_FullScreenRect;                       //   表示全屏显示时的窗口位置    
   
  2  
  //   定义全屏显示函数  
  void   CMainFrame::OnFullScreen()    
  {  
  //   设置控制条位置  
  CRect   ClientRect;  
  RepositionBars(0,   0xffff,   AFX_IDW_PANE_FIRST,   reposQuery,   &ClientRect);  
  //   获取屏幕的分辨率  
  int   nFullWidth=GetSystemMetrics(SM_CXSCREEN);  
  int   nFullHeight=GetSystemMetrics(SM_CYSCREEN);  
  //   获取窗口区域和客户区域(以便计算客户区域外的尺寸)  
  CRect   WindowRect;  
  GetWindowRect(&WindowRect);  
  ClientToScreen(&ClientRect);  
  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   ;  
  //   取得并记录窗口当前位置  
  GetWindowPlacement(&m_OldWndPlacement);  
  //   设置全屏显示标志为TRUE并进入全屏显示状态    
  m_bFullScreen=TRUE;  
  WINDOWPLACEMENT   wndpl;  
  wndpl.length=sizeof(WINDOWPLACEMENT);  
  wndpl.flags=0;  
  wndpl.showCmd=SW_SHOWNORMAL;  
  wndpl.rcNormalPosition=m_FullScreenRect;  
  SetWindowPlacement(&wndpl);  
  }  
   
  3  
  //   结束全屏显示  
  void   CMainFrame::EndFullScreen()  
  {  
  ShowWindow(SW_HIDE);  
  SetWindowPlacement(&m_OldWndPlacement);  
  }  
   
  4  
  //   添加对消息WM_GETMINMAXINFO的处理函数及代码  
  void   CMainFrame::OnGetMinMaxInfo(MINMAXINFO   FAR*   lpMMI)    
  {  
  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();    
  }  
  CFrameWnd::OnGetMinMaxInfo(lpMMI);  
  }  
  Top

5 楼yanf_99()回复于 2003-12-04 10:34:22 得分 0

谢谢。我的问题是,我好像从来都截获不到WM_GETMINMAXINFO消息。Top

6 楼yanf_99()回复于 2003-12-04 14:44:23 得分 0

原来是自己粗心。。。   忘了ON_WM_GETMINMAXINFO()。谢谢各位,接分吧。Top

相关问题

  • 我的TC总是全屏,我
  • 我的全屏页面怎么不是真正的全屏啊?谢谢
  • 一个全屏的容窗口,我如何能把它变成不是全屏的?
  • 如何实现全屏跟窗口两种显示模式
  • 我想在windowCE中全屏幕显示位图,怎么操作
  • 怎样让我的程序全屏?等着用
  • 为什么我update后不能刷新?反而全屏白色?
  • 全屏窗体?
  • 全屏编辑:
  • asp的全屏

关键词

  • 区域
  • cgi
  • 消息
  • top
  • 全屏
  • getsystemmetrics
  • clientrect
  • sm
  • windowrect
  • fullscreenrect

得分解答快速导航

  • 帖主:yanf_99
  • aaasng
  • adamchao
  • wangjinwang

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo