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

怎样让对话框全屏化?

楼主superyang1010(superyang)2004-09-03 15:43:41 在 VC/MFC / 界面 提问

怎样用VC作基于对话框的程序,可使对话框全屏,不是最大化,而是全屏,就像TC或DOS一样是全屏显示的?用什么function或方法可以实现? 问题点数:20、回复次数:9Top

1 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-09-03 15:45:28 得分 10

MoveWindow,如果你不想要标题栏就ModifyStyle!Top

2 楼superyang1010(superyang)回复于 2004-09-03 15:47:00 得分 0

或者是在对话框初始化时,调用什么函数,可以使对话框初始时就是全屏显示的?!!?!请帮助!谢谢!Top

3 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2004-09-03 16:09:51 得分 0

BOOLCAboutDlg::OnInitDialog()  
   
    {  
   
    CDialog::OnInitDialog();  
   
    //隐藏对话框  
   
    ShowWindow(SW_HIDE);  
   
    CRectdlgRect;  
   
    GetClientRect(&&dlgRect);  
   
    CPointcenterPoint;  
   
    centerPoint.x=dlgRect.Width()/2;  
   
    centerPoint.y=dlgRect.Height()/2;  
   
    //得到对话框的中点坐标  
   
    CRgntestrgn;  
   
    this-〉ShowWindow(SW_HIDE);  
   
    intm=GetSystemMetrics(SM_CYSIZEFRAME);  
   
    //以下代码实现对话框的动态弹出  
   
    for(inti=10;i〈dlgRect.Width()/2+2m;i+=1)  
   
    {  
   
    testrgn.CreateRectRgn(centerPoint.x-i,centerPoint.y-i,centerPoint.x+i,centerPoint.y+i);  
   
    SetWindowRgn((HRGN)testrgn,TRUE);  
   
    ShowWindow(SW_SHOW);  
   
    CenterWindow();  
   
    testrgn.DeleteObject();  
   
    }  
   
    returnTRUE;  
   
    }  
  编译之后进入程序的帮助选单,你会看见一个由小变大的对话框跃然于屏幕之上。Top

4 楼lixiaosan(小三)回复于 2004-09-03 16:17:03 得分 5

取消标题栏  
  用GetSystemMetrics得到屏幕大小,然后用得到的值来MoveWindow,Top

5 楼Avoid(好象又涨分了)回复于 2004-09-03 16:22:26 得分 5

先取得分辨率,  
  int   cx,cy;  
  cx   =   GetSystemMetrics(SM_CXSCREEN);  
  cy   =   GetSystemMetrics(SM_CYSCREEN);  
  在用MoveWindow  
  CRect   rcTemp;  
  rcTemp.BottomRight()   =   CPoint(cx,   cy);  
  rcTemp.TopLeft()   =   CPoint(0,   0);  
  MoveWindow(&rcTemp);  
   
   
   
  Top

6 楼jasonbiao(阿彪)回复于 2004-09-03 16:35:00 得分 0

以下是全屏显示窗口客户去的代码,可以参考一下  
  重载OnGetMinMaxInfo()使客户区域达到全屏(菜单、标题栏等没有了)  
  void   CMainFrame::FullScreen()  
  {  
  GetWindowPlacement(&m_OldWndPlacement);   //WINDOWPLACEMENT  
  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);  
  //将除控制条外的客户区全屏显示到从(0,0)到(nFullWidth,   nFullHeight)区域,   将(0,0)和(nFullWidth,   nFullHeight)两个点外扩充原窗口和除控制条之外的   客户区位置间的差值,   就得到全屏显示的窗口位置    
  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;//设置全屏显示标志为   TRUE  
  //进入全屏显示状态  
  WINDOWPLACEMENT   wndpl;  
  wndpl.length   =   sizeof(WINDOWPLACEMENT);  
  wndpl.flags   =   0;  
  wndpl.showCmd   =   SW_SHOWNORMAL;  
  wndpl.rcNormalPosition   =   m_FullScreenRect;  
  SetWindowPlacement(&wndpl);  
  }  
  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

7 楼bobob(静思)回复于 2004-09-03 17:45:01 得分 0

支持小三Top

8 楼kugou123(酷狗)(彪悍的人生,不需要解释 www.xiaozhou.net)回复于 2004-09-03 22:52:33 得分 0

去掉标题栏,得到当前屏幕大小,然后用SetWindowPos函数也可以实现。Top

9 楼enoloo(在水一方)回复于 2004-09-12 11:56:55 得分 0

OnInitDlg中,加入如下代码:  
  ModifyStyleEx(0,   WS_EX_APPWINDOW   |   WS_EX_CONTROLPARENT,   SWP_NOSIZE);  
   
  ModifyStyle(WS_BORDER   |   WS_DLGFRAME   |   WS_THICKFRAME,   WS_POPUP,   SWP_NOSIZE);  
  CRect   rect(0,0,::GetSystemMetrics(SM_CXSCREEN),::GetSystemMetrics(SM_CYSCREEN));    
   
  MoveWindow(&rect,false);  
  Top

相关问题

  • 怎样最大化对话框?
  • 想将基于对话框的里的一个view全屏(不是最大化)!
  • 如何使对话框全屏?
  • 对话框如何实现全屏?
  • 怎样修改ceditbox中字体的大小,使其与对话框中其他字号不同?怎样将对话框的背景设置成一张图片?怎样将对话框设置成全屏形式?
  • 怎样实现:出现关闭系统对话框时,全屏幕变暗的效果?
  • 一个基于对话框界面的程序,怎样能让它一生成就占满全屏?
  • 一个简单的问题,怎样才能把一个对话框设计为全屏显示!!!!!!!!!急用!
  • 请问怎样在非模态下,最下化主对话框,而子对话框保持原来位置?
  • 怎样使基于对话框的窗口最大化?

关键词

  • ws
  • 代码
  • 客户
  • 屏幕
  • 对话框
  • 全屏
  • centerpoint
  • rctemp
  • getsystemmetrics
  • dlgrect

得分解答快速导航

  • 帖主:superyang1010
  • DentistryDoctor
  • lixiaosan
  • Avoid

相关链接

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

广告也精彩

反馈

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