GCP_RESULTSW 구조체(wingdi.h)
GCP_RESULTS 구조체에는 문자열의 문자에 대한 정보가 포함됩니다. 이 구조체는 GetCharacterPlacement 함수의 결과를 받습니다. 일부 언어의 경우 배열의 첫 번째 요소에는 언어 종속 정보가 더 많이 포함될 수 있습니다.
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;
lStructSize
구조체의 크기(바이트)입니다.
lpOutString
출력 문자열을 수신하거나 출력 문자열이 필요하지 않은 경우 NULL
lpOrder
순서 인덱스가 필요하지 않은 경우 정렬 인덱스를 받거나 NULL
일반적으로 GetFontLanguageInfo 원래 문자열의 순서를 다시 지정해야 한다는 GCP_REORDER 플래그를 반환할 때 사용됩니다. 예를 들어 텍스트가 오른쪽에서 왼쪽으로 실행되는 히브리어에서 lpOrder 배열은 원래 문자열에 있는 각 요소의 정확한 위치를 제공합니다.
lpDx
인접한 문자 셀 사이의 거리를 받거나 이러한 거리가 필요하지 않은 경우 NULL
이 배열의 거리는 표시 순서대로 표시됩니다. 원래 문자열에서 문자를
width = lpDx[lpOrder[i]];
lpCaretPos
캐리트 위치 값을 받거나 캐리트 위치가 필요하지 않은 경우 NULL
이 배열의 값은 입력 순서입니다. 원래 문자열에서 문자를
position = lpCaretPos[i];
lpClass
문자 분류를 포함하거나 받는 배열에 대한 포인터입니다. 값은 문자열에 문자를 배치하는 방법을 나타내며 GetStringTypeEx 함수에서 반환된 CT_CTYPE2 값과 유사하지만 동일하지는 않습니다. 배열의 각 요소를 0 또는 다음 값 중 하나로 설정할 수 있습니다.
또한 GCP_CLASSIN 플래그를 사용하여 lpClass 배열의 값을 제공할 때 다음을 사용할 수 있습니다.
GCP_REORDER 플래그를 사용하는 언어의 경우 GCP_CLASSIN 플래그와 함께 다음 값을 사용할 수도 있습니다. lpClass 배열의 아무 곳에서나 사용할 수 있는 이전 값과 달리 다음 값은 모두 배열의 첫 번째 위치에서만 사용됩니다. 모두 다른 분류와 결합합니다.
GCPCLASS_PREBOUNDLTR 및 GCPCLASS_PREBOUNDRTL GCPCLASSPOSTBOUNDLTR 및 GCPCLASSPOSTBOUNDRTL과 마찬가지로 상호 배타적입니다.
특정 방식으로 문자 레이아웃을 강제로 수행하려면 해당 배열 요소에 대한 분류를 미리 설정합니다. 함수는 이러한 미리 설정된 분류를 변경하지 않고 0으로 설정된 배열 요소에 대해서만 분류를 계산합니다. 사전 설정 분류는 GCP_CLASSIN 플래그가 설정되고 lpClass 배열이 제공된 경우에만 사용됩니다.
GetFontLanguageInfo 현재 글꼴에 대한 GCP_REORDER 반환하지 않으면 GCPCLASS_LATIN 값만 의미가 있습니다.
lpGlyphs
문자열을 렌더링하는 데 사용되는 문자 모양을 식별하는 값을 수신하거나 문자 모양 렌더링이 필요하지 않은 경우 NULL
이 배열은 모든 형식의 합자, 커닝 또는 순서 전환이 있는 문자열에서 둘 이상의 작업이 수행되는 경우에 유용합니다. 후속 작업에 이 배열의 값을 사용하면 매번 문자 모양 인덱스를 생성하는 데 필요한 시간이 절약됩니다.
이 배열은 항상 문자 모양 인덱스를 포함하며 이 배열을 ExtTextOut 함수와 함께 사용할 때 항상 ETO_GLYPH_INDEX 값을 사용해야 합니다.
GCP_LIGATE 사용하면 함께 리게팅되는 문자 수를 제한할 수 있습니다. (예를 들어 아랍어에서는 3자 합자로 된 것이 일반적입니다). 이 작업은 lpGcpResults->lpGlyphs[0]에 필요한 최대값을 설정하여 수행됩니다. 최대값이 필요하지 않은 경우 이 필드를 0으로 설정해야 합니다.
GetFontLanguageInfo GCP_GLYPHSHAPE 플래그를 반환하는 아랍어와 같은 언어의 경우 문자가 단어의 시작, 중간 또는 끝에 있는지 여부에 따라 문자의 문자 모양이 달라집니다. 일반적으로 입력 문자열의 첫 번째 문자도 단어의 첫 번째 문자가 되고 입력 문자열의 마지막 문자는 단어의 마지막 문자로 처리됩니다. 그러나 표시된 문자열이 전체 문자열의 하위 집합인 경우(예: 스크롤된 텍스트의 섹션을 표시할 때) 그렇지 않을 수 있습니다. 이러한 경우 첫 번째 또는 마지막 문자를 초기 또는 최종 형식이 아닌 모양으로 강제로 지정하는 것이 좋습니다. 이렇게 하려면 lpGlyphs 배열의 첫 번째 위치는 GCPGLYPH_LINKBEFORE 및/또는 GCPGLYPH_LINKAFTER 값으로 위의 합자 값의 OR 연산을 수행하여 사용됩니다. 예를 들어 GCPGLYPH_LINKBEFORE 값 | 2는 2자 합자는 필요한 최대값이며 문자열의 첫 번째 문자는 단어 중간에 있는 것처럼 처리되어야 합니다.
nGlyphs
입력 시 이 멤버는 배열 포인터 멤버가 가리키는 배열의 크기로 설정해야 합니다. 출력 시 출력 배열에 입력된 문자 모양 수로 설정됩니다. 문자 모양 대체가 필요하지 않은 경우(즉, 각 입력 문자가 정확히 하나의 문자 모양에 매핑됨) 이 멤버는 입력 시와 동일합니다.
nMaxFit
GetCharacterPlacement 함수의 nMaxExtent 매개 변수에 지정된 익스텐트 내에 맞는 문자 수입니다. GCP_MAXEXTENT 또는 GCP_JUSTIFY 값이 설정된 경우 이 값은 원래 문자열의 문자 수보다 작을 수 있습니다. 이 멤버는 GCP_MAXEXTENT 또는 GCP_JUSTIFY 값이 지정되었는지 여부에 관계없이 설정됩니다. 출력 문자 모양을 지정하는 nGlyphs달리 nMaxFit 입력 문자열의 문자 수를 나타냅니다. 라틴어 SBCS 언어의 경우 동일합니다.
lpGlyphs, lpOutString또는 둘 다 필요하지 않은지 여부는 GetFontLanguageInfo 호출의 결과에 따라 달라집니다.
영어와 같은 언어에 대한 글꼴의 경우 GCP_DBCS, GCP_REORDER, GCP_GLYPHSHAPE, GCP_LIGATE, GCP_DIACRITIC 또는 GCP_KASHIDA 플래그가 반환되지 않는 경우 적절한 작업에는 배열이 필요하지 않습니다. (필수는 아니지만 계속 사용할 수 있습니다.
히브리어와 같은 언어에 대한 글꼴의 경우, 순서를 변경하지만 일반적으로 문자 모양이 더 이상 없는 경우 lpOutString 사용해야 합니다. 그러면 화면에서 읽을 수 있는 순서로 문자열이 표시됩니다. 그러나 lpGlyphs 배열은 일반적으로 필요하지 않습니다. (글꼴이 TrueType/Open 글꼴인 경우 히브리어에는 추가 문자 모양이 있을 수 있습니다.)
GetFontLanguageInfo GCP_GLYPHSHAPE 플래그를 반환하는 태국어 또는 아랍어와 같은 언어의 경우 lpOutStringGetCharacterPlacement전달된 문자열의 표시 가능한 순서를 제공하지만 값은 여전히 셰이핑되지 않은 문자입니다. 적절한 표시를 위해 lpGlyphs 배열을 사용해야 합니다.
참고
wingdi.h 헤더는 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 GCP_RESULTS 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows 2000 Server [데스크톱 앱만 해당] |
헤더 | wingdi.h(Windows.h 포함) |
ExtTextOut
GetCharacterPlacement
GetFontLanguageInfo