给你一段代码,请研究
#INCLUDE "DsString.h"
*-- DECLARE DLL statements for reading/writing to private INI files
DECLARE INTEGER GetPrivateProfileString IN Win32API  AS GetPrivStr ;
  String cSection, String cKey, String cDefault, String @cBuffer, ;
  Integer nBufferSize, String cINIFileDECLARE INTEGER WritePrivateProfileString IN Win32API AS WritePrivStr ;
  String cSection, String cKey, String cValue, String cINIFile*-- DECLARE DLL statements for reading/writing to system registry
DECLARE Integer RegOpenKeyEx IN Win32API ;
  Integer nKey, String @cSubKey, Integer nReserved,;
  Integer nAccessMask, Integer @nResultDECLARE Integer RegQueryValueEx IN Win32API ;
  Integer nKey, String cValueName, Integer nReserved,;
  Integer @nType, String @cBuffer, Integer @nBufferSizeDECLARE Integer RegCloseKey IN Win32API ;
  Integer nKey*-- DECLARE DLL statement for Windows 3.1 API function GetProfileString
DECLARE INTEGER GetProfileString IN Win32API AS GetProStr ;
  String cSection, String cKey, String cDefault, ;
  String @cBuffer, Integer nBufferSize
*-- system init setupSET SYSMENU SAVE
SET SYSMENU OFF
SET STATUS BAR OFF
SET TALK OFF
SET DELE ON
SET EXACT ON
SET EXCLUSIVE OFF
SET SAFETY OFF
SET NOTIFY OFF
SET DATE TO ANSI
SET CENTURY ON
SET MARK TO '.'
CLOSE DATABASE ALL
With _Screen
.BackColor = RGB(0,128,128)  
.PICTURE ="logo.bmp"
.Closable = .T.  
.ControlBox = .t.
.Caption = 'XXXXXX-水电、话费管理系统'
.MaxButton= .t.
.MinButton= .t.
.Movable= .t.
.WindowState = 2
EndWithPublic  pCZYNAME,pCZYDM,pAuth,pGDName,pGDID,pCurPath,pDataPath
PUBLIC pAPPID
Public pCWZdatepAPPID="CJ"
LOCAL lcProgram,lcRTVlcProgram = SYS(16)
CD LEFT(lcProgram, RAT("\", lcProgram))pCurPath=sys(5)+curDIR()
IF Right(pCurPath,1)<>"\"
pCurPath=pCurPath+"\"
ENDIF
IF !USED("DATAPATH")
USE DATAPATH IN 0
ENDIF
SELECT DATAPATH
pDataPath = IIF(RIGHT(ALLTRIM(DATAPATH),1) <> "\",ALLTRIM(DATAPATH)+"\",ALLTRIM(DATAPATH))IF DATAEXIST()
ON SHUTDOWN DO DoShutDown.PRG
CLOSE DATA ALL
SET PATH TO &pDataPath SET PROC TO UTILITY.PRG
ON ERROR errmess (ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM( ), LINENO( ))
ON KEY LABEL CTRL+F12 DO Dot
Do  MAINMENU.mpr
READ EVENTS
ENDIF
On Shutdown
ON KEY
SET SYSMENU TO DEFAULT
CLOSE DATA ALL
CLEAR DLLS
RELEASE ALL EXTENDED
CLEAR ALLFUNCTION DATAEXIST
IF !FILE(pDATAPATH+"PhoneDB.DBC")
       IF Messagebox("在目录"+pDataPath+"中找不到数据!"+CHR(13)+CHR(13)+"寻找有数据的路径吗?",4+48+256)<>6
WAIT wind "System terminated!" Time 1
On Shutdown
RETURN .F.
ENDIF
local lcLocatePath
lcLocatePath=""
ON error Store "" To lcLocatePath
DO While .T.
lcLocatePath=ALLTRIM(LocFile("PhoneDB.DBC","dbc"))
IF Empty(lcLocatePath) Or !File(lcLocatePath)
IF MESSAGEBOX("路径寻找失败!",5+32+256)#4
WAIT Wind "System Terminated!" Time 1
On Shutdown
RETURN .F.
ENDIF
ELSE
EXIT
ENDIF
ENDDO
pDATAPATH=Left(lcLocatePath,Len(lcLocatePath)-11)  &&减去PhoneDB.Dbf的长度
IF !USED("DATAPATH")
USE DATAPATH IN 0
ENDIF
SELECT DATAPATH
REPLACE DataPath.DataPath With pDATAPATH In DATAPATH
SET PATH TO &pDataPath
RETURN .T.
USE
ENDIF
ENDFUNC

解决方案 »

  1.   

    关键是要掌握以下三个方面
    1、ON SHUTDOWN DO ???.PRG 在执行退出时应怎样。
    2、QUIT   如果已编译,最好是加上。
    3、CLEAR EVENTS   清除事件过程
      

  2.   

    我也有同感,就是vfp系统表单总是在程序开斗出现,非常烦人。想让它一次不出现
    我现在没有什么好办法。不过,我有办法让它只出现一次,闪一下后隐藏起来。退出时
    也不会出现你说的那种情况,还算干净。
        设计主程序
          —screen.visible=.f.
          do form 主表单
          read events
         —screen.visible=.t.
    在主表单中destory事件中加clear events
    vfp 公司把程序搞的这么乱,遗憾!!!!!!!!!!!
      

  3.   

    在config.fpw里加入
    sysm=off
    再把config.fpw编译进exe
    可关闭主表单