天天看點

PowerBuilder程式設計新思維4:鈎挂(界面美化與DirectUI)

<第二部分 Outside 哭泣的小醜>

這是一個看臉的時代,PB無論怎麼努力打扮,在别人眼中就是一個小醜。這位哭泣的小醜,怎樣努力才是未來?

PowerBuilder程式設計新思維4:鈎挂(界面美化與DirectUI)

PB的界面由于其封閉性,一直以來都是最大的弱項。自PB9.0開放了PBNI接口後,開始流行起來一些界面美化方案。目前來看,共分三類。

PB界面美化方案一:Canvas自繪

PBNI接口允許建立自繪元件,開源軟體Kodigo創造了Canvas元件,允許PB代碼自繪元件界面,由此開創了Canvas自繪方案。目前比較流行的元件庫有:

一、Kodigo

二、AdvancedGUI

三、PowerFramework

這種方案的優點是體系化,定制化。缺點是較慢(數十數百個Canvas自繪),高侵入性(必須使用定制元件)。

PowerBuilder程式設計新思維4:鈎挂(界面美化與DirectUI)
PowerBuilder程式設計新思維4:鈎挂(界面美化與DirectUI)
PowerBuilder程式設計新思維4:鈎挂(界面美化與DirectUI)

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", "")      
PowerBuilder程式設計新思維4:鈎挂(界面美化與DirectUI)

 源碼: PowerPlumeDemoV0.4.1.rar

 提供了PB10.5 PB11.5 PB12.5三個版本

<本節完>