Udostępnij za pośrednictwem


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 
}