У меня есть сервер, который получает одновременные клиентские соединения. Я в основном использовал образец MultiClientServer, предоставленный NI, в качестве модели для реализации сервера, использующего многопоточность. У меня есть до 4 клиентов, с которыми каждый клиент отправляет информацию о своих внутренних переменных. Моя цель - отображать эти данные на отдельных вкладках, в зависимости от того, какой клиент отправил его. У меня есть массив, который содержит ручку для каждого элемента вкладок,Динамически назначать имена элементов управления пользовательским интерфейсом во время выполнения
static int ClientTABHandle[4] = {0,0,0,0};
Когда клиент подключения и сообщать о своих идентификаторов, идентификатор используется для обозначения правой ClientTABHandle при вызове SetCtrlVal. Например,
SetCtrlVal(boardTABHandle[clientInfoPtr->clientID],<control name>, <value>);
Значения в <> являются symblic.
Теперь это позволяет мне использовать правую дескриптор TAB во время выполнения в зависимости от того, с каким клиентом я имею дело, но я не могу найти способ динамического обращения. Поскольку элементы управления пользовательского интерфейса находятся в отдельных вкладках, каждый элемент управления будет иметь префикс своего имени TAB. Например, если TAB называются TABPANEL1, TABPANEL2, TABPANEL3 и TABPANEL 4, тогда элемент пользовательского интерфейса в первой TAB будет называться TABPANEL1_CONTROLNAME. Но как я могу создать строку во время выполнения, которая ссылается на элемент управления и использовать его в команде SetCtrlVal? Мне не нравится использовать Fmt, так как это замедлит работу, и, кроме того, я не знаю, как использовать строку, которая будет оценивать имя элемента управления.
сообщение *** [ЗДЕСЬ] (http://forums.ni. com/t5/LabWindows-CVI/How-to-get-control-button-handle-HWND/td-p/2041814) *** (на веб-сайте NI) обратился к общему случаю получения дескриптора в ctrl,Короче говоря, сообщение говорит, что это невозможно. Я использовал назначения переменных времени выполнения для обычных ctrls, никогда не для вкладок. Элементы управления вкладками в LabWindows/CVI - это (как вы обнаружили) слой под дескриптором панели вкладок. Что еще более важно, вы не можете «создать» конкатенированные ссылки интерфейса, найденные в файле «UI» .h во время выполнения. Они создаются при сохранении файла .uir (редактирование этого не рекомендуется) – ryyker