Sure, I'd be happy to clarify.
What I meant was, that if you want to use ATTR_CTRL_VAL instead of
SetCtrlVal (or SetTableCellVal, etc...) because you do not want the
immediate draw effect, then the control should not be active. If it is active, the
function will still work, but it might draw immediately anyway.
Let me give you some background...
The way ATTR_CTRL_VAL works internally is quite simple: it hides the
control first, then calls SetCtrlVal, then shows the control again. This way, because the control is hidden when SetCtrlVal executes, no drawing
needs to take place. This is how we fool SetCtrlVal into not drawing at
all. (Because of how the code is set up, it would have been a lot more
work to disable drawing, individually, for all the possible types of contols). And since no drawing takes place, you never get to see the
panel without the control either -- there's no flashing.
Now, when the control is active, if we were to hide it and then reshow
it, focus events would be generated (EVENT_GOT_FOCUS and
EVENT_LOST_FOCUS) for both that control and for the next control in the
tab order, and since we'd rather not startle users with events that
they might not be expecting, we don't hide the control in that case.
There are other reasons, but this is one off the top of my head.
(And you know what? Just as I'm typing this I realize that in my
previous post I wrote exactly the opposite of what I intended to write.
I intended to write that the table
should not be the active
control, and I wrote the opposite instead. Sheesh... now I'm giong to
have to follow up that post with a correction.)
In any case, to address your last question, you don't have anything to worry about. If the control is
already hidden when you change its value, then it doesn't really matter
how you set the value, since it won't draw, regardless. But if the
control is visible, and is
not active, then it will not draw if you use ATTR_CTRL_VAL. In that case, the UI will update the next time CVI processes events.
I hope I didn't end up making this more confusing than it was...

Luis