讓我一直鬱悶的就是,一個小小的toolbar就讓我做了四天,才做成這個樣子,代碼不算多,但是資料卻那樣的少,csdn上也沒有找到關於toolbar的我想要的資料,讓我來做一下,我這幾天裏查閱的資料吧。發泄一下Fuck,Fuck,mfc 這個東西要想把界面做的那樣的好看真他媽的不容易,要是C#,不到一個小時就搞定了,苦逼了那樣久,才找到那樣一點的資料。Fuck,Fuck。這七天讓我來做toolbar,用了五天了,還沒有做到一半,但是相信對其他的應該會有用,俗話說站在巨人的肩膀上看得高,我不算巨人,但在潮着那個方向走。
來看一下簡單的toolbar .
新建一個工程這個是對話框的,各位親們不要搞錯了呀。
在你的頭文件里加上這幾個東西。
CToolBar m_toolbar;//工具條
CImageList m_imagelist;//圖像
CString str;//字符
CReBar m_Rebar;//容器類
然後就開始在你的OnInitDialog()裏寫了。
最簡單的toolbar 工具。
m_imagelist.Create(32,32,ILC_COLOR24|ILC_MASK,1,1);
m_imagelist.Add(AfxGetApp()->LoadIcon( IDI_ICON1));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON5));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON6));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON7));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON8));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_ICON9));
下來我們定義一個數組。
UINT array[9];
for (int i = 0;i<9;i++)
{
array[i]=i+1001;
}
m_toolbar.Create(this);
m_toolbar.SetButtons(array,9);
m_toolbar.GetToolBarCtrl().SetButtonWidth(50,70);
m_toolbar.GetToolBarCtrl().SetImageList(&m_imagelist);
m_toolbar.SetSizes(CSize(70,50),CSize(28,28));
m_toolbar.EnableToolTips(TRUE);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
來看一下效果吧。
這個就是效果了。這是簡單的toolbar.再往深里加一點知識,一點一點的跟着我加好吧你們想在第幾個按鈕的後面加上分隔條呢?
讓我來想一想第四個按鈕好吧。
那就讓你把上邊的數據改成這樣就可以了。
UINT array[9];
for (int i = 0;i<9;i++)
{
if(i==3)
array[i]=ID_SEPARATOR//第四個按鈕爲分隔條,親們注意了數組下標是從0開始的。
else
array[i]=i+1001;
}
來看一下效果怎麼樣呢?
看到了效了吧。
你要是想給他加上文字的話。加上這幾條語句就行了。
m_toolbar.SetButtonText(0,"系統登錄");
m_toolbar.SetButtonText(1,"操作員信息");
m_toolbar.SetButtonText(2,"客戶信息");
m_toolbar.SetButtonText(3,"商品入庫");
m_toolbar.SetButtonText(4,"商品銷售");
m_toolbar.SetButtonText(5,"銷售退貨");
m_toolbar.SetButtonText(6,"客戶訂貨");
m_toolbar.SetButtonText(7,"入庫查詢");
m_toolbar.SetButtonText(8,"銷售查詢");
來看一下效果吧。
到這裏就算比較簡單的了難的來了
怎麼改變他的字體呢?我也是找了好多的資料才找到的,你們看一下這樣寫有什麼問題沒有。
LOGFONT logfont;
GetObject(::GetStockObject(DEFAULT_GUI_FONT),sizeof(logfont),&logfont);
logfont.lfCharSet=GB2312_CHARSET;
logfont.lfWeight = FW_NORMAL;
logfont.lfHeight = 24;
lstrcpy(logfont.lfFaceName, _T("微軟雅黑"));
static CFont sfontStatusBar;
sfontStatusBar.CreateFontIndirect(&logfont);
m_toolbar.SetFont(&sfontStatusBar);
好了,看一下效果吧,因爲我做的跟上邊的不一樣,圖標也就不一樣了。
看到了沒有字體給改了,看到了吧,至於怎麼改變字體的顏色,我現在都不會做,也希望看到這一篇博文的高手來幫我解答一下好吧。謝謝。圖標雖然不怎麼好看,自己做的。做不成自己想要的樣子,感覺自己老悲劇了。
至於怎麼樣給他加上背景色,來看一下怎麼寫好吧。
m_toolbar.SetSizes(CSize(110,100),CSize(60,60));
m_Rebar.Create(this);
m_Rebar.AddBar(&m_toolbar);
m_Rebar.RedrawWindow();
REBARBANDINFO info;
info.cbSize=sizeof(info);
info.fMask=RBBIM_BACKGROUND;
m_toolbar.ModifyStyle(0,TBSTYLE_TRANSPARENT);
info.hbmBack=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_ BITMAP2));
m_Rebar.GetReBarCtrl().SetBandInfo(0,&info);
再來看一下效果吧。
看到了吧。這就是我現在做的,但是還是希望能幫到別人。關於toolbar 這一方面。
我這裏還有幾個例子,讓大家來看一下效果。
這個是單文檔的。
看一下效果吧。
還有一個是可以移動的toolbar,也是單文檔的。
再來看一下下一張的效果。
好了,我給大家一下下載地址
希望這一點能幫到正在做開發的朋友。也希望高手看到了幫我解決一下,怎麼改變toolbar字體的顏色,這個基礎上不要改變太多。希望,高手幫我一下,我也把我所有知道的東西都寫在這裏了,希望高手幫我一上。再次感謝,如果改好了,我會上傳到我的資源裏,方便大家以後寫程序。
再次感謝能有大俠幫我一上,好吧。小弟在此謝過。事情往往在最後一步是把你難住,我都遇到好幾次了。本人開發沒有太多經驗。