Использовать числовые идентификаторы текстовых полей для инициализации DoDataExchange? - PullRequest
0 голосов
/ 10 июня 2011

Итак, у меня есть около 300 переменных (прямо сейчас), и я численно упорядочил их идентификаторы в Resource.h, так что это:

#define IDC_BOX1     1
#define IDC_BOX2     2
#define IDC_BOX3     3
#define IDC_BOX4     4

и т.д.. Мой вопрос касается DoDataExchange, который я выполняю для каждого имеющегося у меня диалогового окна, содержащего все эти переменные. Я ДЕЙСТВИТЕЛЬНО не хочу выполнять следующие действия для каждой переменной:

DDX_CText(pDX, IDC_BOX1, m_nBox1);
DDX_CText(pDX, IDC_BOX2, m_nBox2);
DDX_CText(pDX, IDC_BOX3, m_nBox3);
DDX_CText(pDX, IDC_BOX4, m_nBox4);

потому что это просто смешно.

Как я могу сделать что-то в том же духе, как это:

for(int i = 0; i < **totalVariables**; i++)
     DDX_CText(pDX, **nameByIdInResourceFile(i)**, **indexOfVariableNameInArray**;

Я уверен, что это возможно, я просто не знаю, что это за функция, которая извлекает имена переменных IDC _... по их идентификационному номеру. Какие-нибудь мысли?

Ответы [ 2 ]

2 голосов
/ 10 июня 2011

Поскольку у вас возникли проблемы с последовательным и упорядоченным созданием идентификаторов ресурсов, все их легко выполнить в цикле:

for(int i = 0; i <= (IDC_BOX300-IDC_BOX1); i++)
     DDX_CText(pDX, IDC_BOX1+i, ...

Естественно, это потерпит неудачу, если кто-то придет и добавит IDC_BOX301 и не поместит его в последовательность должным образом, поэтому будьте осторожны!

Самое простое решение для имен переменных - заменить отдельные переменные массивом.

for(int i = 0; i <= (IDC_BOX300-IDC_BOX1); i++)
     DDX_CText(pDX, IDC_BOX1+i, m_nBoxes[i]);
1 голос
/ 10 июня 2011

@ Марк Рэнсом ответил великолепно.Я делаю именно то, что он предлагает, но у меня есть еще одна вещь, которую я делаю.Во время запуска моего приложения (защищенного #ifdef DEBUG) у меня есть некоторый код, который подтверждает, что все мои идентификаторы расположены в последовательном числовом порядке.Таким образом, я могу быть уверен, что кто-то (вероятно, я в будущем) не придет и не добавит идентификатор вне числовой последовательности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...