PSFormatForDisplayAlloc 함수(propsys.h)
PROPVARIANT 구조체에 저장된 속성 값의 형식이 지정된 유니코드 문자열 표현을 가져옵니다. 이 함수는 출력 문자열에 대한 메모리를 할당합니다.
구문
PSSTDAPI PSFormatForDisplayAlloc(
[in] REFPROPERTYKEY key,
[in] REFPROPVARIANT propvar,
[in] PROPDESC_FORMAT_FLAGS pdff,
[out] PWSTR *ppszDisplay
);
매개 변수
[in] key
형식: REFPROPERTYKEY
값을 검색할 속성의 이름을 지정하는 PROPERTYKEY 에 대한 참조입니다.
[in] propvar
형식: REFPROPVARIANT
속성의 형식과 값을 포함하는 PROPVARIANT 구조체에 대한 참조입니다.
[in] pdff
속성 문자열에 적용할 형식을 지정하는 하나 이상의 플래그입니다. 가능한 값은 PROPDESC_FORMAT_FLAGS 참조하세요.
[out] ppszDisplay
형식: PWSTR*
함수가 반환될 때 요청된 속성 값의 null로 끝나는 유니코드 문자열 표현에 대한 포인터를 포함합니다.
반환 값
형식: HRESULT
다음 값 중 하나를 반환합니다.
반환 코드 | Description |
---|---|
|
서식이 지정된 문자열이 성공적으로 만들어졌습니다. 빈 반환 문자열과 함께 S_OK 빈 입력 문자열 또는 빈 문자열로 형식이 지정된 비어 있지 않은 값이 있음을 나타냅니다. |
|
서식이 지정된 문자열이 만들어지지 않았습니다. 빈 반환 문자열과 함께 S_FALSE 빈 문자열이 VT_EMPTY 발생했음을 나타냅니다. |
|
할당이 실패했음을 나타냅니다. |
설명
이 함수는 스키마 하위 시스템의 IPropertySystem::FormatForDisplayAlloc 구현을 호출합니다. 이 호출은 하나 이상의 PROPDESC_FORMAT_FLAGS 기반으로 추가 서식을 사용하여 속성 값의 유니코드 문자열 표현을 제공합니다. 스키마 하위 시스템에 의해 PROPERTYKEY 가 인식되지 않는 경우 IPropertySystem::FormatForDisplayAlloc 은 값의 VARTYPE에 따라 값의 형식을 지정하려고 시도합니다.
PSFormatForDisplayAlloc를 호출하기 전에 CoInitialize 또는 OleInitialize를 사용하여 COM(구성 요소 개체 모델)을 초기화해야 합니다.
함수는 CoTaskMemAlloc 를 통해 메모리를 할당하고 ppszDisplay 매개 변수를 통해 해당 메모리에 대한 포인터를 반환합니다. 호출 애플리케이션은 더 이상 필요하지 않은 경우 CoTaskMemFree 를 사용하여 해당 리소스를 해제해야 합니다.
이 함수의 목적은 데이터를 사용자에게 표시하기에 적합한 문자열로 변환하는 것입니다. 값은 현재 로캘, 사용자의 언어, PROPDESC_FORMAT_FLAGS 및 속성 키로 지정된 속성 설명에 따라 형식이 지정됩니다. 속성 설명 스키마가 값의 서식에 미치는 영향에 대한 자세한 내용은 다음 topics.
일반적으로 PROPDESC_FORMAT_FLAGS 속성 설명에 지정된 형식을 수정하는 데 사용됩니다.출력 문자열에는 유니코드 방향 문자가 포함될 수 있습니다. 이러한 비스페이싱 문자는 유니코드 양방향 알고리즘에 영향을 주므로 LTR(왼쪽에서 오른쪽) 언어가 RTL(오른쪽에서 왼쪽) 창에 그려지거나 RTL이 LTR 창에 그려질 때 값이 올바르게 표시됩니다. 이러한 문자는 다음과 같습니다. "\x200e", "\x200f", "\x202a", "\x202b", "\x202c", "\x202d", "\x202e".
다음 속성은 특수 형식을 사용하며 PROPDESC_FORMAT_FLAGS 영향을 받지 않습니다. 인용된 예제는 현재 로캘이 영어로 설정된 문자열에 대한 것입니다. 일반적으로 출력은 지정된 경우를 제외하고 지역화됩니다.
속성 | 형식 |
---|---|
System.FileAttributes | 다음 파일 특성은 문자로 변환되고 문자열을 만들기 위해 추가됩니다(예: 0x1801 값(FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_COMPRESSED | FILE_ATTRIBUTE_OFFLINE)는 "RCO"로 변환됩니다.
|
System.Photo.ISOSpeed | 예를 들어 "ISO-400"입니다. |
System.Photo.ShutterSpeed |
APEX 값은 다음 수식을 사용하여 노출 시간으로 변환됩니다.
예를 들어 "2초"입니다. 또는 "1/125 초". |
System.Photo.ExposureTime | 예를 들어 "2초"입니다. 또는 "1/125초" |
System.Photo.Aperture |
APEX 값은 다음 수식을 사용하여 F 숫자로 변환됩니다.
예를 들어 "f/5.6"입니다. |
System.Photo.FNumber | 예를 들어 "f/5.6"입니다. |
System.Photo.SubjectDistance | 예를 들어 "15m" 또는 "250mm"입니다. |
System.Photo.FocalLength | 예를 들어 "50mm"입니다. |
System.Photo.FlashEnergy | 예를 들어 "500 bpcs"입니다. |
System.Photo.ExposureBias | 예를 들어 "-2단계", "0단계" 또는 "+3단계"가 있습니다. |
System.Computer.DecoratedFreeSpace | 예를 들어 "13.2GB의 105MB 무료"입니다. |
System.ItemType | 예를 들어 "애플리케이션" 또는 "JPEG 이미지"입니다. |
System.ControlPanel.Category | 예를 들어 "모양 및 개인 설정"입니다. |
System.ComputerName | 예를 들어 "LITWARE05(이 컴퓨터)" 또는 "testbox07"입니다. |
속성 키가 등록된 속성 스키마의 속성 설명에 해당하지 않는 경우 이 함수는 값의 형식에 따라 형식을 선택합니다.
값의 형식 | 서식 |
---|---|
VT_BOOLEAN | 지원되지 않습니다. |
VT_FILETIME | PROPDESC_FORMAT_FLAGS 및 현재 로 캘에 지정된 날짜/시간 문자열입니다. PDFF_SHORTTIME 및 PDFF_SHORTDATE 기본값입니다. 예를 들어 "2006년 11월 13일 오후 3:22"입니다. |
숫자 VARTYPE | 현재 로캘의 10진수 문자열입니다. 예를 들어 "42"입니다. |
VT_LPWSTR 또는 기타 | 문자열로 변환됩니다. "\r", "\t" 또는 "\n" 시퀀스는 단일 공백으로 바뀝니다. |
VT_VECTOR | 아무것도 | 세미콜론으로 구분된 값입니다. 세미콜론은 로캘에 관계없이 사용됩니다. |
예제
더 큰 프로그램의 일부로 포함할 다음 예제에서는 PSFormatForDisplayAlloc 를 사용하여 등급 값의 형식을 지정하는 방법을 보여 줍니다.
PROPVARIANT propvar;
HRESULT hr = InitPropVariantFromUInt32(RATING_THREE_STARS_SET, &propvar);
if (SUCCEEDED(hr))
{
PWSTR pszValue;
hr = PSFormatForDisplayAlloc(PKEY_Rating, propvar, PDFF_DEFAULT, &pszValue);
if (SUCCEEDED(hr))
{
// pszValue contains a formatted string similar to "3 stars".
CoTaskMemFree(pszValue);
}
PropVariantClear(&propvar);
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | propsys.h |
라이브러리 | Propsys.lib |
DLL | Propsys.dll(버전 6.0 이상) |
재배포 가능 파일 | WDS(Windows 데스크톱 검색) 3.0 |