Structure STROBJ (winddi.h)
La classe STROBJ, ou objet de chaîne de texte, contient une énumération de handles et de positions de glyphes pour le pilote de périphérique.
Syntaxe
typedef struct _STROBJ {
ULONG cGlyphs;
FLONG flAccel;
ULONG ulCharInc;
RECTL rclBkGround;
GLYPHPOS *pgp;
LPWSTR pwszOrg;
} STROBJ;
Membres
cGlyphs
Spécifie le nombre de glyphes dans le STROBJ.
flAccel
Indicateurs d’accélérateur. Ce membre peut être l’une des valeurs suivantes :
SO_BREAK_EXTRA
L’espacement à largeur fixe est ajouté à chaque caractère de saut.
SO_CHARACTER_EXTRA
Un espacement à largeur fixe est ajouté entre chaque paire de glyphes consécutifs.
SO_CHAR_INC_EQUAL_BM_BASE
L’espacement est déterminé par les tailles de bitmap. Dans ce contexte, la base bitmap est définie comme cx pour la casse horizontale, cy pour la casse verticale. Ce bit est défini signifie que chaque glyphe d’une police que la bitmap (fournie dans la structure GLYPHBITS par GDI) aura une base égale à la largeur avancée de ce glyphe. Cela ne signifie pas qu’il s’agit d’une police de hauteur fixe. (Non utilisé pour les PATHOBJ.)
SO_DO_NOT_SUBSTITUTE_DEVICE_FONT
Un pilote d’imprimante ne doit pas remplacer l’une de ses polices d’imprimante par le choix de police de GDI.
SO_DXDY
Les glyphes doivent être rendus à des positions aléatoires.
SO_ESC_NOT_ORIENT
L’orientation d’un glyphe est différente de la direction de l’échappement. Échappement est l’angle que la direction du texte crée avec l’horizontal. L’orientation est l’angle entre la ligne de base du glyphe et la direction d’échappement.
SO_FLAG_DEFAULT_PLACEMENT
Les vecteurs d’incrémentation par défaut sont utilisés pour positionner les caractères.
SO_GLYPHINDEX_TEXTOUT
pwszOrg pointe vers un tableau d’index de glyphes, plutôt qu’un tableau Unicode.
SO_HORIZONTAL
Le texte est horizontal ; de gauche à droite ou de droite à gauche, selon SO_REVERSED. La coordonnée y est fournie uniquement pour le premier glyphe de la chaîne.
SO_MAXEXT_EQUAL_BM_SIDE
Les bitmaps ont les mêmes largeurs. Dans ce contexte, le côté bitmap est défini comme cy pour la casse horizontale et cx pour la casse verticale. Cet indicateur garantit que tous les glyphes de la police auront le même côté égal à la somme de l’ascendant et du descendeur. Toutefois, ce bit indique plus qu’un côté constant. Pour la casse horizontale, ce bit indique également que la distance verticale entre le haut de la bitmap du glyphe et l’origine de son caractère est égale à l’ascendant pour tous les glyphes. Pour la casse verticale, ce bit indique que la distance horizontale entre l’origine du glyphe et le « haut » de la bitmap du glyphe (qui est vraiment à droite ou à gauche, selon que vous écrivez dans la direction de l’axe Y positif ou négatif) est égale à l’ascendant. Dans les deux cas, les sommets et les bas de toutes les bitmaps de glyphes se trouvent sur la même ligne dans le sens de l’écriture. (Non utilisé pour les PATHOBJ.)
SO_REVERSED
Définissez si horizontal est de droite à gauche ou vertical est de bas en haut.
SO_VERTICAL
Le texte est vertical ; de haut en bas ou de bas en haut, selon SO_REVERSED. La coordonnée x est fournie uniquement pour le premier glyphe de la chaîne.
SO_ZERO_BEARINGS
Tous les glyphes ont zéro A et zéro espacement C. Ce bit garantit que les boîtes noires du glyphe ne se chevauchent pas.
ulCharInc
Spécifie si la police est une police à pas fixe (monospace). Si c’est le cas, ce membre est égal à la largeur avancée des glyphes dans les peaux ; sinon, il est égal à zéro. Lorsque ce membre est différent de zéro, GDI fournit une coordonnée valide uniquement pour le premier caractère de la chaîne. Toutes les autres positions de caractères doivent être générées par le pilote en ajoutant successivement la valeur de ce membre le long de la direction d’écriture.
rclBkGround
Spécifie une structure RECTL qui décrit le cadre englobant de la chaîne.
pgp
Pointeur vers le tableau GLYPHPOS pour la chaîne entière. Peut être NULL (voir la section Remarques suivante).
pwszOrg
Pointeur vers la chaîne Unicode d’origine ou les caractères cGlyphes . Contrairement à son nom, cette chaîne n’est généralement pas terminée par null. En outre, cette chaîne n’est pas toujours valide, par exemple dans la journalisation avec des polices d’imprimante, auquel cas ce paramètre sera NULL.
Remarques
Un pilote peut appeler STROBJ_vEnumStart et STROBJ_bEnum pour obtenir des identités et des positions de glyphes dans la chaîne. Si pgp n’est pas NULL, il pointe vers un tableau GLYPHPOS décrivant la chaîne entière et un seul appel à STROBJ_bEnum est requis. Si pgp a la valeur NULL, STROBJ_bEnum devez être appelée à plusieurs reprises dans une boucle pour obtenir toutes les positions de glyphe de la chaîne.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | winddi.h (inclure Winddi.h) |