鄭愛武
(國防科技大學電子工程學院,長沙410073)
【摘要】:工具條已經成為windows程式重要的組成部分,一些高階程式語言也提供了對實現工具條的支援,但通常只是按紐的集合,不能直接加入組合框控制項,本文講述了在windows環境下用vc4.0及其以上版本在工具條中加入組合框控制項的方法。
(圖一)
其次,從物件導向的思想出發,乙個工具條作為乙個整體,應該封裝為乙個類,組合框控制項應該作為這個類的乙個成員變數。因此生成乙個以c*******為基類的的新類ccombo*******,這可以用vc的類嚮導(classwizard)來實現,先生成乙個以c*******ctrl為基類的新類ccombo*******,然後在檔案編輯器中開啟combo*******.h和combo*******.cpp檔案,把ccombo*******基類改為c*******。之所以有這番周折,是因為類嚮導不支援以c*******為基類生成新類。新類生成後,加入成員變數ccombobox m_combobox。
然後把cmainframe類中的工具條成員變數m_wnd*******的型別由c*******改為ccombo*******。編輯應用程式嚮導已經生成好的函式int cmainframe::oncreate (lpcreatestruct lpcreatestruct),這個函式通常用來產生工具條和狀態條,在建立工具條的函式後加入以下**:
crect rect;
//設定組合框的寬度,四個引數依次為控制項在工具條中的索引號、id號、風格、寬度
m_wnd*******.setbuttoninfo(4, idc_combox, tbbs_separator, 160 );
//得到組合框的位置
m_wnd*******.getitemrect(4, &rect);
//設定組合框的高度
rect.bottom += 100; //combo height;
//建立組合框,四個引數依次為視窗風格、組合框位置、父視窗、id號
if(!m_wnd*******.m_combobox.create (cbs_dropdown|ws_visible|ws_tabstop|cbs_autohscroll,rect, &m_wnd*******, idc_combox))
return -1;
//在組合框中加入字串
m_wnd*******.m_combobox.addstring("國防科技大學");
m_wnd*******.m_combobox.addstring("電子工程學院");
至此就可以編譯執行這個單文件程式了,執行結果就會產生帶有組合框的工具條,如圖二所示。
(圖二)
但是僅僅產生組合框是不夠的,必須實現組合框的訊息響應函式,才能方便地運用組合框。在vc中,訊息響應函式通常都是用類嚮導來實現,但是此處由於組合框是用函式建立的,所以必須親自動手來寫**,也並不麻煩,與類嚮導生成的**格式是一樣的,可以參照來寫。下面在view類中實現響應組合框的cbn_selchange訊息(當組合框選中一條字串時,產生此訊息)和cbn_editchange訊息(當對組合框內的字元進行編輯時,產生此訊息)的函式。本例項中,當組合框選中一條字串時,在下面的編輯(edit)控制項中立即顯示這一條字串,而且在組合框中輸入字元時,下面的編輯控制項也立即顯示相應的字元,如圖二所示。為此,加入以下**即可。
1、 在頭(.h)檔案中加入訊息響應函式的定義:
afx_msg void onselchangecombo();//響應cbn_selchange訊息的函式
afx_msg void oneditchangecombo();//響應cbn_editchange訊息的函式
2、在實現(.cpp)檔案中加入訊息對映巨集:
begin_message_map(ctoolcomboview, cformview)
//}afx_msg_map
end_message_map()
3、在實現(.cpp)檔案中加入函式實體:
void ctoolcomboview::onselchangecombo()
void ctoolcomboview::oneditchangecombo()
這樣,當選中組合框的字串和編輯組合框內的字元時,程式就會執行相應的訊息響應函式。至此,我們已經成功地在工具條中加入了組合框控制項,並實現了對它的應用。
2023年6月2日
利用MFC程式設計在工具條中增加組合框控制項
windows ui技術一直是程式設計人員尤其是使用者介面程式設計人員最關心的技術。顯然新穎美觀的介面會給使用者留下深刻的印象。windows作業系統的流行也在於其使用者介面的不斷創新與改進。office 97 visual studio 97 outlook ie等每乙個新的軟體的推出都能夠給人新...
birt 報表在tomcat下的工具條怎麼漢化
birt的開發環境可以用語言包漢化,可是當報表執行到tomcat下之後,工具條和分頁導航都還是英文的,請高手指點一下怎麼將這些小工具以及提示 頁面跳轉等轉成中文進行顯示。下org.eclipse.birt.report.viewer.nl.jar包,放到web inf lib下面。描述 nl pac...
js在控制項原有的事件方法中加入自己的方法
有沒有碰到過這樣的情況,在乙個別人的頁面上,你想為某個按鈕加入自己的控制邏輯,滿足條件的情況下才執行原有的事件方法呢?這個時候在不能修改其原有方法的情況下,先獲取控制項的事件方法,並將其包裝到自己的控制方法裡面,然後再重置控制項的事件方法為 自己定義的這個方法,這樣就可以解決問題了。ps 如果使用的...