用VC++项目中导入VB 窗体

发表于:2007-07-04来源:作者:点击数: 标签:
南京 王 珂 你可以在VC ++的Dialog Editor(对话编辑器)环境下导入VB 窗体。VB 设计的窗体类似于一个对话框和一个放置控件的包容器(container)。当你在导入VB 窗体时,一些放置在窗体上的控件也会随之被导入:对于窗体上的ActiveX 控件,只有当它已经被
南京 王 珂

  你可以在VC ++的Dialog Editor(对话编辑器)环境下导入VB 窗体。VB 设计的窗体类似于一个对话框和一个放置控件的包容器(container)。当你在导入VB 窗体时,一些放置在窗体上的控件也会随之被导入:对于窗体上的ActiveX 控件,只有当它已经被插入VC ++项目中之后,才会随着VB 窗体一齐导入;对于VB 开发环境中提供的一些本地控件(如Drive List Box、File List Box 等),则可能遇到一些麻烦;而那些嵌套在控件内的控件也要受到一些制约。大多数限制来自于VB 运行时对话框与Windows 运行时对话框的不同表现,本文后面将详细说明有关限制。步骤如下:

  1、启动VC ++编程环境。
  2、从Insert(插入)窗体上,单击Resource(资源)。
  3、在Insert Resource(插入资源)对话框中单击Import(导入)按钮。
  4、在Import Resource(导入资源)对话框中将File Type(文件类型)设置为VB Form 并选择所需导入的窗体,单击Import 按钮。
  当然,如前所述,当导入一些较为特别的VB 窗体时,可能出现一些错误信息。比如笔者在VB 6.0 下建立了一个窗体,窗体上分别放置了Picture Box、Frame、Label、Microsoft FlexGrid Control 以及Drive List Box 五个控件,并在Label 控件的DblClick 事件上编写了一些代码,窗体如下图所示:
http://www.ltesting.net/uploads/2007/07/1_200707042008522.jpg (41794 字节)
  在VC ++环境下运行AppWizard 建立一个项目,接受默认设置,并按照前面提到的方法插入该窗体,则会出现如下警告:

  *The ActiveX control "MSFlexGridLib.MSFlex-Grid" is not installed in the project and will be ignored.

  该警告表明在项目中没有插入Microsoft FlexGrid Control 6.0 控件。

  *Syntax error in VB form description.

  该警告出现是因为在对控件(Label)相关事件(DblClick)编写了VB 代码,以及VB 在调用控件时与VC ++语法不一致而造成的。

  另外,当导入包含.FRX 文件的VB 窗体时,还可能出现如下错误信息:

  The form's binary data file "Form1.FRX" can't be opened.

  在导入窗体之后,还会出现一些奇怪的现象,比如Drive List Box 已经转变为Windows 标准的List Box 等等。

  由此可见,对于将VB 窗体导入到VC ++中存在着诸多限制,它们主要可以分为对VB 本地控件和对象的限制、对VB 控件属性的限制以及对VB 窗体中嵌套控件的限制。

  1. 对VB 本地控件和对象的限制

  下面列出的控件在导入到VC ++项目中时性能可能会削减甚至被忽略:

  * Drive List Box 以及Dirctory List Box:导入之后将会被转换成Windows List Box。
  * MDI 窗体:导入之后将会转换成普通的对话框,并且菜单会被忽略。
  * Line 和Shape 控件
  * 水平和垂直滚动条。
  * Timer 控件。
  * Printer、Screen、Clipboard、App 等对象会被忽略。
  2. 对VB 控件属性的限制

  VB 窗体上大多数控件的属性能够被成功导入到VC ++中,而对于个别的属性仅被VB 控件支持,在标准的Windows 对话框中没有与之相等的属性。比如个别控件的Font 和Color 等属性,对此也要予以注意。

  3. 对VB 窗体中嵌套控件的限制

  嵌套控件被VB 所支持,而不能够导入到VC ++环境。在VB 环境中,控件能够被嵌套到其他控件之中(如Picture、Frame 等),用户可以通过设置最外层的控件的Visible 属性来决定所有嵌入的控件的Visible 属性,而在VC ++环境中,控件是否可见是一个运行时特征。

  对于此类问题,一个解决的办法是将交叠的控件移入独立的对话框中,通过编写需要的代码来创建相关对话框,达到显示控件的目的,最后将主对话框设置为Parent Window(父窗体)。

  因此,为了避免麻烦,建议在向VC ++项目中导入VB 窗口时能够做到以下几点:

  * 在导入窗体之前检查窗体中涉及的ActiveX 控件,并在VC ++项目中插入相应控件。
  * 不要使用文中提到的VB 本地控件。
  * 不要设计过于复杂的窗体,不要在设计时设置Picture Box 等控件的Picture 属性,以免生成.FRX 文件。
  * 不要在VB 环境下编写任何代码,以免出现错误。
  * 不要使用嵌套控件。  

原文转自:http://www.ltesting.net