Labwindows 在运行时动态分配UI控件名称

Labwindows 在运行时动态分配UI控件名称,labwindows,Labwindows,我有一个同时接收客户端连接的服务器。我主要使用NI提供的MultiClient server示例作为模型来实现使用多线程的服务器。 我有多达4个客户端连接,每个客户端发送有关其内部变量的信息。我的目标是根据发送数据的客户端,在单独的选项卡中显示这些数据。 我有一个数组,它保存每个tab元素的句柄 static int ClientTABHandle[4] = {0,0,0,0}; 当客户端连接并报告其ID时,调用SetCtrlVal时,该ID用于引用正确的ClientTABHandle。比

我有一个同时接收客户端连接的服务器。我主要使用NI提供的MultiClient server示例作为模型来实现使用多线程的服务器。 我有多达4个客户端连接,每个客户端发送有关其内部变量的信息。我的目标是根据发送数据的客户端,在单独的选项卡中显示这些数据。 我有一个数组,它保存每个tab元素的句柄

static int ClientTABHandle[4] = {0,0,0,0};  
当客户端连接并报告其ID时,调用SetCtrlVal时,该ID用于引用正确的ClientTABHandle。比如说,

SetCtrlVal(boardTABHandle[clientInfoPtr->clientID],<control name>, <value>);
SetCtrlVal(boardTABHandle[ClientInfo->clientID];
中的值为符号

现在,这让我可以根据正在处理的客户机在运行时使用正确的选项卡句柄,但我找不到动态引用的方法。由于UI控件位于单独的选项卡中,因此每个控件都有其选项卡名称的前缀。例如,如果选项卡名为TABPANEL1、TABPANEL2、TABPANEL3和TABPANEL 4,则第一个选项卡上的UI元素将被称为TABPANEL1\u CONTROLNAME。 但是,如何在运行时生成引用控件的字符串并在SetCtrlVal命令中使用该字符串呢?我不喜欢使用Fmt,因为它会减慢速度,另外,我不知道如何使用将计算为控件名称的字符串。

您的问题
如何在运行时生成引用控件的字符串并在SetCtrlVal命令中使用它?

如果您的方法允许您以编程方式创建以后需要
SetCtrlVal
SetCtrlAttribute
的控件,那么答案可能是尝试。它将允许您在选项卡面板上创建控件,并且它将为创建的每个控件返回一个唯一的句柄(ControlID)。所有信息都在链接中,但以下是其原型:

int NewCtrl (int Panel_Handle, int Control_Style, char Control_Label[], int control_Top, int Control_Left);
使用NewCtrl的示例代码可在此处找到:
C:\ProgramFiles(x86)\National Instruments\CVIxxxx\samples\userint\buildui.cws
C:\Program Files(x86)\National Instruments\CVIxxxx\samples\userint\ICOViewer.cws

这篇文章(在NI网站上)讲述了获取ctrl句柄的一般情况,简而言之,这篇文章说这是无法做到的。我对常规CTRL使用了运行时变量分配,而对选项卡从未使用过。LabWindows/CVI中的选项卡控件(正如您所发现的)位于选项卡面板句柄下的层。更重要的是,您不能在运行时“创建”在“UI”.h文件中找到的串联UI引用。它们是在保存.uir文件时创建的(不建议编辑此文件)