File "set-dlg-size.bas"
Path: /dlg-utils/set-dlg-size.bas
File size: 2.89 KB
MIME-type:
Charset: utf-8
#COMPILE EXE
#DIM ALL
#INCLUDE ONCE "DosPrint.inc"
#INCLUDE ONCE "FindDialog.inc"
$CLI = "set-dlg-size"
$ARG1 = "WxH ""dialog caption, all or part"""
$ARG2 = "WxH #12345 (hash followed by dialog handle)"
$NFO1 = "Use W or H = -1 to keep current dialog width or height"
$NFO2 = "Use W or H = -2 to give dialog full desktop width or height"
FUNCTION PBMAIN () AS LONG
LOCAL dlgList() AS STRING
LOCAL nbDlg AS LONG
LOCAL i, dw, dh, cw, ch, w, h AS LONG
LOCAL inTxt AS STRING
LOCAL hD AS DWORD
LOCAL caption AS STRING
IF COMMAND$ = "" THEN
CALL FreeConsole() ' Win32 mode -> hide console
?"This utility must be called via the command-line."+$CR+$CR _
+"Usage:" + $CR + $CLI + $SPC + $ARG1 + $CR _
+"or " + $CR + $CLI + $SPC + $ARG2 + $CR+$CR _
+$NFO1+$CR+$NFO2, %MB_ICONINFORMATION, $CLI
EXIT FUNCTION
END IF
IF COMMAND$ = "/?" THEN
DosPrint "Usage: " + $CLI + $SPC + $ARG1
DosPrint " or " + $CLI + $SPC + $ARG2
DosPrint $NFO1
DosPrint $NFO2
EXIT FUNCTION
END IF
' Parse first parameter WxH
inTxt = TRIM$(COMMAND$(1))
IF INSTR(LCASE$(inTxt),"x") = 0 THEN GOTO BadArg
w = VAL(LEFT$(inTxt, INSTR(LCASE$(inTxt),"x")-1))
h = VAL(MID$(inTxt, INSTR(LCASE$(inTxt),"x")+1))
' Parse second parameter dialog identifier
inTxt = TRIM$(COMMAND$(2), ANY $SPC+$TAB+$DQ)
' Find all dialogs based on inTxt
REDIM dlgList(0)
IF LEFT$(inTxt, 1) = "#" THEN
nbDlg = FindDialog("HND:" + MID$(inTxt,2), BYREF dlgList())
ELSE
nbDlg = FindDialog("CAP:" + inTxt, BYREF dlgList())
END IF
' No dialog found
IF nbDlg = 0 THEN
DosPrint "No dialog found."
EXIT FUNCTION
END IF
' More than 1 dialog found
IF nbDlg > 1 THEN
DosPrint "Several dialogs found, please specify which one to take:"
FOR i = 1 TO nbDlg
DosPrint " " + dlgList(i-1)
NEXT
EXIT FUNCTION
END IF
' Just 1 dialog found > get its information
hD = VAL(MID$(dlgList(0),2))
caption = MID$(dlgList(0), INSTR(dlgList(0),":")+1)
' Special case of W/H
DESKTOP GET CLIENT TO dw, dh ' desktop width & height
DIALOG GET SIZE hD TO cw, ch ' current dialog width & height
IF w = -1 THEN w = cw ' keep current width
IF h = -1 THEN h = ch ' keep current height
IF w = -2 THEN w = dw ' full desktop width
IF h = -2 THEN h = dh ' full desktop height
' Set size
DIALOG SET SIZE hD, w, h
DosPrint "Dialog found: #"+FORMAT$(hD)+$SPC+$DQ+caption+$DQ
DosPrint "Size set to "+FORMAT$(w)+"x"+FORMAT$(h)
EXIT FUNCTION
BadArg:
DosPrint "Syntax Error."
DosPrint "Usage: " + $CLI + $SPC + $ARG1
DosPrint " or " + $CLI + $SPC + $ARG2
END FUNCTION