1 SkinUI的發(fā)展歷史和開發(fā)環(huán)境

SkinUI界面庫提供Windows界面開發(fā)全套解決方案苏遥,經(jīng)過幾年不斷的優(yōu)化和迭代,變得非常穩(wěn)定和高效。本文將會簡單介紹如何使用SkinUI界面庫開發(fā)Windows客戶端應(yīng)用烟零。

本章是全書的基礎(chǔ),簡要介紹SkinUI界面庫的歷史骂因、現(xiàn)狀和發(fā)展趨勢丢胚,并重點向讀者講解如何搭建和使用SkinUI界面開發(fā)環(huán)境,包括SkinUI提供的Sln++有咨、Res++、Spy++工具蒸健。掌握這些工具是開發(fā)SkinUI應(yīng)用的基礎(chǔ)技能座享。

1.1 歷史和現(xiàn)狀

SkinUI是本人利用業(yè)余時間開發(fā)的用于Windows客戶端開發(fā)的界面庫婉商,從2010年8月至今一直不斷優(yōu)化和迭代。

第一版的界面庫以MFC為基礎(chǔ)自定義了一系列的控件渣叛,布局只有絕對定位丈秩。雖然能實現(xiàn)市面上大部分客戶端軟件的效果,但是難以擴展淳衙,開發(fā)效率低下蘑秽。同時,因為依賴MFC箫攀,安裝包需要攜帶龐大的MFC庫文件肠牲,其體積是核心庫文件的幾十倍以上,對于開發(fā)一些幾百KB的小程序靴跛,代價有點大缀雳。

為了解決以上問題,第二版本的界面不再依賴MFC梢睛,轉(zhuǎn)而以WTL為基礎(chǔ)肥印,解決了庫文件體積龐大的問題。同時扬绪,該版本的界面庫增加了相對布局竖独,開發(fā)效率顯著提高。但是挤牛,MFC莹痢、WTL存在一些坑,需要寫很多猥瑣代碼才能繞過墓赴,不夠優(yōu)雅竞膳。另外,跟市面上其他產(chǎn)品相比诫硕,界面效果沒有讓人眼前一亮的感覺坦辟。一些動畫、換膚等高級功能實現(xiàn)起來依然繁瑣章办、最終實現(xiàn)的效果也無法令人滿意锉走。例如采用雙窗口聯(lián)動方式實現(xiàn)的陰影存在跟隨問題,在窗口拖動和最大最小化的時候有遲滯藕届。

實際上挪蹭,以上兩個版本都沒能完美解決擴展性的問題。例如休偶,為了實現(xiàn)產(chǎn)品各式各樣的按鈕梁厉,每種按鈕都需要從按鈕類繼承一下,最后可能存在幾十個類似的按鈕類踏兜,而它們僅僅只是繪制部分的代碼不同词顾。

為了解決以上存在的種種問題八秃,最終開發(fā)了第三版的界面庫。這一版本的界面庫以Win32為基礎(chǔ)肉盹,不再依賴MFC和WTL等第三方界面庫昔驱,歷史遺留問題得到徹底解決。除了支持相對布局垮媒,還支持水平布局舍悯、垂直布局航棱、幀布局睡雇、表格布局、比例布局等高效的布局方式饮醇。同時它抱,以組合的方式實現(xiàn)絕大部分控件,再也不需要每種按鈕繼承一個按鈕類朴艰,直接替換布局文件即可得到完全不同樣式的按鈕观蓄。

1.2 發(fā)展趨勢

Windows客戶端開發(fā)的一項重要工作就是用戶界面的開發(fā)。不管客戶端應(yīng)用實際包含的邏輯多么復(fù)雜祠墅、多么優(yōu)秀侮穿,如果這個應(yīng)用沒有提供友好的圖形用戶界面,也將很難吸引最終用戶毁嗦。

相反亲茅,如果為應(yīng)用程序提供了友好的圖形用戶界面,最終用戶通過鼠標(biāo)點點就可以操作整個應(yīng)用狗准,這個應(yīng)用程序就會受歡迎得多克锣。實際上,Windows之所以廣為人知腔长,其最初的吸引力就是來自于它所提供的圖形用戶界面袭祟。作為一個程序開發(fā)者,必須優(yōu)先考慮用戶的感受捞附,一定要讓用戶感到爽巾乳,我們的程序才會被需要、被使用鸟召,這樣的程序才有價值胆绊。

從趨勢上看,用戶對Windows客戶端界面的要求會越來越高药版,對Windows界面開發(fā)人才的需求也越來越大辑舷。對于大部分Windows客戶端來說,新增功能50%以上的開發(fā)量來自于界面開發(fā)槽片,后期迭代70%以上的工作量同樣來自界面開發(fā)何缓。

雖然界面開發(fā)的工作量越來越大肢础,但是MFC、WTL等傳統(tǒng)界面庫開發(fā)效率低下碌廓,實現(xiàn)動畫传轰、換膚等高級需求困難,同時卡頓谷婆、閃爍等一系列問題難以徹底解決慨蛙,已經(jīng)無法滿足互聯(lián)網(wǎng)時代多變的需求。

SkinUI提供了大量功能豐富的UI組件纪挎,開發(fā)者只需要按一定的規(guī)律把這些UI組件組合起來——就像小朋友“搭積木”一樣期贫,把這些UI組件按一定規(guī)律搭建在一起就可以開發(fā)出優(yōu)秀的圖形用戶界面。為了讓這些UI組件響應(yīng)用戶的鼠標(biāo)點擊异袄、鍵盤動作通砍,SkinUI提供了事件響應(yīng)機制,這樣可以方便的響應(yīng)用戶的交互操作烤蜕。

SkinUI致力于做最好用的Windows客戶端界面庫封孙,是現(xiàn)階段界面開發(fā)的不二選擇。

1.3 開發(fā)環(huán)境

SkinUI當(dāng)前版本為2.0讽营,可以從官網(wǎng)下載SkinUI開發(fā)包虎忌,官網(wǎng)地址:www.skinui.cn。當(dāng)前版本僅支持Microsoft Visual Studio 2013橱鹏,SkinUI開發(fā)包不需要安裝膜蠢,解壓下載的壓縮包,開發(fā)環(huán)境就準(zhǔn)備好了蚀瘸。以下是常用的工具:

  • SkinUISln++狡蝶,用來新建工程
  • SkinUIRes++,用來打包資源文件
  • SkinUISpy++贮勃,用來查看組件類型和位置

1.3.1 SkinUISln++

SkinUI使用工具【SkinUISln++】來新建工程贪惹。工具截圖如下:

SkinUISln++

新建項目的步驟如下:

  1. 在編輯框輸入工程名稱【MyProject】;
  2. 單擊按鈕【立即新建】寂嘉;
  3. 等進(jìn)度條走完奏瞬。

新建項目成功后,工作目錄下多了以下目錄:1)【src】目錄下的源碼目錄【MyProject】泉孩;2)【res】目錄下的資源目錄【MyProject】硼端;3)【skin】目錄下的皮膚目錄【MyProject】。

將源碼目錄【MyProject】下的工程文件加入VS2013的解決方案寓搬,編譯運行即可看到項目的主界面珍昨。開發(fā)者可以根據(jù)自己軟件的需求,隨意修改主界面的布局。

1.3.2 SkinUIrRes++

SkinUI使用工具【SkinUIRes++】來打包資源文件镣典。工具截圖如下:

SkinUIRes++

新建項目的步驟如下:

  1. 單擊按鈕【立即打包】兔毙;
  2. 等進(jìn)度條走完。

打包資源文件成功后兄春,【res】目錄下任意資源目錄【AnyProject】將會生成資源包文件【AnyProject.res】澎剥。關(guān)于資源包的用法,我們將在后面的章節(jié)詳細(xì)講解赶舆,此處先略過哑姚。

1.3.3 SkinUIrSpy++

SkinUI使用工具【SkinUISpy++】來查看控件的屬性,包括控件Id芜茵、類型叙量、位置和大小。工具截圖如下:

鼠標(biāo)在非SkinUI窗口上的顯示效果
鼠標(biāo)在SkinUI窗口上的顯示效果

查看控件屬性的步驟如下:

  1. 移動鼠標(biāo)到SkinUI窗口夕晓;
  2. 放在需要查看的控件上宛乃。

觀看上面的截圖,可以看到以下信息:

  • 控件的Id為【1】蒸辆;
  • 控件類名為【SkinButton】;
  • 控件的位置為【199,177,125,30】析既;
  • 控件的大小為【125*30】躬贡。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市眼坏,隨后出現(xiàn)的幾起案子拂玻,更是在濱河造成了極大的恐慌,老刑警劉巖宰译,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件檐蚜,死亡現(xiàn)場離奇詭異,居然都是意外死亡沿侈,警方通過查閱死者的電腦和手機闯第,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缀拭,“玉大人咳短,你說我怎么就攤上這事≈肓埽” “怎么了咙好?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長褐荷。 經(jīng)常有香客問我勾效,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任层宫,我火速辦了婚禮绘迁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘卒密。我一直安慰自己缀台,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布哮奇。 她就那樣靜靜地躺著膛腐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鼎俘。 梳的紋絲不亂的頭發(fā)上雏节,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天止状,我揣著相機與錄音,去河邊找鬼。 笑死钧汹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的康震。 我是一名探鬼主播吮螺,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼伏伐!你這毒婦竟也來了宠进?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤藐翎,失蹤者是張志新(化名)和其女友劉穎材蹬,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吝镣,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡堤器,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了末贾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闸溃。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖未舟,靈堂內(nèi)的尸體忽然破棺而出圈暗,到底是詐尸還是另有隱情,我是刑警寧澤裕膀,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布员串,位于F島的核電站,受9級特大地震影響昼扛,放射性物質(zhì)發(fā)生泄漏寸齐。R本人自食惡果不足惜欲诺,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望渺鹦。 院中可真熱鬧扰法,春花似錦、人聲如沸毅厚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吸耿。三九已至祠锣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間咽安,已是汗流浹背伴网。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留妆棒,地道東北人澡腾。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像糕珊,于是被迫代替她去往敵國和親动分。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,116評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫放接、插件刺啦、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,103評論 4 62
  • 感冒了快一個星期,好幾天沒有來健身房了纠脾,發(fā)現(xiàn)自己身體馬上又要反彈,于是下午約上朋友一起來了蜕青。 我們是把孩子送走后這...
    想飛的貓就是我閱讀 596評論 0 2
  • 近日看《軍師聯(lián)盟》苟蹈,結(jié)合以前看《三國》,頗有感觸右核。 曹操與劉備慧脱。 司馬懿與諸葛亮。 荀彧與曹操贺喝。
    DaChun閱讀 296評論 0 1
  • 8月7日菱鸥,星期一,天氣晴躏鱼,三二班李美靈媽媽氮采。 今天吃過早飯,帶女兒去紫荊泉游泳館報名學(xué)游泳染苛,老公...
    李美靈媽媽_四年級二班閱讀 286評論 0 0