日前用LabWindows/CVI开发了一个小程序,记下经验,以备查阅。
CVI的中文资料还非常少,我基本上都是翻看LabWindows/CVI的帮助文件。涉及到Win32 API的时候最权威的资料当然是MSDN,但是中文资料很容易找到。如果遇到问题,可以在NI的开发者论坛里找找,最好使用英文关键词搜索,中文资料还是很少:http://forums.ni.com/ni/
Tips:
1.当涉及到Win32 API的时候,关于Win32 API的头文件必须在CVI的头文件之前。
2.CVI键盘键值以及屏幕坐标的表示和Win32 API有很大区别。如果键盘键值要在二者之间转换的话最好列一张对照表或者弄个链表,不然会让人生不如死。CVI中屏幕坐标只有分辨率一种方式,Win32 API中有8种方式……
3.CVI程序默认打开的时候有一个任务栏按键,但这时面板并没有设置Has Taskbar Button。当设置了Has Taskbar Button后将会出现两个任务栏按键。要去除多余的按键,要使用SetSystemAttribute(ATTR_TASKBAR_BUTTON_VISIBLE, 0)
4.使用Shift+箭头可以对界面上的对象进行位置微调。
5.不知道是不是我水平的原因,用CVI调用DLL(VS2005,VC++编写)的时候,显式调用没问题,但是隐式调用总是出现没用定义的错误,但是用VC调用就没有问题。最后发现,原因是dll的头文件里面没有参数的函数没有用void修饰…… 原先是__declspec(dllimport) int StartServer(); 改成 __declspec(dllimport) int StartServer(void);就没问题了……
6.还有点关于dll的,已经用extern "C"修饰了,但是用VC编译产生的lib时CVI还是提示有问题,最后用头文件和CVI的通过dll生成lib功能产生的lib就没问题,还望高手解答。
7.在CVI中生成、读取Excel文件,目前看来有3种方法,DDE(Dynamic Data Exchange)、ADO(ActiveX Data Objects)、Microsoft Excel xx.0 Object Library。推荐使用ADO方式实现,建议不要使用DDE方式。具体可参见另一文章,CVI中调用Excel的几种方法。
8.CVI默认的dll工程文件名为Dynamic-Link Library 这种有空格的文件名在有些IDE中并不支持,所以即使是测试也要先改文件名……
9.等待补充……
用户85560 2010-1-6 12:22