各種介面技術比較

2021-07-11 23:28:57 字數 1933 閱讀 9267

前言

縱觀這幾年,介面庫的發展可謂風聲水起,諷刺意味的是:大家對pc上的介面重視程度,**於手機介面的發展。當蘋果出現時,徹底讓人們對介面的需求,提高了乙個台階。隨之而來的是粗糙介面的塞班介面的沒落。

過去,人們不太重視軟體介面,把更多的精力放到程式功能上。現在人們越來越意識到,乙個好的介面對產品的成功有時起著關鍵性作用。這是好現象,在產品同質化嚴重的今天,乙個好的介面,就會讓產品脫穎而出。

介面庫的分代

在vc++開發上,介面大致經歷了這麼幾代:

第二代hook換膚庫:這是為了解決win32原生態介面「淳樸」外觀而誕生的。以skinmagic、skinplusplus、skinsharp等為代表。它有乙個看起來美麗、又特別唬人的特性:一句**換膚。是的,它能做的也僅限於此了。因為它不介入介面開發,所以不會提高介面開發效率;因為你只呼叫了它一行**,所以,hook換膚庫里有任何bug,你都無法繞開,除非你注釋掉這行**,不用它,而bug幾乎是一定有的;因為hook介面庫只認識控制項型別,不認識具體控制項,也就是說,換膚後,所有同型別控制項,都會長乙個樣,很難做到個性化。兼於種種原因,所以hook介面庫早已光榮退休了。

第三代dui介面庫:dui是directui的簡稱,也稱作windowless,意思是無控制代碼,以duilib為代表。前兩年,大家都搞dui,dui著實火了一陣兒。當初產生dui,其中乙個原因是自繪某些win32控制項特別困難,與其花大力自繪這些win32控制項,還不如乾脆自己開發乙個得了;另乙個原因是他們自認為dui比win32控制項安全,實際上完全不是的。隨著這兩年使用的深入,dui的各種弊端都逐漸暴露出來了。dui控制項是比照著win32控制項來實現的,這句話的潛台詞是:win32控制項是標準,是被模仿的物件。雖然理論上,dui可以完整的模擬出乙個win32控制項,但乙個比較糟糕的現實是:國內做dui的程式設計師,幾乎沒有人知道乙個完整的win32控制項應該是什麼樣、具有什麼功能。所以他們只能模仿他們看到的部分。dui介面庫雖然相對於win32原生態控制項,提供了控制項貼圖的功能、但卻失去了更多本來應有的功能,變成了一朵艷麗的假花兒。我們知道,win32控制項是windows作業系統提供的基礎控制項,windows可以保證它一直擁有著最新特性。舉個例子,我們在windows xp上,製作了乙個介面,介面上有個tree控制項。當把這個編譯好的exe放到裝了win8系統且帶多點觸控螢幕的電腦上執行時,tree控制項會自動具有慣性滑屏的功能,雖然xp不支援多點觸控。當我們開啟系統的介面朗讀功能時,用鍵盤在tree控制項上操作,系統會自動根據您所選的item,正確朗讀出來。(這正是accessibility法案的一條要求,對於出口到歐美國家的軟體,accessibility法案是強制規定。所以,目前還沒有任何乙個國產的dui庫做的介面,達到這一強制規定)。當將來的win9、win10等系統有新功能時,這些win32控制項,會自動擁有這些功能。這一點是dui介面完全不具備的。

現在還有一種介面庫,為了區分,暫稱之為directhwnd技術吧:以libuidk為代表。它從原生win32控制項派生,保留了win32控制項所有特性、擁有完整的訊息機制、與win32控制項完全一樣的程式設計思想(意味著幾乎忽略不計的學習和維護成本、更小的風險,如果是dui庫,你得按它的方式來呼叫,它封裝成com,你就得懂com)、又提供了dui介面的自繪功能。是win32控制項與dui的完美組合。下圖可以表示win32控制項、dui控制項和hwnd-directui控制項三者的關係。

各種介面技術比較

前言 縱觀這幾年,介面庫的發展可謂風聲水起,諷刺意味的是 大家對pc上的介面重視程度,於手機介面的發展。當蘋果出現時,徹底讓人們對介面的需求,提高了乙個台階。隨之而來的是粗糙介面的塞班介面的沒落。過去,人們不太重視軟體介面,把更多的精力放到程式功能上。現在人們越來越意識到,乙個好的介面對產品的成功有...

各種排序比較

直接插入排序 void insertsort elemtype a,int n 氣泡排序 void bubblesort int a,int n i pos 為下一趟排序作準備 快速排序 int partition elemtype a,int low,int high a low pivot 樞軸...

各種api介面

實用號碼歸屬地查詢 ip 位址,手機號碼 預設格式 http api.liqwei.com location 使用來訪者的 ip 位址 指定手機號碼格式 北京的號碼 可選引數 js js 輸出 預設為 0,可選值 1,0 備註 utf 8 編碼支援的格式 其它引數不變 城市天氣情況查詢 指定手機號碼...