
使用豬八戒APP
隨時(shí)隨地享服務(wù)

使用豬八戒APP
隨時(shí)隨地享服務(wù)

關(guān)注豬八戒公眾號(hào)
隨時(shí)掌握一手資訊

使用豬八戒小程序
隨時(shí)掌握訂單進(jìn)度
作者:蹇今瑤 發(fā)布:2023-05-11 13:03 516瀏覽
有專(zhuān)門(mén)的gui.
建窗口, 放控件!
如果是Linux下可以使用glade,gtk+結(jié)合,win下可以使用win32 API,雖然麻煩點(diǎn),但是對(duì)全局的掌控是其他替代不了的。
運(yùn)行在操作系統(tǒng)上的應(yīng)用程序要想實(shí)現(xiàn)圖形界面需要調(diào)用系統(tǒng)的API接口,當(dāng)然這是最原始的方式,現(xiàn)在已經(jīng)有很多的圖形庫(kù)了,如C語(yǔ)言的圖形庫(kù)gtk,C++的Qt和mfc等……,如果寫(xiě)操作系統(tǒng)的話就不能調(diào)用圖形庫(kù)了,操作系統(tǒng)的界面和各個(gè)窗口都是畫(huà)出來(lái)的,沒(méi)錯(cuò)就是畫(huà)出來(lái)的,用代碼繪制矩形填充一下就是一個(gè)窗口,當(dāng)然這對(duì)于計(jì)算機(jī)來(lái)說(shuō)只是一個(gè)圖形,要想實(shí)現(xiàn)該圖形的其他操作比如最小化最大化,按鈕啊,這些還需要做大量的管理操作才能實(shí)現(xiàn),所以寫(xiě)一些應(yīng)用程序還是找個(gè)圖形庫(kù)做吧??
Minigui
自己去看QT和GTK
做圖形界面大致涉及到這幾個(gè)方面的問(wèn)題:
控制顯示器畫(huà)出圖形并隨時(shí)更新圖形。各大顯示器廠商的分辨率以及屏幕尺寸都不一樣,要考慮在不同的顯示器上作出相同的圖形效果。
建立圖形界面操作邏輯。比如,切換畫(huà)面焦點(diǎn),顯示文字等。僅文字一項(xiàng),就要為數(shù)百種語(yǔ)言和數(shù)以千計(jì)的字體建立圖形庫(kù),并能后不失真地自由在屏幕上縮放。
建立界面刷新同鍵盤(pán)鼠標(biāo)等輸入設(shè)備,以及后臺(tái)程序處理的并行機(jī)制。避免出現(xiàn)諸如鎖屏之類(lèi)的現(xiàn)象
上面只是非常概略地概括了一下圖形界面的部分功能,用C語(yǔ)言實(shí)現(xiàn)這些功能所需的代碼數(shù)量應(yīng)該是以百萬(wàn)行計(jì)算的。每個(gè)程序都要從零開(kāi)始是不現(xiàn)實(shí)的。所以,人們做了很多圖形界面的標(biāo)準(zhǔn)庫(kù),供程序員使用。為了進(jìn)一步減少需要配布的程序數(shù)量,這些標(biāo)準(zhǔn)庫(kù)被搭載到操作系統(tǒng)中。Windows上搭載了Win32API,Linux上搭載了Qt,等等。因此,有人說(shuō)要做圖形界面還得懂點(diǎn)操作系統(tǒng)。題主還說(shuō)道了MFC,其實(shí),MFC跟Qt更接近一些,它在Win32API的基礎(chǔ)上,建立了一整套框架,可以更好地解決畫(huà)面切替,操作并發(fā)的問(wèn)題,可以作出更為復(fù)雜的界面。
最后要說(shuō)明的是與其把a(bǔ)pi看成是匯編,mfc看成是c語(yǔ)言,不如把它們看成是共通函數(shù)很容易理解一些。
呵呵,樓主和我當(dāng)初一樣的迷惑。
我當(dāng)初啃C語(yǔ)言的時(shí)候,也是想用C語(yǔ)言做界面出來(lái),走了很多冤枉路,這里希望能給樓主一些提示。
如果你想用“純”C來(lái)做界面的話,那么我會(huì)很肯定的告訴你,很難。你所有的操作都要調(diào)用API,包括每個(gè)按鈕的位置、大小,框的位置、大小等等都是通過(guò)計(jì)算得出來(lái)的。這樣一來(lái)開(kāi)發(fā)的效率是可想而知的。
當(dāng)然,也有專(zhuān)門(mén)做界面的,程序用C語(yǔ)言來(lái)寫(xiě)。比如:QT。具體的樓主可以去了解了解。
如果你想感受一下C語(yǔ)言的“樂(lè)趣”的話,在Win32中寫(xiě)一下程序:
#include
void main()
{
MessageBox(NULL," Hello World!
通過(guò)調(diào)用API來(lái)創(chuàng)建界面:#include
17贊同
2023-05-11 13:46:46推薦閱讀 RECOMMENDED READING