工具欄上按鈕的繪製 (轉)

worldblog發表於2007-12-04
工具欄上按鈕的繪製 (轉)[@more@]

UI技術一直是介面設計人員最關心的技術。Visual C++所提供的標準工具條中基本上只有一些簡單的功能按鈕,而Visual C++自身的工具條功能十分豐富,尤其是工具條中內嵌的十分方便。下面我就談談如何利用MFC在工具條中增加組合框控制元件。

目的:在工具欄上內嵌編輯框

思想:(1)獲得工具欄上按鈕的ID;(2)獲得按鈕的尺寸;(3)調整按鈕尺寸大小;(4)繪製按鈕。

步驟:(1)在工具欄資源中新增一按鈕,設定其按鈕ID  IDC_EDIT;

  (2)從CToolBar繼承CMyToolBar,並定義一CEditm_wndMyEdit;

  (3)修改CMainFrame中修改CToolBar m_wndToolBar為 CMyToolBa rm_wndToolBar;

  (4)在CMainFrame中新增 BOOL CreateMyEditBar(),並在此繪製;

  (5)在CMainFrame::OnCreate中新增CreateMyEditBar();

 

如下:

  class CMyToolBar : public CToolBar
 {
 public:
  CEdit m_wndMyEdit; //並定義一CEdit物件m_wndMyEdit
 }; 

class CMainFrame : public CFrameWnd
{

..................省去..........................

public:
 CMyToolBar  m_wndToolBar; //中修改CToolBar m_wndToolBar為 CMyToolBa rm_wndToolBar

protected:
 BOOL CreateMyEditBar();

..................省去..................
 

};

BOOL CMainFrame::CreateMyEditBar()
{
 #define  EDIT_WIDTH  80  義編輯框高度

 int index=0; 
 CRect rect;


 下獲得按鈕
 while(m_wndToolBar.GetItemID(index)!=IDC_MY_EDIT)
 index++;

下設定工具欄按鈕風格,並調整按鈕位置

 m_wndToolBar.SetButtonInfo(index,IDC_MY_EDIT,TBBS_SEPARATOR,EDIT_WIDTH);
 m_wndToolBar.GetItemRect(index,&rect);
 rect.top+=2;
 rect.bottom+=200;

//建立編輯框並顯示

 if(!m_wndToolBar.m_wndMyEdit.Create(WS_CHILD|WS_VISIBLE,
 rect, &m_wndToolBar,IDC_MY_EDIT))
 {
 TRACE0("Failed to create combo-boxn");
  return FALSE;
  }
  m_wndToolBar.m_wndMyEdit.ShowWindow(SW_SHOW);
 
  return TRUE;
}

nt CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{

..................省去........................
 if(!CreateMyEditBar())
 {
 TRACE0("Failed to create status barn");
 return -1;
 }
 return 0;
}

 

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988045/,如需轉載,請註明出處,否則將追究法律責任。

相關文章