estructura GCP_RESULTSW (wingdi.h)
La estructura GCP_RESULTS contiene información sobre los caracteres de una cadena. Esta estructura recibe los resultados de la función
Sintaxis
typedef struct tagGCP_RESULTSW {
DWORD lStructSize;
LPWSTR lpOutString;
UINT *lpOrder;
int *lpDx;
int *lpCaretPos;
LPSTR lpClass;
LPWSTR lpGlyphs;
UINT nGlyphs;
int nMaxFit;
} GCP_RESULTSW, *LPGCP_RESULTSW;
Miembros
lStructSize
Tamaño, en bytes, de la estructura.
lpOutString
Puntero al búfer que recibe la cadena de salida o null si no se necesita la cadena de salida. La cadena de salida es una versión de la cadena original que está en el orden en que se mostrará en un dispositivo especificado. Normalmente, la cadena de salida es idéntica a la cadena original, pero puede ser diferente si la cadena necesita reordenar y se establece la marca GCP_REORDER o si la cadena original supera la extensión máxima y se establece la marca GCP_MAXEXTENT.
lpOrder
Puntero a la matriz que recibe índices de ordenación o NULL si no se necesitan los índices de ordenación. Sin embargo, su significado depende de los demás elementos de GCP_RESULTS. Si se van a devolver índices de glifo, los índices son para la matriz de lpGlyphs; Si no se devuelven índices de glifos y se solicita lpOrder, los índices son para lpOutString. Por ejemplo, en este último caso, el valor de lpOrder[i] es la posición de lpString[i] en la cadena de salida lpOutString.
Normalmente se usa cuando GetFontLanguageInfo devuelve la marca GCP_REORDER, que indica que la cadena original necesita reordenar. Por ejemplo, en hebreo, en el que el texto se ejecuta de derecha a izquierda, la matriz de lpOrder proporciona las ubicaciones exactas de cada elemento de la cadena original.
lpDx
Puntero a la matriz que recibe las distancias entre las celdas de caracteres adyacentes o se NULL si no se necesitan estas distancias. Si se realiza la representación del glifo, las distancias son para los glifos no para los caracteres, por lo que la matriz resultante se puede usar con la función ExtTextOut.
Las distancias de esta matriz están en orden de presentación. Para buscar la distancia del iésimo carácter en la cadena original, use la matriz lpOrder de la siguiente manera:
width = lpDx[lpOrder[i]];
lpCaretPos
Puntero a la matriz que recibe los valores de posición del símbolo de intercalación o NULL si no se necesitan posiciones de intercalación. Cada valor especifica la posición del símbolo de intercalación inmediatamente antes del carácter correspondiente. En algunos idiomas, la posición del símbolo de intercalación de cada carácter puede no estar inmediatamente a la izquierda del carácter. Por ejemplo, en hebreo, en el que el texto se ejecuta de derecha a izquierda, la posición del símbolo de intercalación está a la derecha del carácter. Si se realiza la ordenación del glifo, lpCaretPos coincide con la cadena original, no la cadena de salida. Esto significa que algunos valores adyacentes pueden ser los mismos.
Los valores de esta matriz están en orden de entrada. Para buscar el valor de posición del símbolo de intercalación del icarácter de en la cadena original, use la matriz de la siguiente manera:
position = lpCaretPos[i];
lpClass
Puntero a la matriz que contiene o recibe clasificaciones de caracteres. Los valores indican cómo diseñar caracteres en la cadena y son similares (pero no idénticos) a los valores de CT_CTYPE2 devueltos por la función GetStringTypeEx. Cada elemento de la matriz se puede establecer en cero o en uno de los siguientes valores.
Además, se puede usar lo siguiente al proporcionar valores en la matriz de lpClass con la marca GCP_CLASSIN.
En el caso de los idiomas que usan la marca GCP_REORDER, también se pueden usar los valores siguientes con la marca GCP_CLASSIN. A diferencia de los valores anteriores, que se pueden usar en cualquier parte de la matriz de lpClass, todos los valores siguientes solo se usan en la primera ubicación de la matriz. Todas se combinan con otras clasificaciones.
Tenga en cuenta que GCPCLASS_PREBOUNDLTR y GCPCLASS_PREBOUNDRTL son mutuamente excluyentes, tal como son GCPCLASSPOSTBOUNDLTR y GCPCLASSPOSTBOUNDRTL.
Para forzar que el diseño de un carácter se lleve a cabo de forma específica, preestablece la clasificación del elemento de matriz correspondiente; la función deja estas clasificaciones preestablecidas sin cambios y calcula las clasificaciones solo para los elementos de matriz que se han establecido en cero. Las clasificaciones preestablecidas solo se usan si se establece la marca GCP_CLASSIN y se proporciona la matriz de lpClass
Si GetFontLanguageInfo no devuelve GCP_REORDER para la fuente actual, solo el valor de GCPCLASS_LATIN es significativo.
lpGlyphs
Puntero a la matriz que recibe los valores que identifican los glifos usados para representar la cadena o se NULL si no se necesita representación de glifos. El número de glifos de la matriz puede ser menor que el número de caracteres de la cadena original si la cadena contiene glifos ligados. Además, si es necesario reordenar, es posible que el orden de los glifos no sea secuencial.
Esta matriz es útil si se realiza más de una operación en una cadena que tiene cualquier forma de ligadura, kerning o cambio de orden. El uso de los valores de esta matriz para las operaciones posteriores ahorra el tiempo necesario para generar los índices de glifo cada vez.
Esta matriz siempre contiene índices de glifo y el valor de ETO_GLYPH_INDEX debe usarse siempre cuando se usa esta matriz con la función ExtTextOut.
Cuando se usa GCP_LIGATE, puede limitar el número de caracteres que se ligarán juntos. (Por ejemplo, en árabe, las ligaduras de tres caracteres son comunes). Esto se hace estableciendo el máximo requerido en lpGcpResults->lpGlyphs[0]. Si no se requiere ningún máximo, debe establecer este campo en cero.
Para idiomas como el árabe, donde GetFontLanguageInfo devuelve la marca GCP_GLYPHSHAPE, los glifos de un carácter serán diferentes en función de si el carácter está al principio, al medio o al final de una palabra. Normalmente, el primer carácter de la cadena de entrada también será el primer carácter de una palabra y el último carácter de la cadena de entrada se tratará como el último carácter de una palabra. Sin embargo, si la cadena mostrada es un subconjunto de la cadena completa, como al mostrar una sección del texto desplazado, puede que esto no sea true. En estos casos, es conveniente forzar que los primeros o los últimos caracteres se forme como formas iniciales o finales. Para ello, de nuevo, la primera ubicación de la lpGlyphs matriz se usa realizando una operación OR del valor de ligadura anterior con los valores GCPGLYPH_LINKBEFORE y/o GCPGLYPH_LINKAFTER. Por ejemplo, un valor de GCPGLYPH_LINKBEFORE | 2 significa que las ligaduras de dos caracteres son el máximo necesario y el primer carácter de la cadena debe tratarse como si estuviera en medio de una palabra.
nGlyphs
En la entrada, este miembro debe establecerse en el tamaño de las matrices a las que apuntan los miembros del puntero de matriz. En la salida, se establece en el número de glifos rellenados, en las matrices de salida. Si no se requiere la sustitución del glifo (es decir, cada carácter de entrada se asigna exactamente a un glifo), este miembro es el mismo que en la entrada.
nMaxFit
Número de caracteres que caben en las extensiones especificadas por el parámetro
Observaciones
Si el lpGlyphs, lpOutStringo ninguno de ellos depende de los resultados de la llamada GetFontLanguageInfo.
En el caso de una fuente para un idioma como inglés, en el que no se devuelve ninguna de las marcas de GCP_DBCS, GCP_REORDER, GCP_GLYPHSHAPE, GCP_LIGATE, GCP_DIACRITIC o GCP_KASHIDA, no se requiere ninguna de las matrices para el funcionamiento correcto. (Aunque no es necesario, todavía se pueden usar. Si se usa la matriz de lpOutString
En el caso de las fuentes para idiomas como el hebreo, que do tienen reordenamiento, pero normalmente no tienen formas de glifo adicionales, se deben usar lpOutString. Esto proporcionará la cadena en el orden legible de la pantalla. Sin embargo, la matriz de lpGlyphs no suele ser necesaria. (El hebreo puede tener glifos adicionales, si la fuente es una fuente TrueType/Open).
En el caso de idiomas como tailandés o árabe, en los que GetFontLanguageInfo devuelve la marca GCP_GLYPHSHAPE, el lpOutString proporcionará el orden legible de la cadena pasada a GetCharacterPlacement, pero los valores seguirán siendo los caracteres sin formato. Para una visualización adecuada, se deben usar los lpGlyphs matriz.
Nota
El encabezado wingdi.h define GCP_RESULTS como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows 2000 Professional [solo aplicaciones de escritorio] |
servidor mínimo admitido | Windows 2000 Server [solo aplicaciones de escritorio] |
encabezado de |
wingdi.h (incluya Windows.h) |
Consulte también
de información general de fuentes y texto de