多个控件共同应用一个回调函数如何进行区分,首先看看回调函数形参:
int CVICALLBACK ChangeCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
panel:面板标识;
control:控件的标识;
event:事件标识;
int CVICALLBACK ChangeCallback (int panel, int control, int event,
void *callbackData, int eventData1,
int eventData2)
{
int currentItem;
MyStruct *tempItem;
switch (event)
{
case EVENT_COMMIT:
if (!g_myList)
return 0;
GetCtrlVal(panel, PANEL_DISPLAYITEM, ¤tItem);
tempItem = ListGetPtrToItem (g_myList, currentItem);
if (tempItem)
{
if (control == PANEL_ITEMINTEGER)
GetCtrlVal (panel, PANEL_ITEMINTEGER,
&tempItem->integerValue);
else if (control == PANEL_ITEMDOUBLE)
GetCtrlVal (panel, PANEL_ITEMDOUBLE,
&tempItem->doubleValue);
else if (control == PANEL_ITEMSTRING)
GetCtrlVal (panel, PANEL_ITEMSTRING,
tempItem->stringValue);
}
break;
}
return 0;
}
函数来自CVI帮助文件。可以看出不同控件的区分是有control形参区分的。