windows程序的运行是基于消息机制的,用户通过鼠标、键盘等输入自己的意向,然后这些意向以消息的形式被发送给软件,软件根据消息做出响应。
每个windows程序线程,都有一个消息循环。程序在消息循环中等待消息,然后翻译消息,并把消息发送出去。所谓的将消息发送出去,就是让系统调用相应的窗口回调函数来处理消息。
很多软件开发平台都把这一过程给封装了起来,用户自己不需要处理。
Labwindows/CVI就是其中之一。CVI将windows消息的响应和处理全部封装起来,CVI的用户其实可以不用知道windows消息机制,就可以开发出自己想要的软件。
CVI将消息的响应和处理封装起来后,却给用户留下了它独特的事件机制。用户在使用CVI开发软件的时候,一般只需要根据CVI的事件来做相应的响应,而一般都不需要直接处理windows消息。当然,如果确实有这么一个需要,CVI也保留了这一功能。
CVI封装的事件机制:
RunUserInterface (); // 此函数相当于 Windows API 的消息循环,一般在CVI的MAIN函数中运行。
// 比如下面是CVI面板回调函数
int CVICALLBACK QuitCB (int panel, int event, void callbackData,
int eventData1, int eventData2)
{
switch (event)
{
case EVENT_CLOSE:
// 执行相关代码。
QuitUserInterface (0);
break;
}
return 0;
}
当单击窗口的X号时通过RunUserInterface ()事件处理函数,就会调用QuitCB()回调函数,此时鼠标单击X的事件就会通过QuitCB()函数的event参数传入,由case EVENT_CLOSE:来处理此事件,完成退出 *** 作。实际这个过程就是CVI 完全对windows的消息做的封装。
你也完全可以用PostMessage(hWnd,WM_USER_MESSAGE,wParam,0); 的方式发送消息,
用,
InstallWinMsgCallback (panelHandle, WM_USER_MESSAGE, MsgCallback, VAL_MODE_IN_QUEUE, NULL,(int )&hwnd );
安装一个消息处理函数,在
MsgCallback 函数中处理自定义消息。
SetAxisScalingMode(panel,PANEL_GRAPH,VAL_LEFT_YAXIS,VAL_MANUAL,min,max);
设置左Y坐标轴MANUAL方式工作,并设置最大值和最小值。
SetCtrlAttribute(panel,PANEL_GRAPH,ATTR_XPRECISION,log);
设置X轴的坐标数据的小数位位数。
SetCtrlAttribute(panel,PANEL_ACQUIRE,ATTR_DIMMED,1)
SetCtrlAttribute(panel,PANEL_GRAPH,ATTR_XAXIS_GAIN,10/rate)
设置X坐标轴的增益。
data=malloc(sampsPerChannumChannelssizeof(float64)))=NULL
分配内存,成功的话返回内存指针,不成功返回NULL(空指针)。
ProcessDrawEvents();
时时刷屏。
以上就是关于CVI有消息机制么全部的内容,包括:CVI有消息机制么、labwindows/cvi里面的一些程序,这几条都不知道什么意思,大家帮忙解释一下。这几条程序没按顺序。、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)