网络开发 调用API函数 报表打印 常用技术 经验汇总 控件使用 软件工程 数据处理
您的位置:首页 >> vfp教程 >> 网上文摘 >> 常用技术 >> 正文

用应用程序的表单替换 Visual FoxPro 的桌面
作者:James 出处:网络

最后检查日期: May 27, 1997
文号: Q136755 本文信息应用于:
Microsoft Visual FoxPro for Windows, versions 3.0, 5.0

概述
在设计 Visual FoxPro 应用程序时可能要求隐藏 Visual FoxPro 桌面并让应用程序自己的表单出现在整个窗口桌面区域.

本文添加必须的步骤来生成应用程序表单桌面. 并用必须的步骤终止应用程序和恢复 Visual FoxPro 桌面.

更多信息

逐步过程
启动应用程序表单并用 READ EVENTS 命令建立 Visual FoxPro 事件处理器. 在 .prg 文件中的代码继续处理的过程需要 终止应用程序的表单,停止 Visual FoxPro 事件处理器,并返回 Visual FoxPro 桌面.在这些代码后面的是隐藏 Visual FoxPro 主窗口的函数.


** Starter.prg 启动应用程序的最少的代码

*
DO FORM appform.scx
READ EVENTS
PROCEDURE back2vfp
** 应用程序表单已在桌面级作为桌面级表单激活.事件处理器是在桌面级, 并类似于 _SCREEN 对象的一个属性相等,因此它必须被 _SCREEN 对象的方法终止.由于没有可用的 _SCREEN 对象成员 (没有命令按钮,文本框等),使用一个 Timer 事件来清除事件. timer 对象是不可视的,且不需要激活.要激活计时器: 添加它到 _SCREEN
*
_SCREEN.AddObject('oTime','MyTimer') &&MyTimer 是
**当前实例
** Back2vfp 过程结束
**
**类定义. TIMER 事件两秒钟触发一次
DEFINE CLASS MyTimer AS Timer
Interval= 2000
PROCEDURE Timer
CLEAR EVENTS
_SCREEN.RemoveObject('oTime')
ENDPROC
ENDDEFINE
**
** Starter.prg 结束 *******************

在应用程序表单中, 定义了三个表单属性来用于以下函数中的全局 引用. 同时放置一个命令按钮或其它对象到表单中,该对象提供一个可以终止应用 程序的事件. 例如, 这三个属性为 FoxHWND, FoxGone 和 ShowState. 该命令按钮 名为 Quit. 它的 Click 事件将包括终止表单的代码.
警告: 如果使用模板类创建表单, 且模板的 DeskTop 属性设置为 .F., 则设置已创建的表单的 DeskTop 属性为 .T. 将不起作用. 在这种情况下, 运行表单将造成 Visual FoxPro 主窗口和它内部的表单不可见, 这就必须重新启动 Windows 3.x, 并可能破坏 应用程序相关的文件.

关于 Desktop 属性的行为的更多信息, 请参阅 Microsoft Knowledge Base 中的以下文件:

文号: Q141315

标题: 修改子类表单的 Desktop 属性不起作用
** 以下是隐藏 Visual FoxPro 桌面的代码.

* 该函数可以从具有以下属性的应用程序表单的 Load 事件中调用:
*
* WindowType = 模式,
* AlwaysOnTop = True, 且
* DeskTop = True

#DEFINE W32sDLL "W32SCOMB.DLL"
#DEFINE W32DLL "USER32.DLL"
IF "3.5" $ OS(1) OR "Windows 4" $ OS(1) OR "NT" $ OS(1) &&
cDLL = W32DLL
ELSE
cDLL = W32sDLL
ENDIF
DECLARE integer FindWindow IN &cDLL integer, string
DECLARE Integer ShowWindow IN &cDLL Integer, Integer
SW_MAXIMIZE = 3
SW_SHOWNORMAL = 1
SW_SHOWMINIMIZED = 2
SW_SHOWGONE = 0
ThisForm.showstate = SW_SHOWNORMAL
NullPointer = 0
ThisForm.FoxHWND = FindWindow(NullPointer, _SCREEN.Caption)
* 隐藏 Visual FoxPro 主窗口
ThisForm.FoxGone = ShowWindow(ThisForm.FoxHWND, SW_SHOWGONE)
** 以下命令是可选的 - 它显示执行该函数成功.
** =MessageBox("Visual FoxPro 桌面已隐藏...")

** 函数结束.

放入以下代码到 Quit 命令按钮的 Click 事件中.
* 清除表单
ThisForm.Release
*
* 恢复 Visual FoxPro 桌面
ThisForm.FoxGone = ShowWindow(ThisForm.FoxHWND, ThisForm.showstate)
*
* 在两秒钟后用 CLEAR EVENTS 终止 READ EVENTS来恢复 Visual FoxPro 桌面
DO Back2vfp &&在 Starter.prg 程序中的过程

Caveats
如果这些代码放入项目中并编译进应用程序, 用户将在一个定位对话框中看到以下错误信息:

不能找到未知的 FINDWINDOW
定位,忽略,忽略全部,取消

一但用户选择忽略,将出现以下错误信息:

不能找到未知的SHOWWINDOW.
定位,忽略,忽略全部,取消

这是由于Visual FoxPro 试着在Load事件代码中的DECLARE命令中调用外部引用.用户可以:
忽略错误,并且项目将无问题的生成.
-或-

添加一个引用了 FINDWINDOW 和 SHOWWINDOW 过程的程序到项目中.

[返回]

     

首页 | 设为首页 | 加入收藏 | 关于本站 | 友情链接 | 版权声明

     
 
Copyright© www.bianceng.cn Powered by 编程入门网 All Rights Reserved
吉ICP备06005558号