关于MDI窗体恢复的问题

青蛙工作室 2016-10-30 11:19:21
一个MDI主窗体,内有若干子窗体,主窗体和各子窗体都可以最大化,到这步都是正常的。
然后用户把主窗体最小化,窗体成为任务栏图标,也都正常,但当把这个最小化的任务栏图标点击,窗体预期的变化应该是最大化,但事实是窗体还原成普通窗体(wsNormal),跟踪发现这个过程中主窗体的resize事件触发2次,第一次确实是最大化,然后接着再还原成普通。
我的问题是,窗体第二次resize并非预期,为何会发生? 如何避免(这是重点)?
...全文
154 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ooolinux 2016-11-01
  • 打赏
  • 举报
回复
this->WindowState = 2; 也够懒 wsNormal The form is in its normal state (that is, neither minimized nor maximized). wsMinimized The form is minimized. wsMaximized The form is maximized.
青蛙工作室 2016-11-01
  • 打赏
  • 举报
回复
我用的2009,win7。问题很奇怪,影响用户体验,很郁闷。
青蛙工作室 2016-11-01
  • 打赏
  • 举报
回复
bug不bug的不敢说,我试过,MDI窗体如果没有子窗体就正常,只要有子窗体就自动还原到普通,不会最大化。 今晚自己弄的比较“高级”的做法,使用ApplicationEvents控件,拦截SC_RESTORE消息,在这个消息内人为的让窗体最大化,并置标志变量为true,也就这么2句: if (Msg.wParam == SC_RESTORE) { this->WindowState = 2; Handled = true ; } 问题解决。 谢谢楼上同头像的用户。
ooolinux 2016-11-01
  • 打赏
  • 举报
回复
2009难道这个是Bug?我用BCB 6.0也是在Win7 64位下。
ooolinux 2016-10-30
  • 打赏
  • 举报
回复
我BCB 6.0的一个MDI例子没有发现这个问题。

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧