File "SavePos.inc"
Path: /img-rnd/SavePos.inc
File size: 2.52 KB
MIME-type:
Charset: utf-8
' Just call CB_SAVEPOS at the very beginning of your Dialog CALLBACK
' to save and restore position of your Dialog upon creation / closing
'------------------------------------------------------------------------------
MACRO CB_SAVEPOS
SELECT CASE AS LONG CB.MSG
CASE %WM_INITDIALOG
LoadDialogPos CB.HNDL, EXE.NAME$
CASE %WM_SYSCOMMAND
SaveDialogPos CB.HNDL, EXE.NAME$
END SELECT
END MACRO
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
FUNCTION Exist(BYVAL fileOrFolder AS STRING) AS LONG
LOCAL Dummy&
Dummy& = GETATTR(fileOrFolder)
FUNCTION = (ERRCLEAR = 0)
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
FUNCTION LocalAppData AS STRING
LOCAL szBaseFolder AS ASCIIZ * %MAX_PATH
ShGetFolderPath (BYVAL 0, %CSIDL_LOCAL_APPDATA, BYVAL 0, BYVAL 0, szBaseFolder)
FUNCTION = TRIM$(szBaseFolder) + "\"
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
FUNCTION RoamingAppData AS STRING
LOCAL e AS STRING
e = LCASE$(LocalAppData())
REPLACE "\local\" WITH "\roaming\" IN e
FUNCTION = e
END FUNCTION
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
SUB SaveDialogPos(BYVAL hDlg AS DWORD, BYVAL POS_FILE AS STRING)
LOCAL ff, x, y AS LONG
IF IsIconic(hDlg) THEN EXIT SUB
DIALOG GET LOC hDlg TO x, y
ff = FREEFILE
OPEN LocalAppData + POS_FILE + ".pos" FOR OUTPUT AS #ff
PRINT #ff, x
PRINT #ff, y
CLOSE #ff
END SUB
'------------------------------------------------------------------------------
'------------------------------------------------------------------------------
SUB LoadDialogPos(BYVAL hDlg AS DWORD, BYVAL POS_FILE AS STRING)
LOCAL ff, x, y AS LONG
LOCAL e AS STRING
IF NOT EXIST(LocalAppData + POS_FILE + ".pos") THEN EXIT SUB
ff = FREEFILE
OPEN LocalAppData + POS_FILE + ".pos" FOR INPUT AS #ff
LINE INPUT #ff, e : x = VAL(e)
LINE INPUT #ff, e : y = VAL(e)
CLOSE #ff
IF x <> 0 OR y <> 0 THEN
DIALOG SET LOC hDlg, x, y
END IF
END SUB
'------------------------------------------------------------------------------