GpiQuerySetIds
Appearance
This function returns information about all the fonts that have been created by GpiCreateLogFont, and tagged bit maps (see GpiSetBitmapId).
Syntax
GpiQuerySetIds(hps, lCount, alTypes, aNames, allcids)
Parameters
- hps (HPS) - input
- Presentation-space handle.
- lCount (LONG) - input
- The number of objects to be queried.
- The number of local identifiers (lcids) currently in use, and therefore the maximum number of objects for which information can be returned, can be found with GpiQueryNumberSetIds.
- alTypes (PLONG) - output
- Object types.
- Elements indicate whether the corresponding allcids element refers to a logical font or a tagged bit map.
- LCIDT_FONT
- Font object
- LCIDT_BITMAP
- Bit map.
- aNames (PSTR8) - output
- Font names.
- An array of lCount consecutive 8-byte fields, in which the 8-character names associated with the logical fonts are returned. For bit maps, the whole field is set to zeros.
- allcids (PLONG) - output
- Local identifiers.
- An array in which the local identifier (lcid) values are returned.
- LCID_DEFAULT is included if the default font has been changed (see GpiCreateLogFont).
Return Value
- rc (BOOL) - returns
- Success indicator.
- TRUE
- Successful completion
- FALSE
- Error occurred.
Remarks
Each of the output parameters is an array with lCount elements. Information about the first lCount objects is returned; if there are fewer than lCount, the alTypes and allcids elements for the remainder are cleared to 0.
Errors
Possible returns from WinGetLastError:
- PMERR_INV_HPS (0x207F)
- An invalid presentation-space handle was specified.
- PMERR_PS_BUSY (0x20F4)
- An attempt was made to access the presentation space from more than one thread simultaneously.
- PMERR_INV_LENGTH_OR_COUNT (0x2092)
- An invalid length or count parameter was specified.
Example Code
#define INCL_GPILCIDS /* Or use INCL_GPI, INCL_PM, */ #include <os2.h> HPS hps; /* Presentation-space handle. */ LONG lCount; /* The number of objects to be queried. */ PLONG alTypes; /* Object types. */ PSTR8 aNames; /* Font names. */ PLONG allcids; /* Local identifiers. */ BOOL rc; /* Success indicator. */ rc = GpiQuerySetIds(hps, lCount, alTypes, aNames, allcids);
This example uses the GpiQuerySetIds function to retrieve the local identifier for all logical fonts. It then uses the identifiers to delete the logical fonts.
#define INCL_DOSMEMMGR
#define INCL_GPILCIDS
#include <OS2.H>
#define TOTALMEM 200
HPS hps; /* Presentation-space handle. */
LONG lCount; /* The number of objects to be queried. */
PLONG alTypes; /* Object types. */
ULONG rc; /* Return code. */
PSTR8 aNames; /* font names. */
PLONG allcids; /* local identifiers. */
PLONG pBase;
USHORT i;
rc = DosAllocMem((PPVOID)pBase, (ULONG)TOTALMEM*sizeof(LONG), /* space is needed for an array of */
/* lCount longs. */
PAG_READ | PAG_WRITE | PAG_COMMIT);
lCount = GpiQueryNumberSetIds(hps); /* The number of local identifiers */
/* (lcids) currently in use, and */
/* therefore the maximum number */
/* of objects for which information */
/* can be returned. */
rc = DosSubAllocMem((PVOID)pBase, (PPVOID)aNames, (ULONG)(lCount*(ULONG)sizeof(STR8))); /* space is needed for an array of */
/* lCount longs. */
rc = DosSubAllocMem((PVOID)pBase, (PPVOID)allcids, (ULONG)lCount*sizeof(LONG)); /* space is needed for an array of */
/* lCount longs. */
rc = DosSubAllocMem((PVOID)pBase, (PPVOID)alTypes, (ULONG)lCount*sizeof(LONG)); /* space is needed for an array of */
/* lCount longs. */
GpiQuerySetIds(hps, lCount, alTypes, aNames, /* An array of lCount */
/* consecutive 8-byte fields, */
/* in which the 8-character */
/* names associated with */
/* the logical fonts are */
/* returned. For bit maps, */
/* the whole field is set to */
/* zeros. */
allcids); /* An array in which the */
/* local identifier (lcid) */
/* values are returned. */
/* LCID_DEFAULT is */
/* included if the default */
/* font has been changed */
/* (see GpiCreateLogFont). */
for (i = 1; i < lCount; i++)
{
if (allcids[i] == LCIDT_FONT)
GpiDeleteSetId(hps,allcids[i]);
}