Returns the name of an interface element attribute. See also the Attributes Guide section.


char *IupGetAttribute(Ihandle *ih, const char *name); [in C]
iup.GetAttribute(ih: ihandle, name: string) -> value: string [in Lua] char *IupGetAttributeId(Ihandle *ih, const char *name, int id); [in C]
iup.GetAttributeId(ih: ihandle, name: string, id: number) -> value: string [in Lua] char* IupGetAttributeId2(Ihandle* ih, const char* name, int lin, int col); [in C] iup.GetAttributeId2(ih: ihandle, name: string, lin, col: number) -> value: string [in Lua]

ih: Identifier of the interface element. If NULL will retrieve from the global environment.
name: name of the attribute.
id, lin, col: used when the attribute has additional ids.

Returns: the attribute value or NULL (nil in Lua) if the attribute is not set or does not exist.

Utility Functions

These functions can also be used to get attributes from the element:

int   IupGetInt   (Ihandle* ih, const char* name);
int   IupGetIntInt(Ihandle* ih, const char* name, int *i1, int *i2);
int   IupGetInt2  (Ihandle* ih, const char* name);
float IupGetFloat (Ihandle* ih, const char* name);
void  IupGetRGB   (Ihandle *ih, const char* name, unsigned char *r, unsigned char *g, unsigned char *b);

int   IupGetIntId  (Ihandle* ih, const char* name, int id);          
float IupGetFloatId(Ihandle* ih, const char* name, int id);
void  IupGetRGBId  (Ihandle *ih, const char* name, int id, unsigned char *r, unsigned char *g, unsigned char *b);

int   IupGetIntId2  (Ihandle* ih, const char* name, int lin, int col);
float IupGetFloatId2(Ihandle* ih, const char* name, int lin, int col);
void  IupGetRGBId2  (Ihandle *ih, const char* name, int lin, int col, unsigned char *r, unsigned char *g, unsigned char *b);

[There is no equivalent in Lua]

IupGetIntInt retrieves two integers separated by 'x', ':' or ',' and returns the number of returned values (0, 1 or 2). IupGetInt2 returns just the second value.


See the Attributes Guide for more details.

The returned value is not necessarily the same pointer used by the application to define the attribute value. The pointers of internal IUP attributes returned by IupGetAttribute should never be freed or changed, except when it is a custom application pointer that was stored using IupSetAttribute and allocated by the application.

 The returned pointer can be used safely even if IupGetGlobal or IupGetAttribute are called several times. But not too many times, because it is an internal buffer and after IUP may reuse it after around 50 calls.


In IupLua, only known internal pointer attributes are returned as user data or as an ihandle, all other attributes are returned as strings. To access attribute data always as user data use iup.GetAttributeData:

iup.GetAttributeData(ih: ihandle) -> value: userdata [in Lua]


Browse for Example Files

See Also

IupSetAttribute, IupSetAttributes, IupGetHandle, IupSetGlobal, IupGetGlobal