許多程序員都希望自己的程序能更象商業化程序
特別是希望自己的程序工具 條能夠象WINDOWS
下的OFFICES一樣具有浮動效果
針對VISUALC++編程環境
以下分別介紹了兩種產生浮動工具條的方法
各有其優點和不足
可供程序員選擇
第一種方法
該方法最為簡單
利用VC中的工具條的系統未公布的隱含參數 TBSTYLE_FLAT
不需更改原由程序只要在程序中添加
條語句即可實現浮動效果
不過該方法只能產生簡單的浮動工具條
而且沒有象OFFICES中工具條右側的拖 動條gripper
而且該方法在VC
下存在嚴重的缺陷
當拖動工具條時
系統不 能對工具條進行刷新
因此會產生移動工具條到新位置時
原處仍有工具條
主 要是負責工具條的動態連接庫COMCTL
DLL的BUG
該問題在VC
中由於更新了 該動態連接庫而得以解決
程序員如果使用的是VC
版可以用新的版本COMCTL
DLL (
版以上)替換該動態連接庫來解決
具體方法如下
int CMainFrame::OnCreate
(LPCREATESTRUCT lpCreateStruct)
{
m_wndToolBar
SetBarStyle
(m_wndToolBar
GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY |
CBRS_SIZE_DYNAMIC|TBSTYLE_FLAT);
//添加以下
句語句
產生浮動效果
LONG lStyle;
lStyle=GetWindowLong
(m_wndToolBar
GWL_STYLE);
lStyle=lStyle|TBSTYLE_FLAT;
SetWindowLong(m_wndToolBar
GWL_STYLE
lStyle);
m_wndToolBar
EnableDocking
(CBRS_ALIGN_ANY);
}
第二種方法
該方法是對MFC原來的CTOOLBAR類進行繼承
主要是重載成員函數 OnWindowPosChanging(LPWINDOWPOS lpWndPos);OnPaint();OnNcPaint();OnNcCalcSize(); 實現浮動工具條
使用本類
只要將以下的程序代碼FlatToolBar
h和FlatToolBar
Cpp 加入項目
並用INCLUDE將FlatToolBar
H包含到繪制主窗口的CMainFrame中
然後把你 的原先定義工具條變量的CToolBar類變成 CFlatToolBar類
並在建立工具條後調用 SetFlatLookStyle()函數設置浮動方式
為方便以後其它使用程序
可以在該類 上右擊鼠標
選擇Add to Gallery將CFlatToolBar類存入類庫以便下次使用
From:http://tw.wingwit.com/Article/program/net/201311/13692.html