CVI中的事件一问
我的想法是用一个TIMER控件,在EVENT_TIME_TICK事件中判断COMMANDBUTTON的值
我是这样用的
GetCtrlAttribute (panelHandle, PANEL_Button_Add, ATTR_CTRL_VAL, &addval);
这个addval是什么类型的变量?找了在线帮助,介绍得相当笼统。没有讲是什么类型的?
还有COMMANDBUTTON按下去后他的这个值应该是多少?
或者就不应该用COMMANDBUTTON来实现?
还望高手赐教,谢谢!
.71
你期望得到什么值
.199
已经找到答案,可以在TIMER中使用getrelativemousestate()来查询鼠标左键是否按下
不,我就是问一问commandbutton的ATTR_CTRL_VAL是什么类型的数据,
帮助上没有讲,只是写的variable。
还有个低级的问题,CVI中有没有BOOL类型?
谢谢
.203
CVI应用的是比较标准的C来得,肯定有BOOL类型啦~
.158
谢谢,我现在该用BOOL判断,可是每次执行 BOOL值都是0,我把程序贴出来,请大家帮我
看看,用的是COMMANDBUTTON
int CVICALLBACK ADD (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_LEFT_CLICK:
SetCtrlAttribute(panelHandle,PANEL_TIMER,ATTR_ENABLED,1);
break;
case EVENT_COMMIT:
SetCtrlAttribute(panelHandle,PANEL_TIMER,ATTR_ENABLED,0);
break;
}
return 0;
}
int CVICALLBACK DEC (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_LEFT_CLICK:
SetCtrlAttribute(panelHandle,PANEL_TIMER,ATTR_ENABLED,1);
break;
case EVENT_COMMIT:
SetCtrlAttribute(panelHandle,PANEL_TIMER,ATTR_ENABLED,0);
break;
}
return 0;
}
int CVICALLBACK QUIT (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
QuitUserInterface (0);
break;
}
return 0;
}
int CVICALLBACK TIMERCB (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
// int xCoordinate,yCoordinate,leftButtonDown,rightButtonDown,keyModifiers;
BOOL addButtonVal,decButtonVal;
switch (event)
{
case EVENT_TIMER_TICK:
GetCtrlAttribute(panelHandle,PANEL_ADDBUTTON,ATTR_CTRL_VAL,&addBut
tonVal);
GetCtrlAttribute(panelHandle,PANEL_DECBUTTON,ATTR_CTRL_VAL,&decBut
tonVal);
// GetRelativeMouseState(panelHandle,PANEL_ADDBUTTON,&xCoordinate,&
yCoordinate, &leftButtonDown, &rightButtonDown, &keyModifiers);
if(addButtonVal)
SetCtrlVal(panelHandle,PANEL_NUMERIC,++i);
if(decButtonVal)
SetCtrlVal(panelHandle,PANEL_NUMERIC,--i);
break;
}
return 0;
}
.203