這是我十三年前讀研究生的時候寫的系列文章《C語言嵌入式系統編程修煉》系列文章中的一小節,是一個用面向對象,把LCD上面菜單,對象化的例子。
菜單操作無數人為之絞盡腦汁的問題終于出現了,在這一節里,我們將看到,在C語言中哪怕用到一丁點的面向對象思想,軟件結構將會有何等的改觀!筆者曾經是個笨蛋,被菜單搞暈了,給出這樣的一個系統:
|
|
要求以鍵盤上的"← →"鍵切換菜單焦點,當用戶在焦點處于某菜單時,若敲擊鍵盤上的OK、CANCEL鍵則調用該焦點菜單對應之處理函數。我曾經傻傻地這樣做著:
| /* 按下OK鍵 */void onOkKey(){/* 判斷在什么焦點菜單上按下Ok鍵,調用相應處理函數 */Switch(currentFocus){case MENU1:menu1OnOk();break;case MENU2:menu2OnOk();break;…}}/* 按下Cancel鍵 */void onCancelKey(){/* 判斷在什么焦點菜單上按下Cancel鍵,調用相應處理函數 */Switch(currentFocus){case MENU1:menu1OnCancel();break;case MENU2:menu2OnCancel();break;…}} |
終于有一天,我這樣做了:
| /* 將菜單的屬性和操作"封裝"在一起 */typedef struct tagSysMenu{char *text; /* 菜單的文本 */BYTE xPos; /* 菜單在LCD上的x坐標 */BYTE yPos; /* 菜單在LCD上的y坐標 */void (*onOkFun)(); /* 在該菜單上按下ok鍵的處理函數指針 */void (*onCancelFun)(); /* 在該菜單上按下cancel鍵的處理函數指針 */}SysMenu, *LPSysMenu; |
當我定義菜單時,只需要這樣:
| static SysMenu menu[MENU_NUM] ={{"menu1", 0, 48, menu1OnOk, menu1OnCancel},{" menu2", 7, 48, menu2OnOk, menu2OnCancel},{" menu3", 7, 48, menu3OnOk, menu3OnCancel},{" menu4", 7, 48, menu4OnOk, menu4OnCancel}…}; |
OK鍵和CANCEL鍵的處理變成:
| /* 按下OK鍵 */void onOkKey(){menu[currentFocusMenu].onOkFun();}/* 按下Cancel鍵 */void onCancelKey(){menu[currentFocusMenu].onCancelFun();} |
程序被大大簡化了,也開始具有很好的可擴展性!我們僅僅利用了面向對象中的封裝思想,就讓程序結構清晰,其結果是幾乎可以在無需修改程序的情況下在系統中添加更多的菜單,而系統的按鍵處理函數保持不變。面向對象,真神了!
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
lcd
+關注
關注
36文章
4616瀏覽量
177236 -
C語言
+關注
關注
183文章
7644瀏覽量
145600 -
嵌入式編程
+關注
關注
0文章
27瀏覽量
10697
原文標題:C語言對象化設計的實例——LCD菜單
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
C語言設計學習,教你如何將LCD菜單對象化
這是我十三年前讀研究生的時候寫的系列文章《C語言嵌入式系統編程修煉》系列文章中的一小節,是一個用面向對象,把LCD上面菜單,
在LCD液晶顯示屏上實現多級嵌套菜單
摘要: 介紹了在C 語言環境下,在LCD 液晶顯示屏上實現多級嵌套菜單的一種簡便方法,提出了一個結構緊湊、實用的程序模型。關鍵詞: 液晶顯示
發表于 07-14 08:41
《C語言接口與實現:創建可重用軟件的技術》電子教材免費下載
《C語言接口與實現:創建可重用軟件的技術》概念清晰、實例詳盡,是一本有關設計、實現和有效使用C語言
發表于 08-27 08:00
?33次下載
使用C語言實現LCD多級菜單的方法資料和程序免費下載
由于C 語言的結構性和模塊化,采用C 語言編寫的程序容易閱讀和維護,還有很好的可移植性。本文介紹一種用C
發表于 08-06 17:33
?20次下載
如何使用單片機C語言實現LCD的多級菜單
介紹了在C 語言環境下,在LCD 液晶顯示屏上實現多級嵌套菜單的一種簡便方法,提出了一個結構緊湊、實用的程序模型。
發表于 12-04 17:15
?35次下載
在JavaScript中動態的創建QML對象
在實際QML應用開發中,我們可以在JavaScript中動態的創建QML對象。這樣做可以延遲對象的實例化,當我們在需要
C語言lcd上創建菜單的對象化實例分享

評論