利用MFC程式設計在工具條中增加組合框控制元件 (轉)

worldblog發表於2007-12-06
利用MFC程式設計在工具條中增加組合框控制元件 (轉)[@more@]

---- UI技術一直是設計人員尤其是介面程式設計人員最關心的技術。顯然新穎美觀的介面會給使用者留下深刻的印象。Windows操作的流行也在於其使用者介面的不斷創新與改進。 97、 97、、IE等每一個新的的推出都能夠給人新的感覺。尤其是這些軟體工具條十分豐富美觀,如3D形式的工具條、飛行,這些小技巧既富於吸引力,又方便了使用者。我們知道,Visual C++所提供的標準工具條中基本上只有一些簡單的諸如文件開啟、以及一些編輯功能按鈕,而Visual C++自身的工具條功能十分豐富,尤其是工具條中內嵌的組合框十分方便。實際上利用MFC在工具條中增加一些有趣的控制元件還是比較容易的,下面我們就談談如何利用MFC程式設計在工具條中增加組合框控制元件。

---- 1 建立AppWizard工程設為toolbar,採用系統預設設定。

---- 2 開啟資源編輯器,選擇工具條,在工具條中增加一個按鈕,設定按鈕ID為ID_MY_COMBO_BOX。移動該按鈕以使按鈕處於適當的位置。

---- 3 從CToolBar派生出一個新類CMyToolBar,在CMyToolBar類中增加一個成員變數m_wndMyComboBox,程式碼如下:

class CMyToolBar : public CToolBar { public: CComboBox m_wndMyComboBox; };


---- 注意要將程式碼放在工程檔案mainframe.h中“#endif // _MSC_VER > 1000”語句之後,類CMainFrame定義之前。

---- 4 將工程檔案mainframe.h中的CToolBar變數m_wndToolBar用CMyToolBar變數m_wndToolBar代替。同時增加CreateMyComboToolBar()宣告。程式碼如下:

protected: // control bar embedded members CStatar m_wndStatusBar; CMyToolBar m_wndToolBar; int CreateMyComboToolBar();


---- 5 在工程檔案mainframe.cpp中的OnCreate()函式返回語句之前函式CreateMyToolBar();程式碼如下所示:

if(!CreateMyComboToolBar()) MessageBox("Create My Combo ToolBar Failure");


---- 6 以文字方式開啟資源標頭檔案re.h,增加一個控制ID如下,注意該控制的ID值不要與其它控制或資源的ID值重複:

#define IDC_MY_COMBO 1111


---- 7 在工程檔案mainframe.cpp中增加函式CreateMyToolBar();程式碼如下:

int MainFrame::CreateMyToolBar() { #define COMBO_BOX_WIDTH 80 //the width of the combo box //set up the ComboBox control as a box //First get the index of the button's position in the toolbar int index = 0; CRecr rect; while(m_wndToolBar.GetItemID(index)! = ID_MY_COMBO_BOX) index++; //next convert that button to a seperator and get its position m_wndToolBar.SetButtonInfo(index, ID_MY_COMBO_BOX, TBBS_SEPARATOR, COMBO_BOX_WIDTH); m_wndToolBar.GetItemRect(index, &rect); //expand the rectangle to allow the combo box room to drop down rect.top+=2; rect.bottom += 200; // then .Create the combo box and show it if (!m_wndToolBar.m_ wndMyComboBox.Create( WS_CHILD|WS_VISIBLE | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | CBS_HASSTRINGS , rect, &m_wndToolBar, IDC_MY_COMBO)) { TRACE0("Failed to create combo-boxn"); return FALSE; } m_wndToolBar.m_wndMyComboBox.ShowWindow(SW_SHOW); //adding string to the combo box m_wndToolBar.m_wndMyComboBox.AddString("Fisrt Select"); m_wndToolBar.m_wndMyComboBox.AddString("Second Select"); m_wndToolBar.m_wndMyComboBox.AddString("Third Select"); m_wndToolBar.m_wndMyComboBox.AddString("Fourth Select"); m_wndToolBar.m_wndMyComboBox.AddString("Fifth Select"); m_wndToolBar.m_wndMyComboBox.SetCurSel(0); }


---- 編譯並執行該應用,就會發現工具條中多了一個組合框控制元件。見下圖(略)。

---- 從上面的例程可以看出,在工具條中增加新的控制元件,關鍵在於重寫主的OnCreate()函式。掌握了這一點,就可以在工具條中增加各種各樣的控制元件了,如增加無限輸入(Radio)控制元件、檢查框(Check)控制元件等。有興趣的讀者可以自己去嘗試一下加深理解。


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

相關文章