特别的调试考虑

某些事件是使用 Microsoft Windows 时的公共部分,它仍很可能会对调试应用程序造成潜在问题。重要的在于知道这些特殊问题,这样就不至于把调试过程搞得混乱不堪。

如果始终都知道中断模式到底如何行事,不按照应用程序的预期目标处置事件,则总可找到解决方案。在某些事件过程中,用 Debug.Print 语句而不用监视表达式或断点监视变量或属性的值。也有必要改变与事件序列有关的变量的值。下列主题将讨论到这个问题。

在 MouseDown 期间中断执行

如果在 MouseDown 事件过程期间中断执行,则可松开鼠标按钮或使用鼠标来做任何数量的任务。但在继续执行时,应用程序会认为鼠标按钮一直是被按下的。在再次按下鼠标按钮并接着松开它之前不可能获得 MouseUp 事件。

在运行时按下鼠标按钮将会认为在 MouseDown 事件过程中有一断点,从而在此处再次中断执行。在这种情况下将再也得不到 MouseUp 事件。解决的办法通常是删除在 MouseDown 过程中的断点。

在 KeyDown 期间中断执行

如果在 KeyDown 期间中断执行,则可有大致相同的考虑。如果在 KeyDown 过程中保留一个断点,则可能再也得不到 KeyUp 事件。(在“响应鼠标和键盘事件”中描述了 KeyDown 和 KeyUp)

在 GotFocus 或 LostFocus 期间中断执行

如果在 GotFocus 或 LostFocus 事件过程期间中断执行,则系统消息的计时可能会产生不一致的结果。应使用 Debug.Print 语句代替 GotFocus 或 LostFocus 事件过程中的断点。

模态对话框和消息框禁止事件

由于调试器中潜在的冲突问题,当显示一个模态窗体或消息框时,开发环境不能产生事件。这样一来,事件就被禁止,直到该模态窗体或消息框被释放为止。

重点 事件的禁止只发生在开发环境中。一旦项目编译通过后,即使显示模态窗体或消息框时也仍旧会产生事件。

下面的例子是一些导致这种禁止的情形:

测试和使用命令行参数

可以做这样的选择,即让应用程序使用命令行参数,在启动时,这些参数将向应用程序提供数据。用户可选择操作环境的“运行”命令来输入它们,然后在应用程序名之后键入参数。在创建应用程序的图标时也可使用命令行参数。

例如,假定要创建闹钟应用程序。一种设置闹钟时间的方法就是让用户直接键入选定的时间。用户可在“运行”对话框中键入以下字符串:

Alarm 11:00:00

Command 函数返回所有参数,这些参数是在应用程序名(本例中为 Alarm)之后键入的。因为闹钟应用程序只有一个参数,所以在应用程序代码中可直接把参数赋给存储了选定时间的字符串:

AlarmTime = Command

如果 Command 返回空字符串,则无命令行参数。应用程序必须直接请求信息或者选择默认操作。

为测试使用 Command 的代码,可在 Visual Basic 环境中指定示例的命令行参数。应用程序对示例的命令行输入进行计算的方式与用户键入参数时是一样的。

要设置示例的命令行参数,请按照以下步骤执行:

  1. 选择“工程”菜单的“属性”。

  2. 单击“工程属性”对话框的“生成”选项卡。

  3. 在“命令”行参数域中键入示例的参数。(不要键入应用程序名本身。)

  4. 选择“确定”。

  5. 运行这个应用程序。

详细信息 请参阅“Command 函数”