Expand/Shrink

set_struct_field

Definition: include cffi.e
set_struct_field(integer id, atom pStruct, atom_string field, v)
Description: set a named field in a structure previously allocated by allocate_struct().

id: a result from define_struct().
pStruct: a result from allocate_struct().
field: a string name or, caveat emptor, a numeric index.
v: the value to be set.
pwa/p2js: Not supported.
Comments: The parameter v should be an atom except for TCHAR[128] and similar fields. You may need to use allocate_[w]string(), allocate_struct(), or allocate() to set lpsz and other pointer members, and call free() once the memory is no longer needed.

Note that it is your responsibility to pass short-enough strings in v, since cffi.e cannot check that for you, and only when the target field is TCHAR[] or similar, and likewise add trailing zeroes (or ’\0’) or spaces where needed.
Under set_unicode(1) a string in v is assumed to be utf8 and is converted to utf16. Additional steps may be required to ensure any surrogate pairs that introduces do not make it exceed the available space.
Example:
include cffi.e
constant idMBP = define_struct(...)
atom pMBP = allocate_struct(idMBP)
..
atom pTitle = allocate_string("title")
atom pCaption = allocate_string("caption")
set_struct_field(idMBP,pMBP,"lpszText",pTitle)
set_struct_field(idMBP,pMBP,"lpszCaption",pCaption)
set_struct_field(idMBP,pMBP,"dwStyle",MB_OK)
..
free(pCaption)
free(pTitle)
See Also: allocate_struct, allocate_string, allocate, free