I do like the improved editor features of CVI2013; maybe two toolbar icons could be added for the two new commands 'Goto Next Function' / 'Goto Previous Function' ?
a long standing issue with the function GetGlobalMouseState is that it does not detect the <alt> key modifier (contrary to the documentation).
I'd like to suggest adding the capabilities to detect the key modifiers
Of course this can be done with the Win32 function GetKeyboardState, and this is how I do it right now, but this means that I have to include <windows.h>.
This is sort of a slight extension of the valuable suggestion by vix (Go to Next/Previous function in source files):
Right now, in the CVI IDE it is possible to have a function tree of all library functions - for larger projects it might be useful to also have a function browser for all the functions in the current project, thus not only permitting to jump to the next or previous function, as suggested by vix, but also to more easily return to a frequently used function by one mouse click on the function name in the function browser.
Functions could be grouped by file name (typically there is more than one source file in a project), or alphabetically...
this is a very tiny suggestion, but still I would consider it a very convenient improvement:
Right now, if I am using the 'Find' command in the IDE with a typo in the search string (this happens frequently...!), press F3, I receive a popup message telling me that the string 'xxx' has no matches. After pressing OK the popup disappears, but also the Find window disappears! So I have to press Ctrl-F again just to correct my search string.
Hence I suggest that in case a search is not successful, (the popup disappears but) the Find window remains open. This is also true if the search was successful, so I would even consider the current behavior inconsistent
One nice feature of menu bars is their capability of grouping different items using a separator.
Having ring controls with many text entries it would be nice from a user perspective if these many entries also could be grouped using one or more separators.
What would be also convenient is the ability to dim or hide a specified entry; right now it is possible to rebuild the ring programmatically with one or several entries less (or more), but this is some overhead that could be minimized by simply hiding or showing an indexed entry.
It would be convienent at times to have a way to know if timer callbacks had been suspended by another part of the program by
SuspendTimerCallbacks(), or if timers are running again from ResumeTimerCallbacks(). As far as I can tell there is currently no way to know this in CVI without manually keeping track of the last suspend/resume function called. Thanks.
If you have a Numeric Indicator, and you set "Range checking" to Notify, CVI will show an ugly popup when you enter a value out of range.
If you set this property to "Coerce", the value you enter is coerced in range, but no specific event is generated.
I think that an EVENT_VAL_COERCED would be really useful: using this event you could easily show a message popup, for example.
Add an ATTR_COLUMN_PROPORTION (tree or table control) column attribute to set the width of a column in percent.
A second attribute could be added, to maintain column width proportions, in case the user is resizing the columns.
When using the UI functions, a neat feature is the ability to pull up a dialog of valid control IDs when specifying the control:
clicking the elipses displays this dialog showing all valid control IDs:
If you are using the function panel however, you cannot access this dialog and you are on your own for figuring out the correct control ID:
I think we should add this functionality in the function panel for any function that has a control ID parameter.
When writing a large amount of functions for CVI, I use the View>> Collapse All / Expand All options quit a lot. It would be incredibly useful to have a keyboard shortcut to do this.
That's all, but I can't stress how much I use these menu items and how incredibly helpful it would be to have a shortcut. All of my coworkers agree. Thanks.
following the discussion here it turns out that at present there is some ambiguity in using the taskbar button of applications created with CVI: Clicking on the taskbar button gives the visual impression of minimizing all panels of the application, in fact the panels are just hidden, not minimized. As a result, the application will behave differently if you really minimize panels using the _ panel button, or if you hide the panels by clicking on the taskbar. In the latter case the new EVENT_PANEL_MINIMIZE event does not get triggered and the application cannnot know that all panels are hidden (for the user appearing to be minimized). Hence this new event is required to complement this functionality.
I added the tab control into panel to my project. Overtime, I added 20 items into the single Tab Control. But since were so many items in the tab control, I decided to re-arrange items (indexes) in the tab control by either moving them left or right depending on the alphabetical order. But here is my problem.
Since I re-arranged the items (indexes), the indexes have all changed for all the items. Now I have to go everywhere the function GetPanelHandleFromTabPage is called and manually update the index numbers to match panel handles for the index. There are 20 different places where this could occur. The number of items (indexes) on the tab control could grow even more and may have to be re-arranged again in the future. Just a big pain.
Suggestion for improvement: Provide a another function that can obtain the index of the item on the tab control dynamically. This could be done by using the "Constant name:" issued in the edit tab panel of the edit tab control. So if the items (index) inside the tab control are re-arranged then the index value for that item is carried with the new index value.
Also the index would be included in the header file generated by the panel editor for CVI so that now the index value can be used thus eliminating the hard coded the index value.
designing a screen layout I frequently encounter the wish to have not only rectangular (and circular) decoration elements, but also one of the type shown below.
Only the upper right rectangular shape can be realized now, while the more complex shape on the left is what I would like to see added in the future.
Instead of two parameters width and height four parameters would be required (two heights and two widths), may be even a fifth parameter specifying the orientation of the shape: as shown, mirrored in x, mirrored in y, mirrored in x and y.
Without doubt grouping control elements is useful; unfortunately these groups may differ in the number and type of control elements.
Thanks for consideration,
In LabVIEW graphs there is a nice property called "Fill To" that can be used to get very cool features (see here, for example) to highlight different regions or data.
I think such a property should be introduced in CVI too, with the following options:
I've been looking around for a way to open the LabWindows/CVI print dialog box. It appears when you call the PrintCtrl function, does NOT appear in the PrintTextFile or PrintTextBuffer functions, and there is no function to open it directly; I need to print from a text buffer and would like to open it directly from a Print Setup menu function. The best recommendations that I have received are either use the Windows PrintDlg function, or to kludge the text into a hidden control and print the control. I highly recommend either adding it to all user interface library print functions or allow the user to call it directly.
In previous applications, we would talk to our product using a telnet session.
CVI has libraries to do this, such as...
ConnectToTCPServer ((unsigned int *)&g_ShelfHandle[iSocketNumber], 23, sAddress, com_ClientTCPCB, NULL, 0);
In one of our new products, it only supports "ssh" which is similar to telnet, but is a "secured shell" connection.
One option is to use putty: http://digital.ni.com/public.nsf/allkb/C49602A7982
It is not the most straightforward way of doing things, but at the moment, it is what we have to deal with.
Since the ssh protocol is becoming the new standard in communications (used in all Linux machines, and windows), and most
of the new telnet programs (supporting ssh), I would like to request that a CVI library be created to support this protocol.
The additional columns of a tree can be hidden using SetTreeColumnAttribute() with ATTR_COLUMN_VISIBLE parameter. This is an easy and effective way.
For a table this attribute isn't supported, so you can use some workaround that requires more coding and have some disadvantages (for example if you set the width to the minimum value of 1, the user can increase it with the mouse...).
I think that the ATTR_COLUMN_VISIBLE parameter would solve this needs in the perfect way.
We hear all the time that should write code that is reuseable. It is difficult to plan so far ahead, so I listen to the preachers but seldom follow them.
However, it is clearely easier to use snippets, code fragments, that I put together for something, even tested them and I remember that I have done that once, but finding it again is too much hassle, it is just 3 lines, 5 lines of code. It owuld be nice to be able to manage such snippets, copy them, tag them,or even share them; I recon, there are snippet libraries out there;,out of sight, out of reach; but it would be really nice when the need arises, - you know that nagging dejavue feeling- than I could find them, bag them an use them... With time, even nice and practical libraries could grow out of them snippets... :-)
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.