<第二部分 Outside>
PowerBuilder編程新思維4:鈎掛(界面美化與DirectUI)
PB的界面由於其封閉性,一直以來都是最大的弱項。自PB9.0開放了PBNI接口后,開始流行起來一些界面美化方案。目前來看,共分三類。
PB界面美化方案一:Canvas自繪
PBNI接口允許創建自繪組件,開源軟件Kodigo創造了Canvas組件,允許PB代碼自繪組件界面,由此開創了Canvas自繪方案。當前比較流行的組件庫有:
一、Kodigo
二、AdvancedGUI
三、PowerFramework
這種方案的優點是體系化,定制化。缺點是較慢(數十數百個Canvas自繪),高侵入性(必須使用定制組件)。
PB界面美化方案二:窗口換膚
這種方案可以用於多種開發語言和工具,其原理是劫持窗口消息,完全自繪窗口。所以界面完全與業務代碼分離。優點是使用方便,侵入性最低。缺點是定制困難。
支持這個方案的基本是商業工具,開源且較為完備的有SkinTK V0.20。
PB界面美化方案三:Hook + DirectUI
這種方案正是PowerPlume所采用的方案,與前兩個方案比較起來,綜合了兩者的優點。ApiHook可以使用任意現有窗口,無需繼承,使得侵入性降低,同時又可以定制其內容,避免了內容雷同的換膚。DirectUI技術(使用Duilib庫)允許在同一窗口創建多個組件,避免了眾多Canvas組件帶來的性能壓力。
接口也相對簡單,一種組件只需一個接口
duistartup(256) drawbarcode(st_bc1, "qr", "12345678", "") drawbarcode(st_bc2, "ean", "12345678", "") drawimage(cb_img, "png", "Google", "") drawimage(cb_img_v, "png", "Google", "") drawimage(pb_img, "baidu", "Baidu", "") drawicon(st_ico, "female", "female", "") drawicon(st_ico2, "male", "male", "") drawicon(cb_ico, "star", "star", "")
提供了PB10.5 PB11.5 PB12.5三個版本
<本節完>