非模态应用程序尝试着让在线和离线之间无缝集成,没有重要的界面改变。
请注意,无模式对话框以两种不同的方式与它的父对话框通信。
Office对象模型支持托管的无模式窗体;但建议不要在后台线程上使用它们。
窗体是独立的顶层窗口,行为方面与非模态对话框相同。
我们必须打破这种习惯,设计师必须确保所有的非模态对话框有清晰醒目的视觉差异。
DHTMLwindows:DHTMLwindow为在页面内容上放置无模式的悬浮窗提供了一种机制。
相反,在非模态对话框存在的过程中,选择很可能发生改变。
无模式窗体的编程难度更大,因为用户访问这些窗体的顺序可能无法预知。
应用程序应该经常给使用者提供不唐突且无模式的反馈,这样使用者可以了解其工作状态。
但是,当窗体以无模式方式显示时,那么在该窗体显示之后,会立刻执行Show方法后面的代码。
确定给定的消息是否是送往无模式对话框的,如果是,则处理它。
另外,它还说明若干与将无模式对话框用作MFC应用程序主窗口有关的方法。
“无模式”窗体让您在此窗体与另一窗体之间变换焦点,而不必关闭初始窗体。
当用户在模态对话框或非模态对话框内单击Cancel按钮或按ESC键时,窗体调用这个成员函数。
传统上有两种常用的非模态工具习惯用法,其中非模态对话框是较老的一种。
对于无模式对话框接收的输入信息,我们可以以向父窗口发送消息的方式进行。
大多数非模态对话框实现得很笨拙,它们的行为很不一致,令人十分困惑。
同样,软件可以为我们提供大量运行状态的非模态反馈,我们将在第25章中讨论。
无模式窗口的常见示例包括属性窗口、工具箱和调色板。
它这样做只是为了方便;创建了无模式对话框后,不需要对其进行进一步管理。
打开一个非模态对话框后,可以不用打断父程序。
此无模式对话框中的属性总是反映当前选定的对象。
调用该成员函数从对话框模板中创建一个非模态对话框。