原來的庫(MFCXLib)已經更名爲CJ60Lib,這是爲了與那些使用舊庫的程序區別開來。本庫與舊的庫具有同樣的功能,但是,針對Visual C++ 6.0作了幾個擴展。
請按照下面的步驟來設定你的應用程序使用CJ60Lib這個MFC擴展庫:
-
在你的工程設定(project/setting)中,選擇 General 標籤,確保 Microsoft Foundation Class 被設置成 Use MFC in a shared DLL。
在你的工程設定(project/setting)中,選擇 Link 標籤。.設置 Category 爲Input,並且將 ../Lib 添加在 Additional Library Path中。
- 仍然在 Link 標籤中,改變 Category 爲 General。針對 Output Name (所有的設置),編譯到 ../Lib 目錄。這將使得執行和調試變得容易一些,因爲 DLL和 EXE 都處在同一個目錄中。
例如爲 ../Lib/MyDemo.exe。 - 選擇 C/C++標籤。 改變 Category 爲 Preprocessor,然後添加 ../Include 到 Additional Include Directories中。
- 最後的一個步驟將添加如下兩行到 StdAfx.h 文件中,這將輸入外部類並且在你的整個應用程序中都能使用它們:
#define MFCX_PROJ
#include <CJ60Lib.h>
#include <CJ60Lib.h>
如果要靜態鏈接到CJ60Lib,請作如下改變:
-
在你的工程設定中,選擇General標籤。確保 Microsoft Foundation Class 被設置爲 Use MFC in a static library。
在你的StdAfx.h 文件中添加下面幾行代碼,這將導致庫靜態鏈接到你的應用程序(確保在include語句之前添加):
#define MFCXLIB_STATIC
#define MFCX_PROJ
#include <CJ60Lib.h>
#define MFCX_PROJ
#include <CJ60Lib.h>
這個庫是爲版本爲4.71或其後的comctl32.dll而寫的。如果你是老版本的,你可以從微軟的站點上下載最新版本。
在CJ60Lib中的類:
CCJButton - ( CJButton.cpp 和 CJButton.h )
我寫這個類最初是爲了處理在CCJControlBar類中的最小化和關閉按鈕。這個類能夠處理扁平按鈕。我在此基礎上作了擴展,創建了一個實現靜態按鈕控件的條目,就跟在VisualStudio的Project Settings->Custom Build標籤中看到的一樣。
CCJComboBox - ( CJComboBox.cpp 和 CJComboBox.h )
我寫這個類是爲了處理扁平外觀的組合框,就象在微軟的Office系列產品中看到的一樣。它很容易使用,只要將所有有CComboBox的地方替換爲CCJComboBox即可。關於使用該類的詳細說明,參見這裏。
CCJControlBar - ( CJControlBar.cpp 和 CJControlBar.h )
這個類是基於CristiPosea寫的CSizingControlBar類基礎之上的。 我添加了更多的外觀給這個控件,包括最小和最大化按鈕、把手、按鈕浮動提示、彈出菜單支持和垂直及水平sizebar指針。關於如何使用這個類,參見這裏。
CCJFrameWnd - ( CJFrameWnd.cpp 和 CJFrameWnd.h )
CCJMDIFrameWnd - ( CJMDIFrameWnd.cpp 和 CJMDIFrameWnd.h )
CCJDockBar - ( CJDockBar.cpp 和CJDockBar.h )
CCJMDIFrameWnd - ( CJMDIFrameWnd.cpp 和 CJMDIFrameWnd.h )
CCJDockBar - ( CJDockBar.cpp 和CJDockBar.h )
這些類覆蓋了主框架窗口原來的佈局,從而允許對工具條的三維外觀進行偏移。要使用這些類,僅僅需要在Mainfrm.h文件中在CMainFrame的繼承時將基類由CFrameWnd改爲CCJFrameWnd(對於多文檔界面,使用CCJMDIFrameWnd)。
CCJOutlookBar - ( CJOutlookBar.cpp 和 CJOutlookBar.h )
自VC5的最後版本以來,這個類被修改了許多。我已經添加了鼠標事件的處理,並且修改它使用CCJPagerCtrl而取代使用缺省的列表框滾動條。
CCJPagerCtrl - ( CJPagerCtrl.cpp 和 CJPagerCtrl.h )
這個類包含了 pager 公用控件。要使用它只需在你的視或對話框中創建它,然後用你想要將其分頁那個控件的的HWND來指定它的子窗口。當創建一個子窗口時,設置pager爲它的父窗口。關於如何使用這個類,參見這裏。
CCJTabCtrlBar - ( CJTabCtrlBar.cpp 和 CJTabCtrlBar.h )
這個類基於Dirk Clemens的關於Sizing TabControlBar的論述。 我對其代碼作了一些擴展,以便適應我對CCJControlBar類所作的修改,因爲本類是從CCJControlBar類繼承而來的。
CCJToolBar - ( CJToolBar.cpp和CJToolBar.h )
我寫的這個函數是對CToolBar類的擴展。這個類給工具條添加了把手,設置工具條使用的字體,畫了類似於Visual Studio 和 Office產品的3D邊界。此外我還添加了可以把控件添加在工具條上的方法(例如組合框和編輯框)。要使用這個類,只要簡單地將CToolBar改爲CCJToolBar即可。
CCoolMenuManager -( CoolMenu.cpp, Emboss.cpp 和 CoolMenu.h )
CSubclassWnd -( Subclass.cpp 和 Subclass.h )
CSubclassWnd -( Subclass.cpp 和 Subclass.h )
由Paul DiLascia寫出。請翻閱1998年1月的MSJ主題。它可能是我所見得實現“酷”菜單的最簡單的方法(包含圖標的下拉菜單)。 我作了一些小的增強以便解決內存泄漏的問題。這些類已經被集成到XFrameWnd擴展中了。爲了能使用“酷”菜單,只需要將如下代碼加入到你的CMainFrame::OnCreate 方法中即可:
CFlatToolBar - ( FlatBar.cpp and FlatBar.h ) 在VC 6.0中已陳舊了
CModuleVersion - ( ModulVer.cpp and ModulVer.h )
CModuleVersion - ( ModulVer.cpp and ModulVer.h )
這是我的CCJToolBar的基類。這個類是 Paul DiLascia寫的, 能處理絕大多數扁平工具條的伸縮和內部問題。CModuleVersion 被用來檢查當前的公用控件dll的版本。
CCoolBar, CRebarInfo - ( CoolBar.cpp 和 CoolBar.h ) 在VC 6.0中已陳舊了
這些代碼最初是由Paul DiLascia寫的。我對於原始代碼作了一些增強,這些類被用來創建可重定位的工具條。
CHyperLink - ( HyperLink.cpp 和 HyperLink.h )
這個類是由Chris Maunder寫的,基於它的關於 Hyperlink 控件的文章。我使用這個類來在“關於”對話框中添加超級鏈接。我作了一個小的修改,那就是將 "GotoURL" 函數從 protected型變爲public。這將允許該函數被直接調用而不用經過一個靜態對象。
這些代碼可以用任何你想要的方法進行編譯。只要不是未經作者允許而出售,並且保證本聲明和作者的名字以及所有的拷貝權力完好無缺,本文件可以在不修改的情況下用任何手段散發。如果本文件中的代碼被用於任何商業程序,那麼在該程序的起始標誌和關於對話框以及印刷文檔中上必須聲明一行"Portions Copyright ? 1998 Kirk Stowell"。任何通知我你正在使用它的電子郵件將使我很高興。考慮到在寫作這些代碼時所作的大量工作,這些要求不算很過分。
本軟件不提供任何明白的或是暗示的擔保,你必須承擔使用它的全部風險。 作者不承擔任何由於使用本產品所遭受到的數據破壞和丟失的責任。 |
感謝:
沒有下面這些人的努力,本代碼不可能成爲免費的:
- Cristi Posea - 對於寫出瞭如此酷的CSizingControlBar類。
- Joerg Koenig - 對於某些從他的CToolBarEx類中來的主意,我利用來做出了3D邊界和在工具條中使用控件。
- Shekar Narayanan - 對於他的酷菜單,從中我獲得了寫出 CCJOutlookBar控件的靈感。
- Dirk Clemens - 對於他的可伸縮的TabControlBar類,我的CCJTabCtrlBar就基於此。
- Paul DiLascia - 對於他在MSJ的所有傑出的工作,並且他使我們得到了他的源代碼。
- Chris Maunder - 對於使用了他的CHyperLink控件。
- Zafir Anjum - 對於建設這樣一個優秀的網站 ([url]www.codeguru.com[/url]),而且使得所有那些酷的MFC資源爲我們所用。 還用感謝你們讓我無法停息直到我爲VC6升級了這個庫。我感謝所有這些建議和電子郵件。