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

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

<2006年11月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

常用鏈接

留言簿(66)

隨筆分類

隨筆檔案

相冊(cè)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            麻豆久久婷婷| 在线电影院国产精品| 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|