为何屏幕会一闪而过?
我在用foxpro做一个图书管理系统时,在编译打包时发现了一个问题,就是exe文件打开时,屏幕会一闪而过.我在主函数中设置了read events但还是没效果,该如何处理这个问题?向大家请教.谢谢!
记得以前好象是在主函数中添加了一句话就解决问题的
主函数为
set path to c:\
set view to database.vue
do form main
read event
问题点数:0、回复次数:10Top
1 楼luwq168(后备甜心)回复于 2003-12-02 20:50:21 得分 0
主文件很麻烦的,你看我的:
#include [..\XXX_APP.H]
If Type([APP_GLOBAL.Class]) = "C" And ;
UPPER(app_global.Class) == Upper(app_classname)
Messagebox(app_already_running_loc,48, ;
app_global.ccaption )
If Vartype(app_global.oframe) = "O"
app_global.oframe.Show()
Endif
Return
Endif
Release app_global
Public app_global
Local lclastsettalk, llappran, lnseconds, losplash
Local Array lacheck[1]
lclastsettalk=Set("TALK")
losplash = .Null.
Set Talk Off
#Ifdef app_splashclass
If Not Empty(app_splashclass)
losplash = Newobject(app_splashclass, app_splashclasslib)
If Vartype(losplash) = "O"
lnseconds = Seconds()
losplash.Show()
Endif
Endif
#Endif
If setpath()
*-- Set the SET and ON commands
Set Safety Off
Set Procedure To utility.prg
Set Memowidth To 120
Set Multilocks On && For table buffering
Set Deleted On
Set Exclusive On
Set Notify Off
Set Bell On
Set Near Off
Set Intensity Off
Set Confirm Off
Set Compatible Off
Set Escape Off
Set Status Bar Off
Public lw,lu,lq,lwq &&lw标签题名,lu场所分类,lq菜单分类,lwq操作数据表
lu=0
Set Classlib To XKZ_APP
Endif
app_global = Newobject(app_classname, app_classlib)
If Vartype(app_global) = "O" ;
AND Aclass(lacheck,app_global) > 0 And ;
ASCAN(lacheck,Upper(app_superclass)) > 0
app_global.creference =[APP_GLOBAL]
app_global.cformmediatorname = app_mediator_name
#Ifdef app_cd
app_cd
#Endif
#Ifdef app_path
app_path
#Endif
#Ifdef app_initialize
app_initialize
#Endif
If Vartype(losplash) = "O"
If Seconds() < lnseconds + app_splashdelay
=Inkey(app_splashdelay-(Seconds()-lnseconds),"MH")
Endif
losplash.Release()
losplash = .Null.
Endif
Release lacheck, losplash, lnseconds
If Not app_global.Show()
If Type([APP_GLOBAL.Name]) = "C"
Messagebox(app_cannot_run_loc,16, ;
app_global.ccaption )
app_global.Release()
Else
Messagebox(app_cannot_run_loc,16)
Endif
Else
llappran = .T.
Endif
If Type([APP_GLOBAL.lReadEvents]) = "L"
If app_global.lreadevents
* the Release() method was not used
* but we've somehow gotten out of READ EVENTS...
app_global.Release()
Endif
Else
Release app_global
Endif
Else
Messagebox(app_wrong_superclass_loc,16)
Release app_global
Endif
If lclastsettalk=="ON"
Set Talk On
Else
Set Talk Off
Endif
On Shutdown Do onshutdown
If Type([APP_GLOBAL]) = "O"
* non-read events app
Return app_global
Else
Return llappran
Endif
*!******************************************************************************
*!
*! Procedure SETPATH
*!
*! Calls
*! lacheck
*! setpath
*!
*!******************************************************************************
Function setpath()
Local lcsys16, ;
lcprogram
lcsys16 = Sys(16)
lcprogram = Substr(lcsys16, At(":", lcsys16) - 1)
Cd Left(lcprogram, Rat("\", lcprogram))
*-- If we are running MAIN.PRG directly, then
*-- CD up to the parent directory
If Right(lcprogram, 3) = "FXP"
Cd ..
Endif
Set Path To progs, Forms, libs, ;
MENUS, Data,graphics,;
reports, Include, Help, ;
SET Date To ymd
Set Date To Long
EndfuncTop
2 楼ZhuJiaWei(逍遥童子)回复于 2003-12-02 21:30:47 得分 0
呵呵,不要吓唬人嘛。
不过主函数确实很重要的。
你可以试试看在下面再加上几句
clear event
close all
RELEASE ALL
CLEAR ALL
CLEAR MEMO
结束程序的地方也加这么几句
试试看。Top
3 楼yang505412(杨过)回复于 2003-12-02 21:48:13 得分 0
upTop
4 楼truehan(真男人)回复于 2003-12-03 14:13:54 得分 0
set path to c:\
set view to database.vue
read event
do form main
这样试试
Top
5 楼yestoyes(枫)回复于 2003-12-03 14:15:28 得分 0
你的main表单是不是顶层表单?
我的主程序基本与你的类似,但可以正常运行的呀!Top
6 楼eduljx()回复于 2003-12-03 16:53:51 得分 0
用shutdown,然后用close all试试Top
7 楼longhui1(龙龙)回复于 2003-12-03 17:59:46 得分 0
将你的主程序在项目管理器中设置为主文件后再编译,就没有问题了!Top
8 楼superyangxp(yangshuyi)回复于 2003-12-06 14:17:01 得分 0
我找到答案了,是表单的window state应设为 模式状态
谢谢各位Top
9 楼yunshiwo(白云)回复于 2003-12-06 15:59:08 得分 0
表单的window state在哪儿设啊?Top
10 楼liujianjun_(流星尔)回复于 2003-12-06 17:06:40 得分 0
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=78093Top




