青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
萬(wàn)星星@豌豆莢 歡迎加入我們
一個(gè)吃軟飯的男人!!!!!我只想寫程序####
微博:
http://weibo.com/wanlianwen
C++博客
首頁(yè)
新文章
新隨筆
聚合
管理
posts - 172, comments - 1253, trackbacks - 0
BCG Skin插件機(jī)制研究過程
首先聲明講的是思考問題的思路,具體skin無(wú)非采用hook subclass技術(shù)。對(duì)于一個(gè)事情全局把握,點(diǎn)到為止,個(gè)人覺得順藤摸瓜,抓住有效線索對(duì)于學(xué)習(xí)技術(shù)很重要。
今天無(wú)聊,想起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(
"
萬(wàn)連文,?微軟可以么
"
);
}
//
*************************************************************************************
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ū)?,終于發(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
萬(wàn)連文
閱讀(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)系我
<
2007年9月
>
日
一
二
三
四
五
六
26
27
28
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
常用鏈接
我的隨筆
我的評(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 萬(wàn)連文 Powered By
博客園
模板提供:
滬江博客
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
亚洲电影第1页
|
国产精品卡一卡二
|
这里只有精品视频在线
|
亚洲精品在线电影
|
一本色道久久精品
|
午夜伦理片一区
|
久久久久久黄
|
欧美大片91
|
国产精品黄视频
|
国产一区再线
|
日韩天堂av
|
欧美一区二区观看视频
|
久久蜜桃香蕉精品一区二区三区
|
欧美sm视频
|
一区二区三区你懂的
|
亚洲中字在线
|
鲁大师影院一区二区三区
|
欧美精品久久久久久久
|
欧美偷拍另类
|
亚洲高清一区二区三区
|
99国产精品一区
|
久久精品国产成人
|
亚洲黄色在线
|
翔田千里一区二区
|
欧美电影电视剧在线观看
|
国产精品一区二区三区免费观看
|
精品88久久久久88久久久
|
夜夜嗨一区二区三区
|
久久精品免费看
|
日韩视频免费在线
|
久久国产精品高清
|
欧美色中文字幕
|
亚洲国产一区二区三区高清
|
日韩写真视频在线观看
|
午夜久久黄色
|
亚洲精选91
|
久久综合伊人77777尤物
|
国产精品萝li
|
99视频一区
|
欧美黄在线观看
|
久久国产精品一区二区三区
|
欧美日韩在线高清
|
亚洲日本va午夜在线电影
|
久久精品国产一区二区三区免费看
|
欧美日韩中文字幕在线视频
|
亚洲成人自拍视频
|
久久久青草婷婷精品综合日韩
|
99精品福利视频
|
久久免费视频这里只有精品
|
这里只有精品视频
|
欧美日韩高清不卡
|
亚洲免费成人
|
亚洲国产精品高清久久久
|
久久久亚洲精品一区二区三区
|
国产精品任我爽爆在线播放
|
亚洲午夜精品一区二区三区他趣
|
亚洲第一黄色网
|
免费成人在线观看视频
|
亚洲第一福利在线观看
|
久久综合网hezyo
|
久久se精品一区二区
|
国产亚洲精品久久久久婷婷瑜伽
|
亚洲高清自拍
|
欧美v日韩v国产v
|
亚洲成人在线视频播放
|
男人插女人欧美
|
欧美高清视频在线观看
|
99综合精品
|
在线视频免费在线观看一区二区
|
欧美日韩一区二区三区在线看
|
一本色道久久综合精品竹菊
|
欧美福利电影网
|
欧美不卡在线
|
亚洲一区欧美二区
|
亚洲免费网址
|
在线观看欧美视频
|
亚洲精品色图
|
国产伦精品一区二区三
|
久久久噜噜噜久久中文字免
|
久久久噜噜噜久噜久久
|
亚洲人成免费
|
中日韩高清电影网
|
激情一区二区三区
|
亚洲日本成人在线观看
|
国产精品一二一区
|
美女主播精品视频一二三四
|
欧美激情精品久久久久久
|
亚洲一区二区精品在线
|
欧美一区影院
|
亚洲久久一区
|
亚洲欧美成人一区二区在线电影
|
欧美视频一区在线
|
久久精品国产91精品亚洲
|
猛男gaygay欧美视频
|
亚洲视频日本
|
久久久久久久成人
|
亚洲欧美日韩直播
|
久久九九精品99国产精品
|
亚洲视频精品
|
久久天天躁狠狠躁夜夜爽蜜月
|
亚洲五月六月
|
老司机午夜精品
|
欧美一区二区三区在线免费观看
|
久久一区二区三区四区
|
亚洲一二三四久久
|
性欧美大战久久久久久久久
|
久热国产精品
|
91久久精品一区二区别
|
亚洲黄一区二区三区
|
欧美日韩国产不卡在线看
|
亚洲综合好骚
|
久久精品国产欧美激情
|
亚洲精品偷拍
|
亚洲一区中文
|
91久久精品一区二区三区
|
99这里只有精品
|
国产亚洲精品久
|
亚洲国产精品欧美一二99
|
国产精品久久777777毛茸茸
|
久久精品系列
|
欧美日韩免费在线观看
|
久久精品国产69国产精品亚洲
|
另类人畜视频在线
|
久久精品亚洲一区二区
|
国产精品蜜臀在线观看
|
日韩一二三区视频
|
亚洲精品美女久久7777777
|
亚洲最新中文字幕
|
久热re这里精品视频在线6
|
欧美视频免费
|
亚洲美女网站
|
中文欧美日韩
|
欧美日韩ab
|
日韩亚洲欧美综合
|
亚洲午夜一区二区
|
国产精品av免费在线观看
|
欧美一级电影久久
|
亚洲欧美一区在线
|
国产精品一区二区在线观看网站
|
日韩一二在线观看
|
亚洲午夜黄色
|
欧美性淫爽ww久久久久无
|
99国产一区
|
亚洲欧美国产精品桃花
|
国产精品v欧美精品v日本精品动漫
|
久久成人免费网
|
国产一区二区黄
|
久久久青草青青国产亚洲免观
|
久久视频一区
|
亚洲经典在线
|
欧美色欧美亚洲另类七区
|
一区二区日韩
|
久久午夜av
|
亚洲美女少妇无套啪啪呻吟
|
欧美日韩精品综合在线
|
亚洲性感美女99在线
|
久久精品国产69国产精品亚洲
|
红杏aⅴ成人免费视频
|
久久一区二区视频
|
日韩亚洲一区在线播放
|
欧美在线影院
|
亚洲欧洲在线一区
|
欧美午夜一区二区
|
久久国产直播
|
日韩一区二区精品视频
|
久久久精品国产99久久精品芒果
|
1024日韩
|
国产精品欧美一区喷水
|
欧美国产日韩在线观看
|
亚洲人成网站在线观看播放
|
欧美午夜无遮挡
|
久久久免费精品
|
国产精品99久久不卡二区
|
久久久久久久一区二区三区
|
亚洲精品乱码久久久久久蜜桃91
|
国产精品盗摄一区二区三区
|
久久久久久久精
|
亚洲一区中文
|
亚洲精品一区在线观看
|
麻豆久久婷婷
|
久久成人免费日本黄色
|
一本色道久久综合狠狠躁篇怎么玩
|
亚洲精品中文字
|
麻豆精品视频在线
|
欧美亚洲一区二区三区
|
日韩亚洲欧美综合
|
狠狠色丁香久久婷婷综合_中
|
欧美日韩三级在线
|
久久婷婷国产综合尤物精品
|
亚洲一区三区电影在线观看
|
亚洲国产成人在线视频
|
久久久99爱
|
亚洲欧美三级在线
|
一区二区日韩欧美
|
最新精品在线
|
亚洲第一久久影院
|
狠狠色狠狠色综合系列
|
国产精品一二三
|
欧美图区在线视频
|
欧美日韩一区免费
|