📄 main.prg
字号:
*:******************************************************************************
*:
*: 过程文件C:\IT\PROGS\MAIN.PRG
*:
*:******************************************************************************
*: MAIN
*: SetPath
*-- 定义读写 INI 文件的 DLL 命令
#INCLUDE ..\INCLUDE\MYAPP.H
MODIFY WINDOW SCREEN TITLE APP_LOC
ZOOM WINDOW SCREEN MAX
DECLARE INTEGER GetPrivateProfileString IN Win32API AS GetPrivStr ;
STRING cSection, STRING cKey, STRING cDefault, STRING @cBuffer, ;
INTEGER nBufferSize, STRING cINIFile
DECLARE INTEGER WritePrivateProfileString IN Win32API AS WritePrivStr ;
STRING cSection, STRING cKey, STRING cValue, STRING cINIFile
*-- 定义读写系统注册表的 DLL 命令
DECLARE INTEGER RegOpenKeyEx IN Win32API ;
INTEGER nKey, STRING @cSubKey, INTEGER nReserved,;
INTEGER nAccessMask, INTEGER @nResult
DECLARE INTEGER RegQueryValueEx IN Win32API ;
INTEGER nKey, STRING cValueName, INTEGER nReserved,;
INTEGER @nType, STRING @cBuffer, INTEGER @nBufferSize
DECLARE INTEGER RegCloseKey IN Win32API INTEGER nKey
*-- 定义Windows 3.1 API DLL 函数 GetProfileString
DECLARE INTEGER GetProfileString IN Win32API AS GetProStr ;
STRING cSection, STRING cKey, STRING cDefault, ;
STRING @cBuffer, INTEGER nBufferSize
CLEAR
*-- 确信项目管理器是关闭了的,否则当我们试图键入一个热键时会发生冲突
DEACTIVATE WINDOW "项目管理器"
*-- 一但 application 对象一建立,所有的全局变量将被释放
IF SET('TALK') = 'ON'
SET TALK OFF
PUBLIC gcOldTalk
gcOldTalk = 'ON'
ELSE
PUBLIC gcOldTalk
gcOldTalk = 'OFF'
ENDIF
PUBLIC gcOldDir, gcOldPath, gcOldClassLib, gcOldEscape
gcOldEscape = SET('ESCAPE')
gcOldDir = FULLPATH(CURDIR())
gcOldPath = SET('PATH')
gcOldClassLib = SET('CLASSLIB')
cCurrentProcedure = SYS(16,1)
nPathStart = AT(":",cCurrentProcedure) - 1
nLenOfPath = RAT("\", cCurrentProcedure,2) - (nPathStart)
SET DEFAULT TO (SUBSTR(cCurrentProcedure, nPathStart, nLenOfPath))
*-- 设置适当的路径
IF SetPath()
PUBLIC oApp
oApp = CREATEOBJECT("Application")
IF TYPE('oApp') = "O"
*-- 释放所有全局变量, 他们的值已在Environment类中被保存
RELEASE gcOldDir, gcOldPath, gcOldClassLib, gcOldTalk, gcOldEscape
oApp.DO()
ENDIF
ENDIF
CLEAR DLLS
RELEASE ALL EXTENDED
CLEAR ALL
*!******************************************************************************
*!
*! 过程 SETPATH
*!
*! 调用
*! SetPath
*!
*!******************************************************************************
FUNCTION SetPath()
LOCAL lcSys16,lcProgram
lcSys16 = SYS(16)
lcProgram = SUBSTR(lcSys16, AT(":", lcSys16) - 1)
CD LEFT(lcProgram, RAT("\", lcProgram))
*-- 如果我们是从项目管理器中直接运行 MAIN.PRG , 那么
*-- 设置当前路径到 MAIN.PRG 的上一级目录(注意MAIN.PRG的位置是在IT.APP所在的目录的下一层的 \progs下)
IF RIGHT(lcProgram, 3) = "FXP"
CD ..
ENDIF
SET PATH TO PROGS,FORMS,LIBS,MENUS,DATA,REPORTS,INCLUDE,HELP,BITMAPS
SET CLASSLIB TO BASECTRL,GENERAL
ENDFUNC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -