青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

萬星星@豌豆莢 歡迎加入我們
一個(gè)吃軟飯的男人!!!!!我只想寫程序####
微博:http://weibo.com/wanlianwen
posts - 172,  comments - 1253,  trackbacks - 0
首先聲明講的是思考問題的思路,具體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
簡歷下載
聯(lián)系我

<2008年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用鏈接

留言簿(66)

隨筆分類

隨筆檔案

相冊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲综合另类| 欧美第一黄网免费网站| 国产综合色产| 免费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精品国产高清一区二区| 国产伦精品一区二区三区高清| 亚洲经典视频在线观看| 国产女优一区| 亚洲激情另类| 国产一区二区三区最好精华液| 欧美寡妇偷汉性猛交|