次の方法で共有


PSFormatForDisplayAlloc 関数 (propsys.h)

PROPVARIANT 構造体に格納されているプロパティ値の書式設定された Unicode 文字列表現を取得します。 この関数は、出力文字列にメモリを割り当てます。

構文

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

プロパティ文字列に適用する形式を指定する 1 つ以上のフラグ。 使用可能な値については 、「PROPDESC_FORMAT_FLAGS 」を参照してください。

[out] ppszDisplay

種類: PWSTR*

関数が戻るときに、 には、null で終わる、要求されたプロパティ値の Unicode 文字列表現へのポインターが含まれます。

戻り値

型: HRESULT

次のいずれかの値を返します。

リターン コード 説明
S_OK
書式設定された文字列が正常に作成されました。 空の 戻り文字列と共にS_OKは、空の入力文字列または空でない値が空の文字列として書式設定されたことを示します。
S_FALSE
書式設定された文字列が作成されませんでした。 空の戻り文字列と共にS_FALSEは、空の文字列がVT_EMPTYの結果であることを示します。
E_OUTOFMEMORY
割り当てが失敗したことを示します。

注釈

この関数は、スキーマ サブシステムの IPropertySystem::FormatForDisplayAlloc の実装を呼び出します。 この呼び出しでは、プロパティ値の Unicode 文字列表現が提供され、1 つ以上の PROPDESC_FORMAT_FLAGSに基づいて書式設定が追加されます。 PROPERTYKEY がスキーマ サブシステムによって認識されない場合、IPropertySystem::FormatForDisplayAlloc は値の VARTYPE に従って値の書式設定を試みます。

PSFormatForDisplayAlloc を呼び出す前に、CoInitialize または OleInitialize を使用してコンポーネント オブジェクト モデル (COM) を初期化する必要があります。

関数は 、CoTaskMemAlloc を介してメモリを割り当て、 ppszDisplay パラメーターを使用してそのメモリへのポインターを返します。 呼び出し元のアプリケーションでは 、不要になったときに CoTaskMemFree を使用してそのリソースを解放する必要があります。

この関数の目的は、データをユーザーに表示するのに適した文字列に変換することです。 値は、現在のロケール、ユーザーの言語、 PROPDESC_FORMAT_FLAGS、およびプロパティ キーで指定されたプロパティの説明に従って書式設定されます。 プロパティ記述スキーマが値の書式設定にどのように影響するかについては、次のトピックを参照してください。

通常、 PROPDESC_FORMAT_FLAGS は、プロパティの説明で規定されている形式を変更するために使用されます。

出力文字列には Unicode 方向文字を含めることができます。 これらの非スペーシング文字は Unicode 双方向アルゴリズムに影響を与え、左から右 (LTR) 言語が右から左 (RTL) ウィンドウに描画されたとき、または LTR ウィンドウに RTL が描画されたときに値が正しく表示されるようにします。 これらの文字には、次のものが含まれます。 "\x200e", "\x200f", "\x202a", "\x202b", "\x202c", "\x202d", "\x202e".

次のプロパティは特殊な形式を使用し、 PROPDESC_FORMAT_FLAGSの影響を受けません。 引用されている例は、現在のロケールが英語に設定されている文字列に対するものです。通常、出力は、特に記載されている場合を除いてローカライズされます。

プロパティ Format
System.FileAttributes 次のファイル属性は、文字に変換され、文字列を作成するために追加されます (たとえば、0x1801の値 (FILE_ATTRIBUTE_READONLY |FILE_ATTRIBUTE_COMPRESSED |FILE_ATTRIBUTE_OFFLINE) は "RCO" に変換されます。
  • FILE_ATTRIBUTE_READONLY (0x00000001) - 'R'
  • FILE_ATTRIBUTE_SYSTEM (0x00000004) - 'S'
  • FILE_ATTRIBUTE_ARCHIVE (0x00000020) -'A'
  • FILE_ATTRIBUTE_COMPRESSED (0x00000800) - 'C'
  • FILE_ATTRIBUTE_ENCRYPTED (0x00004000) - 'E'
  • FILE_ATTRIBUTE_OFFLINE (0x00001000) - 'O'
  • FILE_ATTRIBUTE_NOT_CONTENT_INDEXED (0x00002000) - 'I'
System.Photo.ISOSpeed たとえば、"ISO-400" とします。
System.Photo.ShutterSpeed APEX 値は、次の数式を使用して露出時間に変換されます。

Exposure_time = 2^(-APEX_value)

たとえば、"2 秒" とします。または "1/125 秒"。

System.Photo.ExposureTime たとえば、"2 秒" とします。または "1/125 秒" です。
System.Photo.Aperture APEX 値は、次の数式を使用して F 数値に変換されます。

F_Number = 2^(APEX_Value / 2)

たとえば、"f/5.6" とします。

System.Photo.FNumber たとえば、"f/5.6" とします。
System.Photo.SubjectDistance たとえば、"15 m"、"250 mm" などです。
System.Photo.FocalLength たとえば、"50 mm" とします。
System.Photo.FlashEnergy たとえば、"500 bpcs" とします。
System.Photo.ExposureBias たとえば、"-2 ステップ"、"0 ステップ"、"+3 ステップ" などです。
System.Computer.DecoratedFreeSpace たとえば、"105 MB の空き 13.2 GB" などです。
System.ItemType たとえば、"Application" や "JPEG Image" などです。
System.ControlPanel.Category たとえば、"外観と個人用設定" などです。
System.ComputerName たとえば、"LITWARE05 (このコンピューター)" や "testbox07" などです。
 

プロパティ キーが登録されているプロパティ スキーマのプロパティの説明に対応していない場合、この関数は値の型に基づいて形式を選択します。

値の型 フォーマット
VT_BOOLEAN サポートされていません。
VT_FILETIME PROPDESC_FORMAT_FLAGSと現在のロケールで指定された日付/時刻文字列。 PDFF_SHORTTIMEとPDFF_SHORTDATEが既定値です。 たとえば、"11/13/2006 3:22 PM" などです。
数値 VARTYPE 現在のロケールの 10 進文字列。 たとえば、"42" とします。
VT_LPWSTRまたはその他 文字列に変換されます。 "\r"、"\t"、または "\n" のシーケンスは、1 つのスペースに置き換えられます。
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
Library Propsys.lib
[DLL] Propsys.dll (バージョン 6.0 以降)
再頒布可能パッケージ Windows デスクトップ検索 (WDS) 3.0

こちらもご覧ください

PSFormatForDisplay

PSFormatPropertyValue

プロパティの説明スキーマ