mfc toolbar對話框的總結

讓我一直鬱悶的就是,一個小小的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字體的顏色,這個基礎上不要改變太多。希望,高手幫我一下,我也把我所有知道的東西都寫在這裏了,希望高手幫我一上。再次感謝,如果改好了,我會上傳到我的資源裏,方便大家以後寫程序。

再次感謝能有大俠幫我一上,好吧。小弟在此謝過。事情往往在最後一步是把你難住,我都遇到好幾次了。本人開發沒有太多經驗。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章