Kamus Nama Tampilan Set Properti
Kamus nama tampilan properti memungkinkan properti mengatur pengguna untuk melampirkan makna ke properti - di luar yang disediakan oleh indikator jenis.
Struktur Kamus
Kamus berisi hitungan entri dalam daftar, diikuti dengan daftar entri kamus.
typedef struct tagDICTIONARY
{
DWORD cEntries ; // Count of entries in the list
ENTRY rgEntry[ cEntries ] ; // Property ID/String pair
} DICTIONARY ;
Struktur Entri Kamus
Setiap entri kamus dalam daftar adalah pasangan Pengidentifikasi Properti/String. Berikut ini adalah definisi struktur semu untuk entri kamus. Ini adalah struktur semu karena anggota sz[] berukuran variabel.
typedef struct tagENTRY
{
DWORD propid ; // Property ID
DWORD cch ; // Count of characters in the string
char sz[cch]; // Zero-terminated string
} ENTRY ;
Kamus Sampel
Contoh transfer data pasar saham berikut mungkin menyertakan nama yang dapat ditampilkan "Kuotasi Saham" untuk seluruh set, dan "Simbol Ticker" untuk PID_SYMBOL. Jika kumpulan properti hanya berisi simbol dan kamus, bagian set properti akan memiliki aliran byte yang terlihat seperti berikut ini.
Offset Bytes
; Start of section
0000 5C 01 00 00 ; DWORD size of section
0004 04 00 00 00 ; DWORD number of properties in section
; Start of PropID/Offset pairs
0008 01 00 00 00 ; DWORD Property ID (1 == code page)
000C 28 00 00 00 ; DWORD offset to property ID
0010 00 00 00 80 ; DWORD Property ID (0x80000000 == locale
ID)
0014 30 00 00 00 ; DWORD offset to property ID
0018 00 00 00 00 ; DWORD Property ID (0 == dictionary)
001C 38 00 00 00 ; DWORD offset to property ID
0020 07 00 00 00 ; DWORD Property ID (7 == PID_SYMBOL)
0024 5C 01 00 00 ; DWORD offset to property ID
; Start of Property 1 (code page)
0028 01 00 00 00 ; DWORD type indicator (VT_12)
002C B0 04 ; USHORT codepage (0x04b0 == 1200 ==
unicode)
002E 00 00 ; Pad to 32-bit boundary
; Start of Property 0x80000000 (Local ID)
0030 13 00 00 00 ; DWORD type indicator (VT_U14)
0034 09 04 00 00 ; ULONG locale ID (0x0409 == American
English)
; Start of Property 0 (the dictionary)
0038 08 00 00 00 ; DWORD number of entries in dictionary
(Note: No type indicator)
003C 00 00 00 00 ; DWORD propid == 0 (the dictionary)
0040 0C 00 00 00 ; DWORD cch == wcslen(L"Stock Quote") +
sizeof(L'\0') == 12
0044 L"Stock Quote" ; wchar_t wsz(12)
005C 05 00 00 00 ; DWORD propid == 5 (PID_HIGH)
0060 0B 00 00 00 ; DWORD cch == wcslen(L"High Price") +
sizeof(L'\0') == 11
0064 L"High Price\0"; wchar_t wsz(11)
007A 00 00 ; padding for 32-bit alignment (necessary
because the codepage is unicode)
007C 07 00 00 00 ; DWORD propid == 7 (PID_SYMBOL)
0080 0E 00 00 00 ; DWORD cch - wcslen(L"Ticker Symbol\0")
== 14
0084 L"Ticker Symbol\0" ; wchar_t wsz(14)
// The dictionary would continue, but may not contain entries
// for every possible property, and may contain entries for
// properties that are not present. Entries are not required
// to be in order.
Ketahui masalah berikut mengenai kamus set properti:
- ID Properti 0 tidak memiliki indikator tipe. Jenis data DWORD yang menunjukkan jumlah entri berada di posisi indikator jenis.
- Jumlah karakter dalam string cch menyertakan karakter nol yang mengakhiri string. Ketika halaman kode kumpulan properti bukan Unicode, bidang ini sebenarnya merupakan jumlah byte . Untuk kumpulan properti dengan versi format 0, jumlah ini mungkin tidak melebihi 256. Untuk set properti dengan versi format 1, jumlah ini mungkin sebesar yang diizinkan oleh total ukuran set properti.
- Kamus bersifat opsional. Tidak semua nama properti dalam set diperlukan untuk muncul dalam kamus. Sebaliknya, tidak semua nama dalam kamus diperlukan untuk sesuai dengan properti dalam set. Kamus harus menghilangkan entri untuk properti yang diasumsikan diasumsikan secara universal oleh aplikasi yang memanipulasi kumpulan properti. Biasanya, nama untuk set properti dasar untuk standar yang diterima secara luas dihilangkan, tetapi set properti tujuan khusus dapat mencakup kamus untuk digunakan oleh browser.
- Nama properti dalam kamus disimpan di halaman kode yang ditunjukkan oleh ID Properti 1. Untuk halaman kode ANSI, setiap entri kamus diratakan byte. Dengan demikian, tidak ada penspasian antara nama properti dengan ID Properti 0. Ini adalah satu-satunya kasus di mana nilai jenis data DWORD (ID properti dan DWORDpanjang nama properti) tidak perlu diselaraskan pada batas 32-bit. Untuk halaman Unicode, setiap entri kamus diratakan 32-bit.
- Nama properti yang dimulai dengan karakter Unicode biner 0x0001 melalui 0x001F disediakan untuk digunakan di masa mendatang.
- Nama properti yang terkait dengan ID Properti 0 mewakili nama seluruh set properti.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk