這是我十三年前讀研究生的時候寫的系列文章《C語言嵌入式系統編程修煉》系列文章中的一小節,是一個用面向對象,把LCD上面菜單,對象化的例子。該文章原始出處:
http://soft.yesky.com/lesson/188/2023188.shtml
菜單操作無數人為之絞盡腦汁的問題終于出現了,在這一節里,我們將看到,在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();} |
程序被大大簡化了,也開始具有很好的可擴展性!我們僅僅利用了面向對象中的封裝思想,就讓程序結構清晰,其結果是幾乎可以在無需修改程序的情況下在系統中添加更多的菜單,而系統的按鍵處理函數保持不變。
面向對象,真神了!
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
C語言
+關注
關注
183文章
7644瀏覽量
145598 -
LCD菜單
+關注
關注
0文章
2瀏覽量
6481
原文標題:C語言對象化設計的實例——LCD菜單
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
C語言lcd上創建菜單的對象化實例分享
這是我十三年前讀研究生的時候寫的系列文章《C語言嵌入式系統編程修煉》系列文章中的一小節,是一個用面向對象,把LCD上面菜單,
如何將LCD與STM32F103C8T6 STM32開發板連接并編程
在本教程中,我們將學習如何將16×2 LCD顯示器與STM32F103C8T6 STM32開發板連接,并使用Arduino IDE對其進行編
嵌入式編程中C語言的模塊化和模擬面向對象的相關資料推薦
模塊化嵌入式編程中需要對程序進行模塊劃分的"劃"是規劃的意思,意指怎樣合理的將一個很大的軟件劃分為一系列功能獨立的部分合作完成系統的需求。C語言作為一種結構
發表于 12-15 08:51
使用C語言實現LCD多級菜單的方法資料和程序免費下載
由于C 語言的結構性和模塊化,采用C 語言編寫的程序容易閱讀和維護,還有很好的可移植性。本文介紹一種用C
發表于 08-06 17:33
?20次下載
如何使用單片機C語言實現LCD的多級菜單
介紹了在C 語言環境下,在LCD 液晶顯示屏上實現多級嵌套菜單的一種簡便方法,提出了一個結構緊湊、實用的程序模型。
發表于 12-04 17:15
?35次下載
C語言設計學習,教你如何將LCD菜單對象化

評論