zasób User-Defined
Instrukcja definicji zasobów zdefiniowana przez użytkownika definiuje zasób zawierający dane specyficzne dla aplikacji. Dane mogą mieć dowolny format i można je zdefiniować jako zawartość danego pliku (jeśli podano parametr nazwy pliku) lub jako serię liczb i ciągów (jeśli określono nieprzetworzone dane bloku).
nameID typeID filename
Nazwa pliku określa nazwę pliku zawierającego dane binarne zasobu. Zawartość pliku jest dołączana jako zasób. RC nie interpretuje danych binarnych w żaden sposób. Jest to odpowiedzialność programisty za zapewnienie prawidłowego dopasowania danych do architektury komputera docelowego.
Zasób zdefiniowany przez użytkownika można również zdefiniować całkowicie w skrygcie zasobu przy użyciu następującej składni:
nameID typeID { raw-data }
Parametry
-
nameID
-
Unikatowa nazwa lub 16-bitowa liczba całkowita bez znaku, która identyfikuje zasób.
-
typeID
-
Unikatowa nazwa lub 16-bitowa liczba całkowita bez znaku, która identyfikuje typ zasobu. Jeśli podano liczbę, musi być większa niż 255. Liczby od 1 do 255 są zarezerwowane dla istniejących i przyszłych ponownie zdefiniowanych typów zasobów.
-
nazwy pliku
-
Nazwa pliku zawierającego dane zasobu. Parametr musi być prawidłową nazwą pliku; musi być pełną ścieżką, jeśli plik nie znajduje się w bieżącym katalogu roboczym.
-
danych pierwotnych
-
Nieprzetworzone dane składające się z co najmniej jednej liczby całkowitej lub ciągów znaków. Liczby całkowite można określić w formacie dziesiętnych, ósemkowym lub szesnastkowym. Aby zapewnić zgodność z 16-bitowym systemem Windows, liczby całkowite są przechowywane jako wartości programu WORD. Liczbę całkowitą można przechowywać jako wartość DWORD, kwalifikując liczbę całkowitą z sufiksem "L".
Ciągi są ujęte w znaki cudzysłowu. Rc nie dołącza automatycznie znaku null zakończenia do ciągu. Każdy ciąg jest sekwencją określonych znaków ANSI, chyba że kwalifikujesz go jako ciąg wieloznaczny z prefiksem "L".
Blok danych rozpoczyna się na granicy DWORD, a RC nie wykonuje wypełnienia ani wyrównania danych w bloku nieprzetworzonych danych. Jest to odpowiedzialność programisty za zapewnienie prawidłowego dopasowania danych w bloku.
Przykład
W poniższym przykładzie przedstawiono kilka instrukcji zdefiniowanych przez użytkownika:
array MYRES data.res
14 300 custom.res
18 MYRES2
{
"Here is an ANSI string\0", // explicitly null-terminated
L"Here is a Unicode string\0", // explicitly null-terminated
1024, // integer, stored as WORD
7L, // integer, stored as DWORD
0x029a, // hex integer
0o733, // octal integer
}