Hi, all !
В ресурсах VC++ есть сведения о версии моей программы. Эти сведения мне приходится показывать также в окне About и в титульной строке главного окна. А так как программу я часто обновляю — заколебался каждый раз изменять номер версии в 3х местах. Посему вопрос: можно ли в рантайме слазить в свои же ресурсы и узнать всю необходимую инфу ? Или я чего не понимаю ?
Здравствуйте Koumandin, 22.04.2001 04:55:06 вы писали:
>Hi, all ! >В ресурсах VC++ есть сведения о версии моей программы. Эти сведения мне приходится показывать также в окне About и в титульной строке главного окна. А так как программу я часто обновляю — заколебался каждый раз изменять номер версии в 3х местах. Посему вопрос: можно ли в рантайме слазить в свои же ресурсы и узнать всю необходимую инфу ? Или я чего не понимаю ?
Работа со структурами переменной длины. Вообще эта информация предусмотрена для программ инсталляции. Однако, ничего не мешает использовать ее здесь...
Также пожно попробовать найти ресурс по имени с помощью FindResourceEx.
Но там самому придется работать со структурой VS_VERSIONINFO.
Наверное, первый вариант проще...
Здравствуйте VLK, 22.04.2001 06:08:35 вы писали:
> >----------------------------------------------------------- >GetFileVersionInfo >VerQueryValue > >Работа со структурами переменной длины. Вообще эта информация предусмотрена для программ инсталляции. Однако, ничего не мешает использовать ее здесь...
Есть еще до безобразия простой вариант — задать версию через #define в каком-нибудь заголовке, а потом подставлять везде где можно, в том числе и в ресурсах.
resource.rc2
...
#include "Version.h"
VS_VERSION_INFO VERSIONINFO
FILEVERSION FILEVER
PRODUCTVERSION PRODUCTVER
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x21L
#else
FILEFLAGS 0x20L
#endif
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "Build", STR_BUILD
VALUE "Comments", "\0"
VALUE "CompanyName", "My Company\0"
VALUE "FileDescription", "\0"
VALUE "FileVersion", STR_FILEVER
... <skipped>
Более того, используя макросы или addin'ы в VC, можно изменять версию в version.h автоматически при каждой сборке.
Единственная проблема — проходится объявлять циферки дважны — один раз как цифры, другой раз как строки. У меня не получилось заставить препроцессор конвертнуть цифру в строку...
Здравствуйте Koumandin, 22.04.2001 04:55:06 вы писали:
>Hi, all ! >В ресурсах VC++ есть сведения о версии моей программы. Эти сведения мне приходится >показывать также в окне About и в титульной строке главного окна. А так как >программу я часто обновляю — заколебался каждый раз изменять номер версии в 3х >местах. Посему вопрос: можно ли в рантайме слазить в свои же ресурсы и узнать всю >необходимую инфу ? Или я чего не понимаю ?