PSFormatPropertyValue 함수(propsys.h)
속성 저장소에 저장된 속성 값의 형식이 지정된 유니코드 문자열 표현을 가져옵니다. 이 함수는 출력 문자열에 대한 메모리를 할당합니다.
구문
PSSTDAPI PSFormatPropertyValue(
[in] IPropertyStore *pps,
[in] IPropertyDescription *ppd,
[in] PROPDESC_FORMAT_FLAGS pdff,
[out] LPWSTR *ppszDisplay
);
매개 변수
[in] pps
형식: IPropertyStore*
속성 값을 사용하는 속성 저장소를 나타내는 IPropertyStore에 대한 포인터입니다.
[in] ppd
형식: IPropertyDescription*
값을 검색할 속성을 나타내는 IPropertyDescription에 대한 포인터입니다.
[in] pdff
속성 문자열에 적용할 형식을 지정하는 하나 이상의 PROPDESC_FORMAT_FLAGS . 가능한 값은 PROPDESC_FORMAT_FLAGS 참조하세요.
[out] ppszDisplay
형식: LPWSTR*
함수가 반환될 때 형식이 지정된 값에 대한 포인터를 null로 끝나는 유니코드 문자열로 포함합니다.
반환 값
형식: HRESULT
이 함수가 성공하면 S_OK 반환합니다. 그러지 않으면 HRESULT 오류 코드를 반환합니다.
설명
이 함수는 ppd 매개 변수를 사용하여 IPropertyDescription::FormatForDisplay를 호출합니다. 이 호출은 하나 이상의 PROPDESC_FORMAT_FLAGS 기반으로 추가 서식을 사용하여 속성 값의 유니코드 문자열 표현을 제공합니다.
PSFormatPropertyValue를 호출하기 전에 CoInitialize 또는 OleInitialize를 사용하여 COM(구성 요소 개체 모델)을 초기화해야 합니다.
함수는 메모리를 할당하고 ppszDisplay에서 해당 메모리에 대한 포인터를 반환합니다. 호출 애플리케이션은 더 이상 필요하지 않을 때 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 | 아무것도 | 세미콜론으로 구분된 값입니다. 세미콜론은 로캘에 관계없이 사용됩니다. |
예제
더 큰 프로그램의 일부로 포함할 다음 예제에서는 PSFormatPropertyValue 를 사용하여 등급 값의 형식을 지정하는 방법을 보여 줍니다.
// IPropertyStore *pStore;
// Assume the variable pps is initialized and valid.
IPropertyDescription *pPropDesc;
HRESULT hr = PSGetPropertyDescription(PKEY_Rating, IID_PPV_ARGS(&pPropDesc));
if (SUCCEEDED(hr))
{
PWSTR pszValue;
hr = PSFormatPropertyValue(pStore, pPropDesc, PDFF_DEFAULT, &pszValue);
if (SUCCEEDED(hr))
{
// pszValue contains a formatted string similar to "3 stars".
CoTaskMemFree(pszValue);
}
pPropDesc->Release();
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | propsys.h |
라이브러리 | Propsys.lib |
DLL | Propsys.dll(버전 6.0 이상) |
재배포 가능 파일 | WDS(Windows 데스크톱 검색) 3.0 |