上期對LABwindows/CVI建立的學生管理器的UI界面中的控件進行編程,但是沒有做回調處理,這期主要對其中控件進行回調函數(shù)的設計!
關鍵詞:回調函數(shù);
01回調函數(shù)
1.1、主函數(shù)
main函數(shù)是用戶程序運行時首先被執(zhí)行的函數(shù)。main函數(shù)實現(xiàn)的功能分別是CVI運行引擎初始化(InitCVIRTE函數(shù))、加載面板(LoadPanel函數(shù))、顯示面板(DisplayPanel函數(shù))、開始消息隊列循環(huán)(RunUserInterface函數(shù))。其中RunUserInterface會不斷的檢查面板的消息或者操作系統(tǒng)發(fā)送的消息,永遠不會返回,除非用戶主動調用QuitUserInterface函數(shù)中止消息循環(huán)。所以,正常運行狀態(tài)下,main函數(shù)中的DiscardPanel永遠不會被執(zhí)行,main函數(shù)永遠不會退出,直到程序被關閉,主函數(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、回調函數(shù)一
MainCallBack是我們在面板屬性編輯框中填寫的Callback Function的名字,負責執(zhí)行主程序面板消息的響應代碼。在switch語句中,我們可以看到,CVI已經(jīng)事先為我們生成好了三個面板最常用的事件:EVENT_GOT_FOCUS、EVENT_LOST_FOCUS以及EVENT_CLOSE。分別在對應的case中添加代碼,即可在窗口被激活、窗口失活、以及點擊窗口右上角“關閉”按鈕時執(zhí)行的代碼。callbackData表示消息發(fā)出時所附帶的數(shù)據(jù)。可是eventData1以及eventData2卻容易讓初學者云里霧里。其實我們只需要選中任意case語句中的事件(此處可以選擇EVENT_GOT_FOCUS),右擊選擇Go To Defination之后即可發(fā)現(xiàn),CVI User Interface的事件定義全在這里。對eventData1以及eventData2的說明,也在定義的注釋中有所說明。
在此,為了讓用戶點擊程序右上角的關閉按鈕時,程序可以順利關閉,在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、回調函數(shù)二
這個函數(shù)響應五個鍵的功能,代碼如下。
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運行模式
點擊菜單 Run-Debug Project (或點擊工具欄的綠色三角形按鈕)即可直接編譯并運行當前工程,同時也可以在工程所在目錄下生成exe文件。
右擊工程名并選擇Build(或點擊菜單 Build-Create Debuggable Executable)即可編譯并生成exe文件。
在CVI代碼編輯窗口中單擊代碼前空白部分或者按F9按鍵,則可以在對應的C語言語句處設置斷點。
在程序中斷時,單擊菜單Window即可控制開啟或關閉 Memory (內存)、 Variables (變量)、 Watch(監(jiān)控)窗口,通過查看或者修改對應的參數(shù)的值來方便的調試程序。
-
LabWindows
+關注
關注
15文章
62瀏覽量
47973 -
管理器
+關注
關注
0文章
248瀏覽量
18613 -
CVI
+關注
關注
9文章
41瀏覽量
22238 -
回調函數(shù)
+關注
關注
0文章
87瀏覽量
11621 -
ui界面
+關注
關注
0文章
11瀏覽量
1584
發(fā)布評論請先 登錄
相關推薦
關于LabWindows/CVI和Labview
美國國家儀器(NI)軟件Labview,Labwindows cvi,Motion,Vision,DAQ開發(fā)與培訓
采用LabWindows CVI的飛行模擬器應用
一種LabWindows/CVI與MATLAB混合編程的實現(xiàn)
LabWindows/CVI基礎教程
LabWindows/CVI與PLC的MPI通信研究
基于多CPU和LabWindows/CVI 的行車記錄儀系統(tǒng)
cvi 8.0 下載 (NI LabWindows 電子測量)
![<b class='flag-5'>cvi</b> 8.0 下載 (NI <b class='flag-5'>LabWindows</b> 電子測量)](https://file.elecfans.com/web2/M00/48/BC/pYYBAGKhtB2AJFHZAABeRc_YHkc630.jpg)
NI宣布推出ANSI C開發(fā)環(huán)境LabWindows/CVI
LabWindows CVI在USB2. 0接口數(shù)據(jù)采集器在開發(fā)中的應用
![<b class='flag-5'>LabWindows</b> <b class='flag-5'>CVI</b>在USB2. 0接口數(shù)據(jù)采集<b class='flag-5'>器</b>在開發(fā)中的應用](https://file.elecfans.com/web1/M00/99/DE/pIYBAF0bCz2AFs88AAPHC7xlMvg619.png)
Labwindows CVI的簡介說明
![<b class='flag-5'>Labwindows</b> <b class='flag-5'>CVI</b>的簡介說明](https://file.elecfans.com/web1/M00/B8/2E/pIYBAF5wJ8KAXyecAAGzYKpLU2g772.png)
使用LABwindows/CVI軟件搭建學生管理器界面(一)
![使用<b class='flag-5'>LABwindows</b>/<b class='flag-5'>CVI</b><b class='flag-5'>軟件</b><b class='flag-5'>搭建</b><b class='flag-5'>學生</b><b class='flag-5'>管理器</b><b class='flag-5'>界面</b>(一)](https://file.elecfans.com/web2/M00/8B/63/pYYBAGPE6QKAPxhpAAIFbwxua5I108.jpg)
評論