CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

菜鸟问题请教?

楼主kelelipeng(kelelipeng)2006-07-04 16:34:30 在 VC/MFC / 基础类 提问

一个基于对话框的程序,标题栏上有最大/还原/最小化,因为我有一段代码必须是用户点击最小化后,然后点击还原触发此代码,不知道应该是在什么消息下写?  
  也就是说在什么地方添加还原对话框的代码?  
  问题点数:20、回复次数:13Top

1 楼EddieCai()回复于 2006-07-04 16:37:46 得分 0

lz,你是要写代码来恢复对话框?还是要在对话框恢复时执行一些代码?Top

2 楼kelelipeng(kelelipeng)回复于 2006-07-04 16:41:15 得分 0

我是想执行一些代码Top

3 楼EddieCai()回复于 2006-07-04 16:41:18 得分 0

如果是前者,调用ShowWindow(SW_SHOWNORMAL);  
  如果是后者,响应WM_SIZE消息,在afx_msg   void   OnSize(UINT   nType,int   cx,int   cy);方法里根据nType==SIZE_RESTORED来判断对话框被恢复了.  
  Top

4 楼kelelipeng(kelelipeng)回复于 2006-07-04 16:41:51 得分 0

我是恢复时执行一些代码Top

5 楼kelelipeng(kelelipeng)回复于 2006-07-04 16:57:11 得分 0

是这样的这个基于对话框的程序,有一个状态栏,在显示的时总是被任务栏遮蔽,我想让它和浏览器一样,可以把状态栏显示出来,又因为中  
  CHSMSDlg::OnInitDialog()  
  {  
  ...  
          //设置窗口最大化  
          ShowWindow(SW_MAXIMIZE);  
          //获取窗口大小  
          GetClientRect(rect);  
          //使状态栏可以显示看到  
          MoveWindow(0,0,rect.Width(),rect.Height()-10);  
  ...  
  }  
   
  但是一旦点击最小化后,又成最大化了,又看不见状态栏了,  
  我在   OnSize(UINT   nType,int   cx,int   cy);方法中添加了if   (nType==SIZE_RESTORED)MoveWindow(0,0,rect.Width(),rect.Height()-10);  
  但是没有触发执行.  
  Top

6 楼kelelipeng(kelelipeng)回复于 2006-07-04 17:01:45 得分 0

是这样的这个基于对话框的程序,有一个状态栏,在显示的时总是被任务栏遮蔽,我想让它和浏览器一样,可以把状态栏显示出来,又因为中  
  CHSMSDlg::OnInitDialog()  
  {  
  ...  
          //设置窗口最大化  
          ShowWindow(SW_MAXIMIZE);  
          //获取窗口大小  
          GetClientRect(rect);  
          //使状态栏可以显示看到  
          MoveWindow(0,0,rect.Width(),rect.Height()-10);  
  ...  
  }  
   
  但是一旦点击最小化后,又成最大化了,又看不见状态栏了,  
  我在   OnSize(UINT   nType,int   cx,int   cy);方法中添加了if   (nType==SIZE_RESTORED)MoveWindow(0,0,rect.Width(),rect.Height()-10);  
  但是没有触发执行.  
  Top

7 楼EddieCai()回复于 2006-07-04 17:15:05 得分 0

那OnSize应该进来的吧。你看看当时那个nType的值是多少。Top

8 楼kelelipeng(kelelipeng)回复于 2006-07-04 17:49:15 得分 0

SIZE_MINIMIZEDTop

9 楼kelelipeng(kelelipeng)回复于 2006-07-04 17:51:00 得分 0

我的最终目的就是想将状态栏显示出来呀Top

10 楼EddieCai()回复于 2006-07-04 17:51:08 得分 0

SIZE_MINIMIZED是窗口最小化时候,后来窗口不是又被放大了吗?那时的nType是多少?Top

11 楼kelelipeng(kelelipeng)回复于 2006-07-04 17:56:09 得分 0

因为在  
  //设置窗口最大化OnInitDialog()中有这么一句  
  ShowWindow(SW_MAXIMIZE);  
   
  //这句也就是想将对话框高度调少些,以便任务栏显示出来.  
  MoveWindow(0,0,rect.Width(),rect.Height()-10);  
   
  还原后,是还原成最大化了(因为OnInitDialog()中有这么一句   ShowWindow(SW_MAXIMIZE);),所以返回值是,SIZE_MAXIMIZED  
   
  Top

12 楼kelelipeng(kelelipeng)回复于 2006-07-04 17:59:22 得分 0

或者有什么方法可以让程序的对话框不被任务栏遮蔽吗?Top

13 楼EddieCai()回复于 2006-07-05 11:31:05 得分 0

那你就在OnSize里的if(nType==SIZE_MAXIMIZED)后面写那句MoveWindow好了阿~  
   
  可是真的挺奇怪,为什么你最大化后的窗口会被任务栏遮住?我这里不会遮住的阿~Top

相关问题

关键词

得分解答快速导航

  • 帖主:kelelipeng

相关链接

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

广告也精彩

反馈

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