青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
萬星星@豌豆莢 歡迎加入我們
一個(gè)吃軟飯的男人!!!!!我只想寫程序####
微博:
http://weibo.com/wanlianwen
C++博客
首頁(yè)
新文章
新隨筆
聚合
管理
posts - 172, comments - 1253, trackbacks - 0
BCG Skin插件機(jī)制研究過程
首先聲明講的是思考問題的思路,具體skin無非采用hook subclass技術(shù)。對(duì)于一個(gè)事情全局把握,點(diǎn)到為止,個(gè)人覺得順藤摸瓜,抓住有效線索對(duì)于學(xué)習(xí)技術(shù)很重要。
今天無聊,想起B(yǎng)CG有個(gè)Skin Application,于是研究了下。
開始不明白怎么回事,用向?qū)a(chǎn)了一個(gè)Skin,看了下程序結(jié)構(gòu):
class
?CwlwSkin?:?
public
?CBCGPVisualManager
這個(gè)是Skin實(shí)現(xiàn)應(yīng)該了,暫且不管,因?yàn)橹饕肟纯礄C(jī)制。
有這些函數(shù):
CTestSkinApp?theApp;
CRuntimeClass
*
?__stdcall?BCGCBProGetSkinClass?(
int
?iIndex)
{
????
switch
?(iIndex)
????
{
????
case
?
0
:
????????
return
?RUNTIME_CLASS?(CwlwSkin);
????
//
?TODO:?return?other?skin?classes?here
????
????}
????
return
?NULL;
}
//
*************************************************************************************
int
?__stdcall?BCGCBProGetSkinCount?()
{
????
return
?
1
;
}
//
*************************************************************************************
LPCTSTR?__stdcall?BCGCBProGetSkinName?(
int
?iIndex)
{
????
switch
?(iIndex)
????
{
????
case
?
0
:
????????
return
?_T(
"
wlwSkin
"
);
????
//
?TODO:?return?other?skin?names?here
????
????}
????
return
?NULL;
}
//
*************************************************************************************
BOOL?__stdcall?BCGCBProGetSkinVersion(
int
&
?iVersionMajor,
int
&
?iVersionMinor)
{
????iVersionMajor?
=
?_BCGCBPRO_VERSION_MAJOR;
????iVersionMinor?
=
?_BCGCBPRO_VERSION_MINOR;
????
return
?TRUE;
}
//
*************************************************************************************
BOOL?__stdcall?BCGCBProIsUNICODE()
{
#ifdef?_UNICODE
????
return
?TRUE;
#else
????
return
?FALSE;
#endif
}
//
*************************************************************************************
BOOL?__stdcall?BCGCBProPreviewSkin?(CDC
*
?pDC,?
int
?iIndex,?CRect?rectPreview)
{
????AFX_MANAGE_STATE(AfxGetStaticModuleState?())
????
switch
?(iIndex)
????
{
????
case
?
0
:
????????
{
????????????CBitmap?bmpPreview;
????????????bmpPreview.LoadBitmap?(IDB_WLWSKIN_PREVIEW);
????????????pDC
->
DrawState?(rectPreview.TopLeft?(),?rectPreview.Size?(),?
????????????????????????????
&
bmpPreview,?DSS_NORMAL);
????????}
????????
return
?TRUE;
????
//
?TODO:?preview?other?skins?here
????
????}
????
return
?FALSE;
}
//
*************************************************************************************
LPCTSTR?__stdcall?BCGCBProGetSkinAuthor?(
int
?
/**/
/*
iIndex
*/
)
{
????
return
?_T(
"
萬連文,?微軟可以么
"
);
}
//
*************************************************************************************
LPCTSTR?__stdcall?BCGCBProGetSkinAuthorURL?(
int
?
/**/
/*
iIndex
*/
)
{
????
return
?_T(
"
m.shnenglu.com/wlwlxj
"
);
}
//
*************************************************************************************
LPCTSTR?__stdcall?BCGCBProGetSkinAuthorMail?(
int
?
/**/
/*
iIndex
*/
)
{
????
return
?_T(
"
mail.google.com
"
);
}
//
*************************************************************************************
int
?__stdcall?BCGCBProGetSkinUpdate?()
{
????
return
?
1
;
}
初一看以為是導(dǎo)出函數(shù)(其實(shí)確實(shí)是,不過導(dǎo)出方法就有點(diǎn)隱晦,下面提到),大概是一個(gè)動(dòng)態(tài)庫(kù)吧,按照一般Skin都是需要在程序里面初始化,于是匆匆生產(chǎn)一個(gè)程序調(diào)用。
結(jié)果發(fā)現(xiàn)根本沒有導(dǎo)出函數(shù)聲明,在回去看看原以為導(dǎo)出的函數(shù),shit,上當(dāng)了,不是導(dǎo)出函數(shù)啊???讀一下函數(shù),BCGCBProGetSkinClass?嫌疑最大,但是怎么調(diào)用呢??一時(shí)間不可能在化大力氣去研究整個(gè)BCG吧。
突然想到以前看到過BCG帶的一個(gè)例子--BCGPSkins在安裝目錄下,于是打開源碼希望有所發(fā)現(xiàn),里面確實(shí)實(shí)現(xiàn)了幾種Skin風(fēng)格,然而它是一個(gè)完整的exe,在想想我剛生成的第一個(gè)skin是否也是一個(gè)exe??于是打開Setting,發(fā)現(xiàn)link->output file name:F:\Program Files\Common Files\BCGsoft\Skins\TESTSKIN.dll(我的OS是F:),哦,確實(shí)是一個(gè)dll,那我怎么改造成exe呢??
思維再次堵住,索性到那個(gè)目錄下看看,哦,發(fā)現(xiàn)好多Skin啊,放這里做什么??想了一下,是不是BCG有一種機(jī)制可以Custom界面成為這些風(fēng)格啊??于是再次生成一個(gè)exe,這一次一步一步細(xì)心走向?qū)ВK于發(fā)現(xiàn)最后一步有一項(xiàng):Use Skin Manager,勾上,選擇缺省目錄應(yīng)該就是剛到的那個(gè)目錄了吧。
運(yùn)行,選擇Customize,找一下,發(fā)現(xiàn)了一個(gè)按鈕Visualization,按一下,oh yeah,就是了,原來是皮膚插件管理機(jī)制,通過那幾個(gè)函數(shù)實(shí)現(xiàn)的。
至此研究過程基本結(jié)束,大概化1.5小時(shí)。又思考了下那些函數(shù)到底如何導(dǎo)出,開始還以為是BCG那個(gè)頭文件里面預(yù)定義導(dǎo)出的,于是搜索了一下BCGCBProGetSkinClass?,發(fā)現(xiàn)root.def,這個(gè)是向?qū)0胬锩娴奈募蜷_發(fā)現(xiàn)在這里導(dǎo)出的。
EXPORTS
????BCGCBProGetSkinClass????????@
1
????BCGCBProGetSkinCount????????@
2
????BCGCBProGetSkinName????????????@
3
????BCGCBProGetSkinVersion????????@
4
????BCGCBProPreviewSkin????????????@
5
????BCGCBProGetSkinAuthor????????@
6
????BCGCBProGetSkinAuthorMail????@
7
????BCGCBProGetSkinAuthorURL????@
8
????BCGCBProGetSkinUpdate????????@
9
????BCGCBProIsUNICODE????????????@
10
開心,覺得有一種成就感!
posted on 2006-08-25 00:25
萬連文
閱讀(2076)
評(píng)論(0)
編輯
收藏
引用
所屬分類:
MFC
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
相關(guān)文章:
VC8中MFC集成ATL組件注冊(cè)時(shí)注意的一個(gè)問題
未來界面應(yīng)該是這樣的
純技術(shù)討論com控件創(chuàng)建過程
界面終于出來一點(diǎn)拉
自己畫的好友列表
用WLWUI庫(kù)描述kugoo界面
上班半個(gè)月的總結(jié)
用MFC實(shí)現(xiàn)WebGUI--(CDHtmlDialog)
閑暇時(shí)間做的幾個(gè)界面
轉(zhuǎn)孫輝老師《十年MFC經(jīng)歷認(rèn)識(shí)的Microsoft技術(shù)》
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
簡(jiǎn)歷下載
聯(lián)系我
<
2006年11月
>
日
一
二
三
四
五
六
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(66)
給我留言
查看公開留言
查看私人留言
隨筆分類
.NET(6)
ACDK(6)
ATL(11)
MFC(29)
richedit(9)
WTL(1)
亂七八糟(61)
模板(8)
小作品(40)
隨筆檔案
2013年3月 (2)
2012年9月 (2)
2012年8月 (2)
2012年7月 (2)
2012年6月 (3)
2012年5月 (2)
2011年9月 (2)
2011年8月 (1)
2011年6月 (2)
2011年5月 (4)
2011年4月 (2)
2011年3月 (2)
2010年12月 (1)
2009年9月 (1)
2009年8月 (2)
2009年7月 (2)
2009年6月 (2)
2009年5月 (1)
2009年4月 (1)
2009年1月 (1)
2008年12月 (5)
2008年11月 (2)
2008年10月 (1)
2008年9月 (7)
2008年8月 (2)
2008年3月 (3)
2008年2月 (2)
2008年1月 (3)
2007年12月 (6)
2007年11月 (1)
2007年10月 (3)
2007年9月 (1)
2007年8月 (5)
2007年7月 (5)
2007年6月 (3)
2007年5月 (5)
2007年4月 (5)
2007年3月 (4)
2007年2月 (2)
2007年1月 (2)
2006年12月 (4)
2006年11月 (8)
2006年10月 (1)
2006年9月 (9)
2006年8月 (7)
2006年7月 (10)
2006年6月 (1)
2006年5月 (2)
2006年4月 (10)
2006年3月 (3)
2006年2月 (3)
2006年1月 (2)
2005年12月 (8)
相冊(cè)
new
個(gè)人相冊(cè)
搜索
最新評(píng)論
1.?re: 用MFC實(shí)現(xiàn)WebGUI--(CDHtmlDialog)
前輩好,代碼下載之后怎么用啊?我生成的exe打開是空白的頁(yè)面,菜單新建不知道建的啥,打開一個(gè)html頁(yè)面也沒有反應(yīng),我的環(huán)境是vs2010
--王同林
2.?re: 使MFC變漂亮一:MFC與Flash交互示例
能不能把Flash源文件共享一下,要不然Flash端變量不知道怎么操作
--ddd
3.?re: 甘特圖第一版本發(fā)布
你這個(gè)附件有什么功能限制?
--xrczld
4.?re: 并行編程--MPI開發(fā)入門
我是用的vs+MPICH2,用wmpiexec運(yùn)行我的exe的時(shí)候,不能連接到主機(jī)是什么鬼啊。。求回復(fù)
--M琨M
5.?re: 基于Chrome開源提取的界面開發(fā)框架 三(.3)
豌豆莢非常不錯(cuò)的應(yīng)用
--mmocake
閱讀排行榜
1.?基于Chrome開源提取的界面開發(fā)框架開篇(32469)
2.?用MFC實(shí)現(xiàn)WebGUI--(CDHtmlDialog)(26073)
3.?并行編程--MPI開發(fā)入門(19239)
4.?使MFC變漂亮二:MFC與HTML交互示例(17605)
5.?FreeType2研究(16155)
評(píng)論排行榜
1.?我把初戀搞丟了(原創(chuàng))(55)
2.?一個(gè)小型繪圖程序(45)
3.?并行編程--MPI開發(fā)入門(42)
4.?我得C++學(xué)習(xí)心得(41)
5.?用MFC實(shí)現(xiàn)WebGUI--(CDHtmlDialog)(40)
Copyright ©2025 萬連文 Powered By
博客園
模板提供:
滬江博客
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
麻豆久久婷婷
|
在线电影院国产精品
|
99这里只有精品
|
亚洲激情午夜
|
亚洲经典在线看
|
日韩亚洲在线
|
亚洲伊人网站
|
久久婷婷国产综合尤物精品
|
卡通动漫国产精品
|
欧美国产日韩视频
|
国产精品国产三级国产专播精品人
|
国产精品五月天
|
国产日韩在线播放
|
亚洲激情社区
|
亚洲欧美国产不卡
|
免费久久99精品国产自
|
亚洲伦理久久
|
欧美一级欧美一级在线播放
|
美女爽到呻吟久久久久
|
国产精品国产a
|
黄色综合网站
|
亚洲一区二区三区在线播放
|
久久久久久高潮国产精品视
|
亚洲片在线观看
|
欧美在线播放一区
|
欧美激情中文字幕在线
|
国产日韩在线一区
|
一区二区高清
|
蜜桃av噜噜一区
|
亚洲先锋成人
|
欧美成人一区二区三区在线观看
|
国产精品亚洲成人
|
亚洲高清影视
|
香蕉乱码成人久久天堂爱免费
|
欧美福利电影在线观看
|
一本色道精品久久一区二区三区
|
欧美亚洲一区在线
|
欧美日韩一区二区三
|
激情91久久
|
午夜精品一区二区三区电影天堂
|
亚洲精品在线二区
|
亚洲综合电影
|
欧美日韩免费在线视频
|
一区二区在线观看av
|
午夜精品福利视频
|
亚洲伦理精品
|
欧美精品九九
|
亚洲国产欧美一区二区三区久久
|
午夜精品久久久久
|
日韩性生活视频
|
你懂的视频一区二区
|
韩国一区电影
|
久久久久国产免费免费
|
亚洲欧美电影在线观看
|
欧美日韩在线免费视频
|
99精品国产一区二区青青牛奶
|
久久综合网hezyo
|
久久国产综合精品
|
国产自产在线视频一区
|
欧美专区日韩专区
|
亚洲午夜电影
|
国产精品区二区三区日本
|
亚洲影音先锋
|
亚洲一区二区综合
|
国产精品午夜在线观看
|
欧美一激情一区二区三区
|
亚洲日本电影在线
|
欧美日精品一区视频
|
亚洲视频中文
|
亚洲男人第一av网站
|
国产美女一区二区
|
久久久久国产精品麻豆ai换脸
|
欧美一区二区三区在线
|
国内成人精品视频
|
欧美77777
|
欧美电影免费网站
|
亚洲一区二区三区国产
|
亚洲制服av
|
狠狠做深爱婷婷久久综合一区
|
久久深夜福利免费观看
|
快播亚洲色图
|
99国产精品国产精品毛片
|
99成人在线
|
国产日韩一区二区三区
|
久久综合色88
|
欧美日韩国产麻豆
|
久久99伊人
|
久久婷婷影院
|
在线一区二区三区做爰视频网站
|
亚洲私人影吧
|
一区二区三区在线视频播放
|
亚洲高清一区二
|
国产精品你懂的在线欣赏
|
久久野战av
|
欧美日韩国产在线观看
|
欧美一区二区在线视频
|
美女国产一区
|
午夜亚洲性色福利视频
|
乱人伦精品视频在线观看
|
亚洲午夜精品视频
|
久久久久久9
|
亚洲午夜一区二区
|
亚洲高清激情
|
国产精品久久久久久久久久久久久久
|
国产精品青草久久
|
久久久久久夜精品精品免费
|
欧美福利视频在线观看
|
久久国产精彩视频
|
欧美日韩的一区二区
|
久久久久91
|
国产精品盗摄久久久
|
欧美激情片在线观看
|
国产一区二区三区黄视频
|
一本久久综合亚洲鲁鲁五月天
|
国产伦精品一区二区三区视频孕妇
|
亚洲成色777777在线观看影院
|
国产日韩在线播放
|
亚洲桃色在线一区
|
亚洲色图制服丝袜
|
欧美高清视频一区二区三区在线观看
|
亚洲欧美日韩精品久久久
|
在线观看三级视频欧美
|
欧美一级成年大片在线观看
|
亚洲午夜精品一区二区
|
欧美精品电影
|
欧美成人日韩
|
影院欧美亚洲
|
亚洲性图久久
|
亚洲午夜视频在线观看
|
欧美激情亚洲一区
|
欧美激情精品久久久久
|
影音先锋成人资源站
|
久久久999精品视频
|
久久精品天堂
|
国产午夜精品全部视频在线播放
|
一区二区三区高清在线
|
国产亚洲亚洲
|
欧美一区二区三区在线
|
久久天天躁夜夜躁狠狠躁2022
|
国产精品日韩精品欧美在线
|
中日韩美女免费视频网站在线观看
|
99精品国产在热久久婷婷
|
欧美国产亚洲精品久久久8v
|
欧美激情亚洲国产
|
日韩一级网站
|
欧美日韩精品在线视频
|
99ri日韩精品视频
|
先锋影音久久
|
国产视频一区免费看
|
久久gogo国模裸体人体
|
免费视频亚洲
|
9色精品在线
|
欧美性猛交视频
|
亚洲综合99
|
久久青草久久
|
亚洲精品欧美专区
|
欧美视频一区二区三区四区
|
亚洲一区二区少妇
|
久久久综合精品
|
亚洲黄网站黄
|
欧美偷拍另类
|
午夜一级在线看亚洲
|
亚洲人成毛片在线播放女女
|
欧美精品激情
|
亚洲小说区图片区
|
久久精品夜色噜噜亚洲a∨
|
亚洲高清网站
|
国产精品入口夜色视频大尺度
|
亚洲综合日韩在线
|
裸体女人亚洲精品一区
|
91久久在线观看
|
国产精品高潮呻吟久久av无限
|
欧美在线啊v一区
|
亚洲激情影院
|
久久精品国产精品亚洲精品
|
亚洲激情欧美激情
|
国产精品欧美日韩一区二区
|
久久久久天天天天
|
av成人毛片
|
欧美11—12娇小xxxx
|
亚洲欧美影音先锋
|
亚洲黄色毛片
|
国产亚洲精品久久久久动
|
欧美韩国一区
|
久久久av毛片精品
|
亚洲一区在线播放
|
亚洲人成网站精品片在线观看
|
欧美国产一区二区
|
亚洲综合视频一区
|
最新国产拍偷乱拍精品
|
国产亚洲激情
|
国产精品成人免费精品自在线观看
|
久久久天天操
|
亚洲一区二区三区欧美
|
亚洲国产精品va在线观看黑人
|
欧美一区二区网站
|
中国av一区
|
亚洲乱码国产乱码精品精98午夜
|
国产自产高清不卡
|
国产免费成人av
|