2009-10-02 15 views

Odpowiedz

8

Proces preprocessor działa również w pliku .RC. Zdefiniuj udostępnione dane w nagłówku dołączonym zarówno przez .RC, jak i kod źródłowy.

czyli w Foo.h:

#define MY_PRODUCT_NAME Foo 

Następnie w foo.rc:

#include "foo.h" 

VS_VERSION_INFO VERSIONINFO 
    // Many lines omitted 
    VALUE "ProductName", MY_PRODUCT_NAME 

Następnie w foo.cpp:

#include "foo.h" 

cout << MY_PRODUCT_NAME; 
+0

Dobry pomysł, ale w pliku RC zawiera on ciąg informacji, który również zawiera informacje o wersji (w nieco innym formacie). Jakikolwiek sposób na prosty dostęp do wartości plików RC zamiast ponownego definiowania ich i utrzymywania ich we wspólnym miejscu? – known

+0

Żadne, które znam - rc.exe jest niezależne od cl.exe. – Michael

+0

Po zmianie okna dialogowego lub cokolwiek innego pracujesz, tworzony jest nowy plik .rc, a stary jest nadpisywany. Więc tego '#include" foo.h "' już tam nie będzie. To nie jest dobre rozwiązanie. – LihO

2

Moje rozwiązanie tego problemu jest prosty i działa dobrze i nie jest zamazywany przez edytor zasobów. 1. Przenieś całą sekcję VS_VERSION_INFO do pliku .RC2. 2. Zastąp wszystkie numery wersji i łańcuchy wartościami #define w nowym pliku version.h. 3. Dodaj #include "version.h" do pliku .RC2. Teraz możesz również włączyć version.h w innych plikach .CPP i użyć wartości #define w swoim kodzie, na przykład, aby wyświetlić zasoby wersji aplikacji w oknie dialogowym.

+1

Firma Microsoft sugeruje również to rozwiązanie (choć nie jest to łatwe do znalezienia google): http://support.microsoft.com/kb/237870/en-us – Steed

Powiązane problemy