DirectUI,標準介面的又一次挑戰!

2021-06-03 00:10:25 字數 936 閱讀 3799

directui 現在開始火了,它最早出現在微軟的msn上,現在此技術已經應用到office等大型產品中。

國內近來隨著知名的qq,迅雷採用此技術,更是把directui徹底推向了前台。那麼什麼叫directui ?你真的需要directui 嗎?

我們先說說directui的原理,directui顧名思義就是介面直接呈現,國外也稱為winhandle-less,就是控制代碼少的意思。

那麼它為什麼能直接呈現介面而且控制代碼少呢,我們先從windows標準介面說起,我們都知道windows每個控制項都有乙個控制代碼,系統通過傳送訊息到控制項這個控制代碼來完成訊息傳遞。那麼如果控制代碼少,訊息傳遞就少,自然效率就高一些,這個也是directui 的好處之一,當然這個不是directui 主要的目的。因為標準控制項在directui 下是無法顯示的,雖然所有訊息都能收到,但是最關鍵的wm_paint訊息在使用updatelayeredwindow後失效了。這就要求所有的控制項在directui 下都需要模擬,那麼就突破了標準控制項的一些限制,能呈現更好的視覺效果。也許這裡就有人要問為什麼要用updatewindowslayer呢?不用updatelayeredwindow那麼標準控制項不是都可以用了嗎?這就要從一些實際需求來解釋這個問題,乙個最簡單的要求就是有些軟體需要窗體背景透明但是窗體裡的內容不透明,這個時候按傳統的方法你怎麼做呢?通過setlayeredwindowattributes設定透明度

你會發現窗體裡所有控制項的透明度也跟窗體一樣了,這顯然不符合要求,那麼怎麼辦呢,以前比較靈活的做法就是雙窗體方法,這個方法很多地方都有講述,我這就解釋了,這也不是我們今天討論的話題,因為它不是真正的directui ,根據這個原理大家就能容易的區分乙個程式是否是directui ,用spy++看窗體上的控制項,如果基類不是微軟的標準控制項,那麼就有可能採用了directui 。

文章最後貼乙個在xp下的directui表現,這也是directui的好處就是xp,vista,win7介面效果都是一致的

go語言 介面的思考(一)

在 學習go語言 中,有乙個例子,說得是怎樣做乙個通用的介面來實現給數字,字串來排序。第一種思路 1.定義乙個函式,可以接收任意型別做為入參,然後 在函式內,根據入參來判斷是那乙個型別 func sort i inte ce 在呼叫時,sort int 我們傳入了乙個陣列,很不幸,go不能 隱式 轉...

關於介面的統一驗證

核心基類呼叫統一驗證 use framework lib controller use framework extend des 控制器到父類做一些公共到業務處理 class commoncontroller class commoncontroller extends controller 執行父...

除錯介面的一些方法

什麼事情都是有乙個順序的,除錯也一樣,遵循一定的步驟就可以進行錯誤的逐一排查。方法二 看執行的程式裡面是否出現timeout這種錯誤。方法三 直接把訪問的ulr複製到瀏覽器裡面執行,看看結果。分為 get和post命令 get命令 方法一 通過瀏覽器來除錯這乙個介面 非常好 方法二 通過debug來...