W_SAVE

Save a window in compressed form

WTSupported in traditional Synergy on Windows
WNSupported in Synergy .NET on Windows
USupported on UNIX
VSupported on OpenVMS
xcall W_SAVE(func_status, id, buffer, length[, options])

Arguments

func_status

Passed as the value CTL_BEGIN on the initial call to W_SAVE, and returned with the one of the following status values: (n)

CTL_BEGIN (1) = Start the save operation.

CTL_MORE (2) = Another call to W_SAVE is required.

CTL_DONE (0) = operation is complete.

id

The ID of the window you want to save in compressed form. (n)

buffer

The buffer to use while performing the save function. The minimum size is 400 characters. (a)

length

Returned with the number of bytes loaded into buffer. (n)

options

(optional) One or more of the following options, combined using .BOR. or a vertical bar (|): (n)

OPT_NODATA = Don’t save window’s text and attributes.

OPT_NOTITLE = Don't save window’s title.

OPT_NOWFLDS = Don’t save any window field sets.

OPT_NOUSET = Don't save any user data sets.

Discussion

W_SAVE saves a window in compressed form.

On the initial call to W_SAVE, func_status must be the value CTL_BEGIN. If func_status is returned with the value CTL_DONE, buffer is large enough to hold the entire saved window, and the save operation is complete. However, if func_status is returned with the value CTL_MORE, the size of buffer is not large enough, and you must repeatedly call W_SAVE until CTL_DONE is returned. If func_status returns the value -1, an error occurred in the save operation.

On the initial call to W_SAVE, the options specified by options determine which components of the window are not to be saved.

The “CTL_” and “OPT_” codes are defined in wmisc.def.

Here’s how you might code a window save operation:

<initialize for window save output>

<set options to any save options, or zero if none>

fnc_sts = CTL_BEGIN
while (fnc_sts)
  begin
    xcall w_save(fnc_sts, wndid, buffer, len, opts)
    if (fnc_sts.lt.0)
        <generate error>
<output buffer(1:len) data>
  end

<terminate window save output>