上期對LABwindows/CVI建立的學生管理器的UI界面中的控件進行編程,但是沒有做回調處理,這期主要對其中控件進行回調函數的設計!
關鍵詞:回調函數;
01回調函數
1.1、主函數
main函數是用戶程序運行時首先被執行的函數。main函數實現的功能分別是CVI運行引擎初始化(InitCVIRTE函數)、加載面板(LoadPanel函數)、顯示面板(DisplayPanel函數)、開始消息隊列循環(RunUserInterface函數)。其中RunUserInterface會不斷的檢查面板的消息或者操作系統發送的消息,永遠不會返回,除非用戶主動調用QuitUserInterface函數中止消息循環。所以,正常運行狀態下,main函數中的DiscardPanel永遠不會被執行,main函數永遠不會退出,直到程序被關閉,主函數如下。
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、回調函數一
MainCallBack是我們在面板屬性編輯框中填寫的Callback Function的名字,負責執行主程序面板消息的響應代碼。在switch語句中,我們可以看到,CVI已經事先為我們生成好了三個面板最常用的事件:EVENT_GOT_FOCUS、EVENT_LOST_FOCUS以及EVENT_CLOSE。分別在對應的case中添加代碼,即可在窗口被激活、窗口失活、以及點擊窗口右上角“關閉”按鈕時執行的代碼。callbackData表示消息發出時所附帶的數據。可是eventData1以及eventData2卻容易讓初學者云里霧里。其實我們只需要選中任意case語句中的事件(此處可以選擇EVENT_GOT_FOCUS),右擊選擇Go To Defination之后即可發現,CVI User Interface的事件定義全在這里。對eventData1以及eventData2的說明,也在定義的注釋中有所說明。
在此,為了讓用戶點擊程序右上角的關閉按鈕時,程序可以順利關閉,在case EVENT_CLOSE語句后面添加QuitUserInterface函數:
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、回調函數二
這個函數響應五個鍵的功能,代碼如下。
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(監控)窗口,通過查看或者修改對應的參數的值來方便的調試程序。
-
LabWindows
+關注
關注
15文章
62瀏覽量
47953 -
管理器
+關注
關注
0文章
246瀏覽量
18505 -
CVI
+關注
關注
9文章
41瀏覽量
22194 -
回調函數
+關注
關注
0文章
87瀏覽量
11561 -
ui界面
+關注
關注
0文章
11瀏覽量
1573
發布評論請先 登錄
相關推薦
評論