天天看點

建立對話框彩色工具條

這個東東費了半天時間,不敢獨郭,貼出源碼來呵呵

// CPersonSetDlg 消息處理程式

BOOL CPersonSetDlg::OnInitDialog()

{

 CDialog::OnInitDialog();

 // TODO:  在此添加額外的初始化

   m_toolbar.CreateEx(this, TBSTYLE_FLAT,

  WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC|CCS_NODIVIDER );

 m_toolbar.LoadToolBar(IDR_TOOLBAR1);

 HICON m_icon;

 m_imagelist.Create(32,31,ILC_COLOR32 | ILC_MASK,9,9);

 m_imagelist.SetBkColor(::GetSysColor(COLOR_BTNFACE));

 m_icon=AfxGetApp()->LoadIcon(IDI_ICON1);

 m_imagelist.Add(m_icon);

 m_icon=AfxGetApp()->LoadIcon(IDI_ICON2);

 m_imagelist.Add(m_icon);

 m_icon=AfxGetApp()->LoadIcon(IDI_ICON3);

 m_imagelist.Add(m_icon);

 m_icon=AfxGetApp()->LoadIcon(IDI_ICON4);

 m_imagelist.Add(m_icon);

 m_icon=AfxGetApp()->LoadIcon(IDI_ICON5);

 m_imagelist.Add(m_icon);

 m_icon=AfxGetApp()->LoadIcon(IDI_ICON6);

 m_imagelist.Add(m_icon);

 m_icon=AfxGetApp()->LoadIcon(IDI_ICON7);

 m_imagelist.Add(m_icon);

 m_icon=AfxGetApp()->LoadIcon(IDI_ICON8);

 m_imagelist.Add(m_icon);

 m_icon=AfxGetApp()->LoadIcon(IDI_ICON9);

 m_imagelist.Add(m_icon);

 CToolBarCtrl *m_toolbarctrl=&(m_toolbar.GetToolBarCtrl());

 m_toolbarctrl->SetHotImageList(&m_imagelist);

 m_toolbarctrl->SetImageList(&m_imagelist);

 m_imagelist.Detach();

 //改變屬性

 m_toolbar.ModifyStyle(0, TBSTYLE_FLAT |CBRS_TOOLTIPS | TBSTYLE_TRANSPARENT|TBBS_CHECKBOX );

 m_toolbar.SetButtons(NULL,40); 

 // set up each toolbar button設定文字 

 m_toolbar.SetButtonInfo(0, ID1, TBSTYLE_BUTTON, 1);

 m_toolbar.SetButtonText(0, "寫信"); 

 m_toolbar.SetButtonInfo(1, ID2, TBSTYLE_BUTTON, 2);

 m_toolbar.SetButtonText(1, "寫信"); 

 m_toolbar.SetButtonInfo(2, ID3, TBSTYLE_BUTTON, 3);

 m_toolbar.SetButtonText(2, "寫信"); 

 m_toolbar.SetButtonInfo(3, ID4, TBSTYLE_BUTTON, 4);

 m_toolbar.SetButtonText(3, "寫信"); 

 m_toolbar.SetButtonInfo(4, ID5, TBSTYLE_BUTTON, 5);

 m_toolbar.SetButtonText(4, "寫信"); 

 m_toolbar.SetButtonInfo(5, ID6, TBSTYLE_BUTTON, 6);

 m_toolbar.SetButtonText(5, "寫信"); 

 m_toolbar.SetButtonInfo(6, ID7, TBSTYLE_BUTTON, 7);

 m_toolbar.SetButtonText(6, "寫信"); 

 m_toolbar.SetButtonInfo(7, ID8, TBSTYLE_BUTTON, 8);

 m_toolbar.SetButtonText(7, "寫信"); 

 m_toolbar.SetButtonInfo(8, ID9, TBSTYLE_BUTTON, 9);

 m_toolbar.SetButtonText(8, "寫信"); 

 CRect rectToolBar;

 //得到按鈕的大小

 m_toolbar.GetItemRect(0, &rectToolBar);

 //設定按鈕的大小

 m_toolbar.SetSizes(rectToolBar.Size(), CSize(32,31));

 if(!m_wndReBar.Create(this))

 {

  return -1;

 }

 m_wndReBar.AddBar(&m_toolbar);

 REBARBANDINFO rbbi;

 rbbi.cbSize = sizeof(rbbi);  //這個是必須填

 rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE|RBBIM_BACKGROUND;

 //工具條的寬度

 rbbi.cxMinChild = rectToolBar.Width();

 //高度

 rbbi.cyMinChild = rectToolBar.Height();

 //下面這行代碼是為工具條加入背景位圖,請注意上rbbi.fMask中RBBIM_BACKGROUND标志

 rbbi.hbmBack = LoadBitmap(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_TOOLBARBKMAP));

 rbbi.cx = rbbi.cxIdeal = rectToolBar.Width() * 10;

 m_wndReBar.GetReBarCtrl().SetBandInfo(0, &rbbi);

 m_toolbar.MoveWindow(CRect(480,-1,870,500));  

 return TRUE;  // return TRUE unless you set the focus to a control

 // 異常:OCX 屬性頁應傳回 FALSE

繼續閱讀