上期對LABwindows/CVI建立的學(xué)生管理器的UI界面中的控件進(jìn)行編程,但是沒有做回調(diào)處理,這期主要對其中控件進(jìn)行回調(diào)函數(shù)的設(shè)計(jì)!
關(guān)鍵詞:回調(diào)函數(shù);
01回調(diào)函數(shù)
1.1、主函數(shù)
main函數(shù)是用戶程序運(yùn)行時首先被執(zhí)行的函數(shù)。main函數(shù)實(shí)現(xiàn)的功能分別是CVI運(yùn)行引擎初始化(InitCVIRTE函數(shù))、加載面板(LoadPanel函數(shù))、顯示面板(DisplayPanel函數(shù))、開始消息隊(duì)列循環(huán)(RunUserInterface函數(shù))。其中RunUserInterface會不斷的檢查面板的消息或者操作系統(tǒng)發(fā)送的消息,永遠(yuǎn)不會返回,除非用戶主動調(diào)用QuitUserInterface函數(shù)中止消息循環(huán)。所以,正常運(yùn)行狀態(tài)下,main函數(shù)中的DiscardPanel永遠(yuǎn)不會被執(zhí)行,main函數(shù)永遠(yuǎn)不會退出,直到程序被關(guān)閉,主函數(shù)如下。
int main (int argc, char *argv[])
{if
(InitCVIRTE (0, argv, 0) == 0)
return -1; /* out
of memory */
if
((panelHandle = LoadPanel (0, "show.uir", PANEL)) < 0)
return -1;
DisplayPanel(panelHandle);
RunUserInterface();
DiscardPanel(panelHandle);
return 0;}
1.2、回調(diào)函數(shù)一
MainCallBack是我們在面板屬性編輯框中填寫的Callback Function的名字,負(fù)責(zé)執(zhí)行主程序面板消息的響應(yīng)代碼。在switch語句中,我們可以看到,CVI已經(jīng)事先為我們生成好了三個面板最常用的事件:EVENT_GOT_FOCUS、EVENT_LOST_FOCUS以及EVENT_CLOSE。分別在對應(yīng)的case中添加代碼,即可在窗口被激活、窗口失活、以及點(diǎn)擊窗口右上角“關(guān)閉”按鈕時執(zhí)行的代碼。callbackData表示消息發(fā)出時所附帶的數(shù)據(jù)??墒莈ventData1以及eventData2卻容易讓初學(xué)者云里霧里。其實(shí)我們只需要選中任意case語句中的事件(此處可以選擇EVENT_GOT_FOCUS),右擊選擇Go To Defination之后即可發(fā)現(xiàn),CVI User Interface的事件定義全在這里。對eventData1以及eventData2的說明,也在定義的注釋中有所說明。
在此,為了讓用戶點(diǎn)擊程序右上角的關(guān)閉按鈕時,程序可以順利關(guān)閉,在case EVENT_CLOSE語句后面添加QuitUserInterface函數(shù):
int CVICALLBACK MainCallBack (int panel, int
event, void *callbackData,
int eventData1, int eventData2)
{
switch(event)
{
case EVENT_GOT_FOCUS:break;
case EVENT_LOST_FOCUS:break;
case EVENT_CLOSE:
QuitUserInterface(0);break;
}
return 0;
}
1.3、回調(diào)函數(shù)二
這個函數(shù)響應(yīng)五個鍵的功能,代碼如下。
int CVICALLBACK MainPanelBtnCallback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)
{
switch(event)
{
case EVENT_COMMIT:
switch(control)
{
char Name[20] = {0};int Number = 0;
case PANEL_BTN_Add: //增加
Creat();break;
case PANEL_BTN_Delete: //刪除
delet(Head); break;
case PANEL_BTN_Show: //顯示
print (Head);break;
case PANEL_BTN_insert: //插入
insert (Head);break;
case PANEL_BTN_Change: //更改
change (Head);
break;
}
break;
}
return 0;
}
02運(yùn)行模式
點(diǎn)擊菜單 Run-Debug Project (或點(diǎn)擊工具欄的綠色三角形按鈕)即可直接編譯并運(yùn)行當(dāng)前工程,同時也可以在工程所在目錄下生成exe文件。
右擊工程名并選擇Build(或點(diǎn)擊菜單 Build-Create Debuggable Executable)即可編譯并生成exe文件。
在CVI代碼編輯窗口中單擊代碼前空白部分或者按F9按鍵,則可以在對應(yīng)的C語言語句處設(shè)置斷點(diǎn)。
在程序中斷時,單擊菜單Window即可控制開啟或關(guān)閉 Memory (內(nèi)存)、 Variables (變量)、 Watch(監(jiān)控)窗口,通過查看或者修改對應(yīng)的參數(shù)的值來方便的調(diào)試程序。
-
LabWindows
+關(guān)注
關(guān)注
15文章
62瀏覽量
48163 -
管理器
+關(guān)注
關(guān)注
0文章
250瀏覽量
18859 -
CVI
+關(guān)注
關(guān)注
9文章
41瀏覽量
22348 -
回調(diào)函數(shù)
+關(guān)注
關(guān)注
0文章
88瀏覽量
11789 -
ui界面
+關(guān)注
關(guān)注
0文章
11瀏覽量
1649
發(fā)布評論請先 登錄
相關(guān)推薦
關(guān)于LabWindows/CVI和Labview
美國國家儀器(NI)軟件Labview,Labwindows cvi,Motion,Vision,DAQ開發(fā)與培訓(xùn)
采用LabWindows CVI的飛行模擬器應(yīng)用
一種LabWindows/CVI與MATLAB混合編程的實(shí)現(xiàn)
LabWindows/CVI基礎(chǔ)教程
LabWindows/CVI與PLC的MPI通信研究
基于多CPU和LabWindows/CVI 的行車記錄儀系統(tǒng)
cvi 8.0 下載 (NI LabWindows 電子測量)

NI宣布推出ANSI C開發(fā)環(huán)境LabWindows/CVI
LabWindows教程之LabWindows CVI的虛擬儀器設(shè)計(jì)與應(yīng)用教材免費(fèi)下載
LabWindows CVI在USB2. 0接口數(shù)據(jù)采集器在開發(fā)中的應(yīng)用

Labwindows CVI的簡介說明

使用LABwindows/CVI軟件搭建學(xué)生管理器界面(一)

評論