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

萬星星@豌豆莢 歡迎加入我們
一個吃軟飯的男人!!!!!我只想寫程序####
微博:http://weibo.com/wanlianwen
posts - 172,  comments - 1253,  trackbacks - 0
首先聲明講的是思考問題的思路,具體skin無非采用hook subclass技術。對于一個事情全局把握,點到為止,個人覺得順藤摸瓜,抓住有效線索對于學習技術很重要。

今天無聊,想起BCG有個Skin Application,于是研究了下。
開始不明白怎么回事,用向導生產了一個Skin,看了下程序結構:
class?CwlwSkin?:?public?CBCGPVisualManager
這個是Skin實現應該了,暫且不管,因為主要想看看機制。
有這些函數:
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;
}

初一看以為是導出函數(其實確實是,不過導出方法就有點隱晦,下面提到),大概是一個動態庫吧,按照一般Skin都是需要在程序里面初始化,于是匆匆生產一個程序調用。
結果發現根本沒有導出函數聲明,在回去看看原以為導出的函數,shit,上當了,不是導出函數啊???讀一下函數,BCGCBProGetSkinClass?嫌疑最大,但是怎么調用呢??一時間不可能在化大力氣去研究整個BCG吧。
突然想到以前看到過BCG帶的一個例子--BCGPSkins在安裝目錄下,于是打開源碼希望有所發現,里面確實實現了幾種Skin風格,然而它是一個完整的exe,在想想我剛生成的第一個skin是否也是一個exe??于是打開Setting,發現link->output file name:F:\Program Files\Common Files\BCGsoft\Skins\TESTSKIN.dll(我的OS是F:),哦,確實是一個dll,那我怎么改造成exe呢??
思維再次堵住,索性到那個目錄下看看,哦,發現好多Skin啊,放這里做什么??想了一下,是不是BCG有一種機制可以Custom界面成為這些風格?。??于是再次生成一個exe,這一次一步一步細心走向導,終于發現最后一步有一項:Use Skin Manager,勾上,選擇缺省目錄應該就是剛到的那個目錄了吧。
運行,選擇Customize,找一下,發現了一個按鈕Visualization,按一下,oh yeah,就是了,原來是皮膚插件管理機制,通過那幾個函數實現的。
至此研究過程基本結束,大概化1.5小時。又思考了下那些函數到底如何導出,開始還以為是BCG那個頭文件里面預定義導出的,于是搜索了一下BCGCBProGetSkinClass?,發現root.def,這個是向導模版里面的文件,打開發現在這里導出的。
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
簡歷下載
聯系我

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用鏈接

留言簿(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>
            久久免费99精品久久久久久| 久久久久久电影| 性高湖久久久久久久久| 激情小说另类小说亚洲欧美 | 欧美午夜精品伦理| 国产精品毛片大码女人| 欧美阿v一级看视频| 国产精品成人在线| 在线免费观看视频一区| 亚洲永久免费视频| 狂野欧美激情性xxxx| 99国产精品99久久久久久粉嫩| 亚洲女ⅴideoshd黑人| 欧美成人精品h版在线观看| 国产欧美亚洲日本| 亚洲免费电影在线观看| 国产精品免费一区二区三区观看| 欧美视频中文字幕在线| 亚洲国产cao| 欧美一区二区私人影院日本 | 欧美韩日一区二区三区| 国产色综合久久| 一区二区久久久久| 欧美gay视频| 亚洲欧美在线网| 欧美日韩午夜在线视频| 亚洲黄色av一区| 久久久精品一区| 中文一区二区| 欧美福利视频一区| 一区二区在线观看视频| 一区二区三区视频观看| 亚洲精品资源| 久久精品视频在线免费观看| 国产精品久久久免费| 亚洲精品中文字幕在线| 美女视频黄 久久| 午夜精品久久久久久久| 欧美日韩麻豆| 日韩视频亚洲视频| 你懂的国产精品| 欧美中文字幕在线| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 亚洲一区二区三区欧美| 久热这里只精品99re8久| 亚洲欧美日韩在线综合| 欧美一区二区免费观在线| 欧美日韩在线观看一区二区| 亚洲国产欧美在线人成| 久久久久综合一区二区三区| 亚洲一区二区三区高清不卡| 欧美日韩国产精品专区| 亚洲精选国产| 一区二区日韩| 99亚洲视频| 欧美福利专区| 亚洲最新在线| 99精品视频一区| 国产精品区一区二区三| 久久精品青青大伊人av| 久久夜色精品国产欧美乱| 亚洲激情偷拍| 99国产精品国产精品毛片| 一区二区三区视频在线播放| 免费成人黄色片| 一区二区三区视频观看| 亚洲欧美www| 在线观看欧美激情| 亚洲精品免费网站| 国产精品久久久久久久一区探花 | 亚洲精品在线二区| 在线亚洲免费视频| 国产亚洲一区二区精品| 欧美激情精品久久久六区热门| 欧美裸体一区二区三区| 性欧美video另类hd性玩具| 久久精品人人做人人综合| 亚洲精品美女免费| 亚洲欧美999| 欧美色区777第一页| 欧美在线观看视频一区二区三区 | 亚洲欧美成人综合| 亚洲高清一区二区三区| 一区二区三区日韩精品| 韩日在线一区| 99国产精品视频免费观看| 亚洲国产精品v| 欧美精品一区二区三区在线播放| 午夜精品福利一区二区三区av | 亚洲第一页自拍| 亚洲三级影院| 国产一区二区三区奇米久涩| 亚洲日本激情| 国内伊人久久久久久网站视频| 亚洲精品日本| 今天的高清视频免费播放成人| 亚洲另类春色国产| 黄网动漫久久久| 一区二区三区精品在线| 亚洲国产精品ⅴa在线观看| 亚洲一区国产精品| 亚洲精品日韩在线观看| 午夜欧美精品| 在线一区二区三区四区| 久久综合九色综合网站| 小处雏高清一区二区三区 | 亚洲精品资源| 久久国产主播精品| 亚洲综合精品自拍| 欧美一区二区私人影院日本| 欧美激情按摩在线| 久热精品视频在线免费观看| 国产精品免费看久久久香蕉| 亚洲国产免费| 一区在线播放| 午夜精品一区二区三区在线播放| 一区二区三区www| 久久综合久久久| 久久高清国产| 欧美特黄一区| 欧美日韩亚洲国产一区| 欧美国产日韩视频| 黄色资源网久久资源365| 亚洲欧美国产高清va在线播| 国产精品99久久99久久久二8| 久久一二三国产| 久久午夜羞羞影院免费观看| 国产精品视频久久| 一本大道av伊人久久综合| 亚洲美洲欧洲综合国产一区| 久久久蜜臀国产一区二区| 久久成人免费电影| 国产精品红桃| 一本到高清视频免费精品| 日韩一级成人av| 欧美大片在线看| 欧美福利视频在线观看| 影音先锋日韩有码| 久久精品国产精品| 久久精品国产免费看久久精品| 国产精品久久久久久久久免费樱桃| 亚洲精品无人区| 一本色道久久综合亚洲精品按摩 | 国产精品v欧美精品v日韩精品| 亚洲欧洲综合| 亚洲乱码国产乱码精品精天堂 | 国产一区二区主播在线| 亚洲一区三区视频在线观看| 亚洲综合第一| 国产精品青草久久| 亚洲国产精品久久久久婷婷884| 亚洲一区二区三区四区在线观看 | 久久激情五月婷婷| 久久精品国产久精国产思思| 国产欧美日韩亚洲| 午夜一区不卡| 久久久久久自在自线| 国产自产在线视频一区| 久久精品水蜜桃av综合天堂| 卡通动漫国产精品| 亚洲国产免费看| 免费在线观看成人av| 亚洲高清免费在线| 99re热这里只有精品免费视频| 欧美日韩成人| 中日韩高清电影网| 欧美在线视屏| 伊人春色精品| 欧美.日韩.国产.一区.二区| 亚洲欧洲日本专区| 夜夜嗨av一区二区三区中文字幕| 欧美日韩亚洲高清| 亚洲欧美国产毛片在线| 久久久人成影片一区二区三区| 影音欧美亚洲| 欧美精品一区三区| 中文亚洲视频在线| 久久蜜桃精品| 亚洲精品无人区| 国产精品国产三级国产| 欧美一区二粉嫩精品国产一线天| 久久久久久久久久久久久女国产乱| 在线色欧美三级视频| 欧美a级理论片| 中文国产成人精品| 久久久水蜜桃| 亚洲精品在线观| 国产精品剧情在线亚洲| 久久大逼视频| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲一区在线观看视频| 国产在线精品成人一区二区三区| 欧美与欧洲交xxxx免费观看| 欧美午夜精品一区| 久久精品免视看| 亚洲精品美女免费| 欧美资源在线| 在线成人性视频| 欧美丝袜一区二区三区| 久久国产视频网站|