创建 Visual Basic 工程时,一般习惯于使用标准的窗体开始。创建 ActiveX 文档时,却不限于只使用 ActiveX 文档:可同其它工程一样,向工程中添加标准窗体和模块。
创建 ActiveX DLL 时,有一个限制:根据容器的不同,而决定是否可显示无模式对话框。例如,假设创建了一个包含 ActiveX 文档的 ActiveX DLL,它显示一个无模式窗体。如果在 Office Binder 中查看该文档,则显示无模式窗体将没有任何问题。但是,如果在 Internet Explorer 中查看相同的文档,则试图显示该无模式窗体将会产生错误。
注意 用 Internet Explorer 4.0 及后续版本,显示无模式窗体的能力要依靠线程模型。在 “建立代码部件”中的“Visual Basic 中的单元线程”中论述。
可以避开不允许显示无模式对话框的问题。使用 NonModalAllowed 属性,就可在显示窗体前先检查,然后作出相应的反应。简而言之,NonModalAllowed 属性(只读属性)根据 App 对象是否允许显示无模式窗体而返回 True 或 False。可以编写简单代码如下:
Private Sub cmdShowMe_Click() If App.NonModalAllowed Then '
无模式地显示'
该窗体。frmModeless.Show vbModeless, Me
Else '
模式地显示该窗体。FrmModeless.Show vbModal, Me
EndIf
End Sub
详细信息 关于显示窗体的详细信息,请参阅“部件设计的一般准则”中的“从代码部件显示窗体”。