NI Home > Community > NI Discussion Forums

LabWindows/CVI Idea Exchange

Showing results for 
Search instead for 
Do you mean 
The NI Idea Exchange is a product feedback forum where NI R&D and users work together to submit ideas, collaborate on their development, and vote for the ones they like best. View all of the NI Idea Exchanges to post an idea or add your opinion on an existing one today!
New Idea

Add a tool for static code analysis

Status: New
by Active Participant vix on ‎11-27-2015 02:01 AM

Since now CVI relies on CLANG, it would be great to have a tool for static code analysis.

Some software are available for C code (see here), but I think CVI can use Clang Static Analyzer (if it is good enough - I've never tried it).

Make "Save changes" environment options project-specific

Status: New
by Proven Zealot ‎10-14-2015 05:20 AM - edited ‎10-14-2015 05:21 AM

As can be seen here, "Save changes" items in Environment options are global to the CVI IDE.


I suggest these options are made project-specific instead. The rationale behind this suggestion is simple: suppose I am developing project A and I enable autosave modifications before compiling and running the project; at the same time I may need to look at the code for project B already deployed to customers, and I want to prevent modifications to the code without notice. At present, while I am testing the application A I set these options to "Always"; if next I come and see the code for project B, I may accidentally make (and save!) modifications that change the code of the deployed app without notice Smiley Sad

If these options were per-project I would be granted I am not making mistakes.Smiley Happy

Generate function prototypes for programmatically installed functions

Status: New
by Proven Zealot ‎10-14-2015 04:39 AM - edited ‎10-14-2015 04:45 AM

Several CVI functions exist that permit to add / install functions in the code. At present, we need to manually create the function prototype, and the fastest way I found is this one: open the function panel for e.g. InstallPanelCallback function, select Event Function parameter, right-click the field or press F1 to show the help, select the function prototype dragging with the mouse, Ctrl-C to copy it, close the function panel and paste the prototype in the code.


It would be *very* handy if a way existed to speed up the process: a "Generate Prototype" item could be added to Code menu that takes the function name set by the user in Event Fuction field and generates the appropriate function prototype in the source code.


There is a huge set of functions that could benefit with this addition, following is an initial list but I am sure I'm missing some more functions:


In the User Interface Library:

  • All Install*Callback
  • PostDeferredCall
  • PostDeferredCallToThread
  • RegisterWinMsgCallback

In the Utility Library:

  • CmtScheduleThreadPoolFunction
  • CmtScheduleThreadPoolFunctionAdv
  • CmtInstallThreadPoolCallback
  • CmtInstallTSQCallback

In RS232 Library:

  • InstallComCallback

In VISA library:

  • viInstallHandler

In DAQMx Library:

  • DAQmxRegister*Event functions

In TCP Library:

  • All Register* functions

In Network Variable Library:

  • All CNVCreate* function

In the ActiveX Library:

  • CA_RegisterEventCallback

In the Asynchronous Timer instrument driver:

  • NewAsyncTimer
  • NewAsyncTimerWithPriority

In the Programmer's Toobox:

  • InstallWinMsgCallback
  • PostDelayedCall
  • PostDeferredCallToThreadAndWait
  • ChainCtrlcallback

And don't forget all sorting functions that require a comparison function to operate:

  • qsort
  • SortTreeItems
  • SortTableCells
  • HeapSort
  • List*Sort fuctions for lists

Put the X on the tab it goes with.

Status: Under Consideration
by Member K_Joy on ‎10-24-2013 10:58 AM

This X just closes out of the tab that is on top.


CVI window.PNG


Pretty much every other program with tabs has the X on the tab you’re closing out of. The current placement makes me hesitate every time, because it feels like you’re X-ing out of the entire code-viewing pane, not just the single file you want to close.


It’s also not consistent with the rest of the environment.

For example, in the pane on the bottom in the screenshot above, “Threads” and “Wa tch” look like two tabs, but clicking the X in that pane causes the entire pane to disappear rather than just closing the tab that is on top.

Add Transparency Attribute for LabWindows/CVI Panels

Status: New
by Member Johannes_T ‎07-31-2015 03:00 AM - edited ‎07-31-2015 03:01 AM

Add an attribute for LabWindows/CVI panels for setting transparency.


Currently, in order to achieve this behaviour users are forced to workaround this using Windows API.

Having an attribute for this purpose would allow users to benefit from this functionality more easily and would make LabWindows/CVI programs more cleaner.


Related forum discussion:

NI is not a C/C++ Editor-Debugger company.  And, it will never be able to invest the man power needed to get there.  NIs strengths are its Instrument UIs, its libraries, and it's visual application UI pieces.  The LabWindows/CVI tool looks and feels like tools from the mid 90's (ie.  like an old Borland C editor, but even less featured).  It lacks the toolset found in VisualStudios, NetBeans, and Eclipse.  And, it will always be behind.


The Verigy93k tester was like this several years ago.  They wrote their own C/C++ editor, and it was at a mid 80's level.  When a team was asked to rewrite the UI and bring it up to date, they made a novel choice (they recognized that they were not a UI platform / editor company), and they moved their product under Eclipse.  Teradyne Flex did something similar a year or two later moving under Excel and Visual Studio.  The thing is this, both companies realized that they could make more money focusing on their real strength.  They added libraries and apis to work in the platforms framework, and changed/adapted the platform framework to work for them.  ie. Teradynes Flex test tool does not say "Excel/Visual Studio", it says it is a Teradyne product based on MS Excel and VS.  And, they have adapted the platform to their needs adding on the extra Windows/UIs/... to meet their needs.  Same with the Verigy 93K.


In Teradynes case, they went back to the drawing board.  So, we will ignore this (even with their success).  In Verigys case, all their existing APIs worked in the new platform, and the user didn't need to change anything when they upgraded.  But, suddenly the Editor and Debugger were up to date, with latest greatest features.  It was a huge change overnight.


LabWindows really should make a shift to Eclipse.  Keep your old legacy stuff at first, but working under Eclipse.  Add in "Views" and "Tools" to supplement what Eclipse doesn't give you for free.  And, remove unwanted or confusing plugins from the eclipse base.  (This is what advantest did.)  Leave in features that make Eclipse great, like error view, and the ability to have several "perspectives".  And really focus the man power into making a product that will blow the others out of the water.  NI has what it takes to make great Instrument editing/debugging windows in Eclipse.  But, NI doesn't have the 1,000's of people and millions of man hours required to make an Editor/Debugger that will compare to the Eclipses/VisualStudios of the world.  As a business they should focus on what will make them a differentiator, and reuse what is accepted and common.


Anyway.  My 2 cents on how you could really improve LabWindows in a few short months.  (Note: Verigy spent all of 9 months and 9 engineers on their C/C++ integration into eclipse...  I know... I was there at the time.)  If you took the LabWindows team, and a year or two...  Imagine how much better of a job you could do.

Improved error reporting

Status: New
by Trusted Enthusiast on ‎06-03-2015 02:43 AM

When building a project consisting of many files it would be much more convenient if the Build Output would jump to the line with the first file showing an error (or, if no error occurred, to the first warning).


Right now, if there is a build error I have to scroll through the (possibly long) list of files to see which file produced the error; only then I can click on the error message to have the IDE highlight the problematic line.



Remember values for generating a function tree

Status: New
by Trusted Enthusiast on ‎07-01-2015 01:23 AM

Most user settings are kept in either the project or the workspace file. Unfortunately, this is not true for building a function tree (Options/Generate Function Tree). Starting CVI the previous entries are lost. Actually this is an old issue but may be not too old to be improved... Smiley Wink


So I suggest to save the information about Instrument name, Function prefix, Default qualifier, and Output function tree in the appropriate configuration file (prj or cws)


Thanks Smiley Wink

Allow for smaller distribution kit sizes

Status: New
by Trusted Enthusiast on ‎09-17-2013 02:37 AM

As discussed here, distributing the code of


#include <ansi_c.h>
int main ( int argc, char *argv [] )

    printf ( "%s", "Hello world" );


generated in CVI2013 results in a distribution kit of 74 MB minimum...  Using the NI default settings results in 219 MB...


Yes, I do have TB drives, but I dislike bloated software.

Give the programmer control over DPI scaling

Status: New
by Active Participant tstanley on ‎01-30-2015 08:12 AM



The CVI runtime engine calls the Windows API function SetProcessDPIAware() that tells Windows that the application is DPI aware in Windows Vista and later.  This seems to be forced upon all applications built with CVI, whether they are actually DPI aware or not.  Most applications built in CVI using the default tools are not going to be DPI aware out of the box, and setting Windows to another DPI setting than what the programmer used to create the UI will cause many graphical glitches and possibly make the application unusable.  The purpose of this request is to suggest to NI that the CVI Runtime Engine not call SetProcessDPIAware() so that the programmer can handle (or not handle) DPI scaling as they see fit.  If the programmer does nothing, the application will then, by default, be scaled using Windows DPI Virtualization.  This is not optimal, but it would leave the application usable and looking like how the programmer intended.


This is per this discussion here:



Block Comments

Status: Under Consideration
by Member FoxSquirrel on ‎09-23-2013 05:11 PM

Allow you to select multiple lines and then go to Edit>>Block Comment/Uncomment to be able to comment or uncomment multiple sections of code at once.

At present CVI is missing a serious report printing facility that permits to create flexible, professional and good looking reports.

A quick search in CVI forum shows that periodically somebody posts questions about reporting but available instruments at the moment are not satisfactory in my experience.


As far as I can tell, a good reporting instrument:


  1. Should integrate easily with CVI
  2. Should be fully documented, with some example for the more typical types of reports (text + table, text + graph, text + image...)
  3. Should not rely on external programs (some customers have rigid constraints on the software installed on equipment machines; additionally, asking them to have full Word or Excel or Diadem installed only for reporting is just not serious)
  4. Should not rely on ActiveX controls to be licensed separately (same as above)
  5. Should permit to include text and graphics (images, graphs...) and define headers, footers, page numbering and other common features normally present in reports
  6. Should output data directly to the printer or in PDF format
  7. Should have a preview facility both for development and for the user (something that NIReports hasn't and will never have)
Status: Under Review

At present, autoscaling works with respect to the full provided data set, i.e. if all data are shown on the graph.


If say the X axis is set to manual scaling such that only a subset of all data is plotted, autoscaling of the Y axis still considers all data even if they are not shown, see the discussion here.


Hence it is suggested to provide an additional auto scaling mode which considers only the data actually visible on the graph, say VAL_AUTOSCALE_VISIBLE_DATA, complementing the current VAL_AUTOSCALE which actually is a VAL_AUTOSCALE_ALL_DATA

I want to be able to do the following:


  1. Right-click on a control on my user interface and select “Add Event Case to Control Callback” (if a callback function already exists)
  2. CVI brings up a dialog similar to what you see at Code>>Preferences>>Default Events to select an event for that control
  3. Check the box for one or more events for that control, click OK, then
  4. Have CVI find the existing control callback function and add a case to the switch statement for each event I checked

If you haven’t written any code in the callback already, you can just change the default events and re-generate (replace) the control callback.


However, if you have already written code for one event case, the only way I can find to add an event case is to do it manually. I go to Code>>Preferences>>Default Events or use the Operate tool to look for the constant name of the event that I am interested in, then I go back to my code and manually type out “case EVENT_CONSTANT_NAME: break;” with the name of the event and hope I remember it correctly and spell it right.


CVI is all about minimizing user errors and reducing development time by, you know, not making you type things out yourself, so I think this functionality would be a useful addition.



building upon my earlier (but difficult to implement) suggestion and the forum discussion on event data here I can provide a hopefully improved suggestion.


The issues addressed by this idea:

  • receiving an EVENT_DATA_CHANGED event for a numeric control does not mean that the numeric value has changed
  • receiving an EVENT_DATA_CHANGED event for a numeric control does not provide information if the value has been increased or decreased
  • receiving an EVENT_DATA_CHANGED event for a numeric control does not provide information if the 'up' or 'down' arrow button has been pressed (which is not necessarily the same as the second issue)

Idea: Provide eventData1 and eventData2 information.


For example, eventData1 could tell about the numeric value:

  • eventData1 = -1: numeric value has been decreased
  • eventData1 = 0: numeric value is unchanged
  • eventData1 = 1: numeric value has been increased

eventData2 could tell about the increment/decrement arrow, e.g.:

  • eventData2 = -1: decrement arrow has been pressed by mouse
  • eventData2 = -2: decrement arrow has been pressed on keyboard
  • eventData2= 1: increment arrow has been pressed by mouse
  • eventData2= 2: increment arrow has been pressed on keyboard

Since so far no eventdata are provided this suggestion should not break backward compatibility.



because I had installed CVI2010 on a brand new Windows 7 machine, I was curios to find out about all the service processes running on the system.

It seems that there are quite a few NI services that start after log-on. Some of  them seem superfluous, such as the Lookout Citadel service (no LabVIEW, no Lookout installed), but due to the lack of any information I did not bother trying to stop them



1) NI should critically review the services and only start the services that are absolutely needed.

2) Services that are optional might be selected by a checkbox during installation or from the Options / Environment setting

3) NI should provide some documentation / explanation of each service and why it is needed.



More predefined command buttons

Status: Under Consideration
by Trusted Enthusiast on ‎01-14-2012 10:25 AM



there has been the valuable suggestion of a "Picture and Text" button allowing more modern buttons.


For all those focusing on programming instead of UI design it would be also nice if CVI could provide more default buttons ready to use as some examples shown in the image below (taken from the NI community).


As they seem to be already available in LabVIEW it shouldn't be much effort for NI to adapt them to CVI... - hopefully Smiley Wink




Right now it is possible to set the color, and since CVI 2013 also the line style, of all grid lines collectively.


I would like to distinguish between major grid lines and minor grid lines, e.g., draw major grid lines with dashed lines / light grey, and minor grid lines with dotted lines / dark grey.





Improved Array Display

Status: New
by Trusted Enthusiast on ‎05-14-2014 01:58 AM

In CVI 2013 the array display has changed (for the worse, in my opinion).


There are two minor inconveniences and one acute shortage I would like to see improved (hopefully prior to CVI2020 Smiley Wink)


First, the right click context menu: If I want to see values of a numerical array, it offers a 'Graphical Array View' but no 'Array View', so one first has to chose 'View Variable Value' and then 'Array Display' - maybe one could save one step and already provide the 'Array Display' in the first case...?


Second, the new Array View table still is very slow, not extremely slow as prior to SP1 but still very slow...


Most importantly, at present it is impossible to debug large arrays, large meaning arrays with more than 10000 elements. The current implementation requires to select a slice of data - but this makes it impossible to check or compare say array indices 5, 10005, and 20005...

Of course I agree that there is no need to simultaneously see more than 10000 data values - but why not have a table with say 100 rows that can be turned over, e.g.  displaying either elements 1-100, 101-200, ... this way one could access and inspect all array values...

Mark files for compilation

Status: New
by Trusted Enthusiast on ‎10-11-2013 04:30 AM

In earlier versions of CVI source files needing compilation were marked in a different color, unfortunately this feature has been removed in CVI2013. The suggestion is to re-introduce this feature...



Changing an include file immediately shows affected source files

It's always clear how time-consuming it is pushing the RUN button, i.e. if there are files *and how many) to be compiled first

About LabWindows/CVI Idea Exchange

Do you have a feature idea for how to improve LabWindows/CVI? Submit and vote on ideas now!
  1. Browse by label or search in the LabWindows/CVI Idea Exchange to see if your idea has previously been submitted. If your idea exists, be sure to vote for the idea by giving it kudos to indicate your approval!
  2. If your idea has not been submitted click New Idea to submit a product idea. You should submit a separate post for each idea. Watch as the community gives your idea kudos and adds their input.
  3. Give kudos to other ideas that you would like to see implemented!
  4. NI R&D will review ideas that have been submitted and update the status.

Note: the LabWindows/CVI Idea Exchange is not the appropriate forum to submit technical support questions.

The LabWindows/CVI R&D team is committed to reviewing every idea submitted via the LabWindows/CVI Idea Exchange. However, we cannot guarantee the implementation of any LabWindows/CVI Idea Exchange submission.

Top Kudoed Authors
User Kudos Count