青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
萬星星@豌豆莢 歡迎加入我們
一個(gè)吃軟飯的男人!!!!!我只想寫程序####
微博:
http://weibo.com/wanlianwen
C++博客
首頁
新文章
新隨筆
聚合
管理
posts - 172, comments - 1253, trackbacks - 0
BCG Skin插件機(jī)制研究過程
首先聲明講的是思考問題的思路,具體skin無非采用hook subclass技術(shù)。對于一個(gè)事情全局把握,點(diǎn)到為止,個(gè)人覺得順藤摸瓜,抓住有效線索對于學(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(
"
www.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)庫吧,按照一般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)
評論(0)
編輯
收藏
引用
所屬分類:
MFC
只有注冊用戶
登錄
后才能發(fā)表評論。
相關(guān)文章:
VC8中MFC集成ATL組件注冊時(shí)注意的一個(gè)問題
未來界面應(yīng)該是這樣的
純技術(shù)討論com控件創(chuàng)建過程
界面終于出來一點(diǎn)拉
自己畫的好友列表
用WLWUI庫描述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
管理
簡歷下載
聯(lián)系我
<
2008年12月
>
日
一
二
三
四
五
六
30
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
31
1
2
3
4
5
6
7
8
9
10
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(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)
相冊
new
個(gè)人相冊
搜索
最新評論
1.?re: 用MFC實(shí)現(xiàn)WebGUI--(CDHtmlDialog)
前輩好,代碼下載之后怎么用啊?我生成的exe打開是空白的頁面,菜單新建不知道建的啥,打開一個(gè)html頁面也沒有反應(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ā)框架開篇(32472)
2.?用MFC實(shí)現(xiàn)WebGUI--(CDHtmlDialog)(26074)
3.?并行編程--MPI開發(fā)入門(19240)
4.?使MFC變漂亮二:MFC與HTML交互示例(17614)
5.?FreeType2研究(16157)
評論排行榜
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
博客園
模板提供:
滬江博客
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
亚洲综合另类
|
欧美第一黄网免费网站
|
国产综合色产
|
免费h精品视频在线播放
|
欧美国产日韩一区二区在线观看
|
欧美精品三级日韩久久
|
欧美一区二区三区另类
|
99热免费精品在线观看
|
欧美高清视频一区二区
|
久久精品国产99精品国产亚洲性色
|
欧美激情自拍
|
欧美一区二区三区视频免费
|
av成人天堂
|
亚洲精品国产精品国自产观看浪潮
|
欧美综合国产精品久久丁香
|
亚洲视频999
|
日韩视频在线观看一区二区
|
在线观看一区二区精品视频
|
国产日产亚洲精品
|
国产精品日韩一区二区
|
欧美日韩国产在线
|
欧美精品激情blacked18
|
久久久免费观看视频
|
久久成人这里只有精品
|
一本久道久久久
|
91久久精品一区二区三区
|
亚洲一卡久久
|
亚洲视频国产视频
|
一本一本久久
|
一区二区三区四区五区精品
|
亚洲美女诱惑
|
日韩视频在线一区二区
|
亚洲精品在线免费观看视频
|
最新国产乱人伦偷精品免费网站
|
欧美精选午夜久久久乱码6080
|
久久综合久久综合这里只有精品
|
国产精品成人一区二区
|
欧美日韩一二三四五区
|
欧美日韩中文精品
|
国产精品久久久久影院亚瑟
|
国产精品久久久久久av福利软件
|
在线观看欧美亚洲
|
影音先锋一区
|
亚洲国产日韩一区
|
亚洲九九精品
|
中文欧美在线视频
|
亚洲综合欧美日韩
|
欧美在线播放视频
|
久久久99国产精品免费
|
蜜桃久久精品一区二区
|
欧美波霸影院
|
亚洲精品久久久久久一区二区
|
99re国产精品
|
亚洲伊人观看
|
久久精品国产91精品亚洲
|
久久综合电影
|
欧美激情在线狂野欧美精品
|
亚洲日韩视频
|
亚洲素人在线
|
久久久精品性
|
欧美精品成人一区二区在线观看
|
欧美日韩精品欧美日韩精品
|
国产精品亚洲第一区在线暖暖韩国
|
国产日韩一区二区三区在线播放
|
在线观看不卡
|
一道本一区二区
|
欧美一区二区视频免费观看
|
免费永久网站黄欧美
|
亚洲精品美女在线观看播放
|
亚洲一区二区三区在线观看视频
|
欧美呦呦网站
|
欧美精品一区二区三
|
国产欧美婷婷中文
|
亚洲国产另类久久精品
|
国产精品99久久久久久有的能看
|
亚洲国产专区
|
亚洲一区二区三区中文字幕
|
久久精品视频99
|
欧美精品福利
|
国产欧美亚洲一区
|
亚洲精品人人
|
久久福利精品
|
91久久精品美女高潮
|
午夜精品国产精品大乳美女
|
免费欧美网站
|
国产女主播一区
|
最新亚洲一区
|
久久国产精品一区二区
|
亚洲人成小说网站色在线
|
亚洲一区日韩在线
|
欧美电影免费
|
国产日韩一区二区
|
日韩系列欧美系列
|
久久先锋资源
|
亚洲综合99
|
欧美日本亚洲
|
在线日韩日本国产亚洲
|
性欧美大战久久久久久久久
|
亚洲国产日日夜夜
|
久久久久国产精品麻豆ai换脸
|
欧美性大战久久久久
|
亚洲日本无吗高清不卡
|
久久久久免费
|
亚洲欧美第一页
|
欧美日韩视频一区二区三区
|
欧美激情1区2区
|
亚洲综合成人在线
|
99精品福利视频
|
久久亚洲精品一区二区
|
宅男66日本亚洲欧美视频
|
欧美国产精品久久
|
亚洲激情中文1区
|
女女同性精品视频
|
欧美淫片网站
|
国产欧美日韩
|
午夜视频久久久
|
在线视频你懂得一区
|
欧美日韩另类一区
|
亚洲精选久久
|
亚洲国产毛片完整版
|
久久综合五月
|
亚洲国产一区二区视频
|
欧美肥婆在线
|
久久久久九九九九
|
黄色一区二区三区
|
久久免费视频观看
|
久久精品99
|
在线观看91精品国产麻豆
|
久久久午夜视频
|
性欧美videos另类喷潮
|
国产精品久久久久久av下载红粉
|
亚洲精品日韩久久
|
久久精品1区
|
亚洲国产成人久久
|
亚洲国产欧洲综合997久久
|
欧美大尺度在线
|
国产亚洲精品一区二555
|
亚洲伊人网站
|
亚洲性线免费观看视频成熟
|
欧美日韩国产色综合一二三四
|
在线观看一区欧美
|
老色鬼精品视频在线观看播放
|
亚洲已满18点击进入久久
|
国产精品一区二区久久国产
|
午夜精品理论片
|
亚洲天堂男人
|
国产精品永久免费
|
久久精品一区
|
久久精品国产免费看久久精品
|
国产午夜精品一区二区三区视频
|
欧美一区二区在线播放
|
一本色道久久加勒比精品
|
国产精品男gay被猛男狂揉视频
|
亚洲图片欧美一区
|
亚洲色诱最新
|
国产伦精品一区二区三区高清版
|
久久久久久久91
|
欧美亚洲日本网站
|
亚洲承认在线
|
欧美激情欧美狂野欧美精品
|
欧美成人免费网站
|
一本一本久久
|
久久久久久欧美
|
亚洲国产美女精品久久久久∴
|
麻豆91精品
|
巨乳诱惑日韩免费av
|
亚洲精品黄网在线观看
|
亚洲国产精品第一区二区
|
欧美—级在线免费片
|
午夜电影亚洲
|
久久精品一区二区国产
|
亚洲高清在线观看
|
日韩亚洲视频在线
|
国产日韩欧美精品在线
|
免费观看在线综合色
|
欧美岛国在线观看
|
亚洲一区影院
|
性高湖久久久久久久久
|
亚洲电影免费观看高清完整版在线
|
欧美福利视频一区
|
欧美日韩一区二区三区高清
|
亚洲欧美综合一区
|
嫩草成人www欧美
|
亚洲视频一二
|
久久精品视频一
|
亚洲人成人77777线观看
|
亚洲欧美国产精品va在线观看
|
黑人巨大精品欧美一区二区
|
欧美激情1区
|
国产精品日本精品
|
亚洲国产女人aaa毛片在线
|
国产精品久久久久影院亚瑟
|
午夜视频在线观看一区二区三区
|
99精品国产高清一区二区
|
国产伦精品一区二区三区高清
|
亚洲经典视频在线观看
|
国产女优一区
|
亚洲激情另类
|
国产一区二区三区最好精华液
|
欧美寡妇偷汉性猛交
|