论模态与拟模态框

什么是模态弹出,是指某个函数会弹出显示并要求用户响应操作才会返回的调用。例如有快捷菜单的弹出,模态对话框的弹出,消息提示框的弹出等等这些,一直等待着用户输入的界面元素,输入焦点会一直挂着,直到用户响应,结束了模态调用过程。因为此时界面线程是阻塞在模态调用过程中,主消息循环不会执行到,而阻塞在模态自身的消息循环中。因此被称作模态。

那么什么又被称作拟模态框,很简单,只是使用户觉得这是个模态对话。而实际却只是普通窗口或非模态对话框。有两种可行方式模拟,一个种仿模态过程,在在弹出显示的调用中也实现自身消息循环,不过这样也要求你实现相应结束消息循环的接口。无论是模态对话还是弹出菜单也好,我们可以看到API都有EndDialog或EndMenu两个函数,用以结束自身的消息循环。另一种是简单较常用的方法,就是在弹出拟模态窗口时,把主窗口给禁用这样用户的输入焦点就不可能转到主窗口上,而通过拟模态操作完毕才激活主窗口。这样也就实现了模拟模态对话。


下面我们该讨论的就是,出现这两种东西各自有什么优劣呢?很显然的,拟模太若是把主窗口给禁用了,在多窗口界面逻辑复杂的程序中容易出现界面被锁不可操作的问题,设计者必须考虑周全禁用与激活的逻辑。而使用真实模态对话没有这种事情。但既然有了拟模态,那肯定必然是有其用处的,因为使用模态的话,每次都弹出都需要重新创建对话框,完成对话并销毁对话框,如果这类对话很频繁,于是人们就想到找出一种优化方案以节省系统开销,所以拟拟模态窗出现了。

是的,创建了拟模态窗只需要一次,后续只直弹出显示即可,省去系统为我们做过多不必要的事情。因为他是普通窗口罢,所以不会阻塞界面主消息循环。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值