小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Visual C .NET編程講座之四(3)

 dazuo0312 2006-09-09


  工具欄設(shè)計及與菜單命令的聯(lián)動


  工具欄上通常有一系列的工具按鈕,所有的按鈕圖像都具有相同的尺寸,一般是15像素高,16像素寬,借助它們可以提高用戶的工作效率,并且將常用的菜單命令也放在工具欄上,它們實際是命令不同的用戶方式。


  1. 添加并設(shè)計工具欄


  (1) 將解決方案資源管理器窗口切換到"資源視圖",展開后右擊Toolbar,在彈出的快捷菜單中單擊"插入Toolbar"。這樣,一個工具欄資源就添加到項目中,默認(rèn)的標(biāo)識為IDR_TOOLBAR1。


  (2) 添加并設(shè)計2個工具按鈕,結(jié)果如圖10所示。


 


圖11 工具按鈕的設(shè)計


  由于其編輯操作與Windows的畫圖相類似,故這里僅列出操作的一些技巧:


  ① 單擊空白按鈕后就可以編輯其圖像,同時系統(tǒng)在隨后的位置自動添加一個空白按鈕。


 ?、?用鼠標(biāo)可以將一個按鈕拖放到工具欄上的其他位置上。若拖動時按下Ctrl鍵,則復(fù)制一個工具按鈕。若將工具按鈕拖出工具欄,則該工具按鈕被刪除。


  ③ 按Delete鍵可以將當(dāng)前工具按鈕的圖像用背景色填充。


  ④ 在工具按鈕之間添加間隔時,可按不同情況來操作。若工具按扭前沒有任何間隔,拖動該工具按鈕向右直到它覆蓋相鄰工具按鈕的一半以上后,釋放鼠標(biāo)鍵,則此工具按鈕前出現(xiàn)間隔。若工具按鈕前面有間隔而后面沒有間隔,拖動該工具按鈕向左直到它的左邊界接觸到它前面的工具按鈕為止,釋放鼠標(biāo)鍵,則此工具按鈕后面將出現(xiàn)間隔。


  ⑤ 若工具按鈕前后均有間隔,拖動該工具按鈕向右直到它接觸相鄰工具按鈕,則此工具按鈕前的間隔保留,工具按鈕后的間隔消失。反之,若拖動該工具按鈕向左直到它接觸相鄰的前一個工具按鈕,則此工具按鈕前面的間隔消失,后面的間隔仍保留。


  ⑥ 刪除工具按鈕間隔時,只要將間隔一端的工具按鈕拖向間隔另一端的工具按鈕,直到與另一個按鈕重疊一半以上即可。


  (3) 單擊第一個工具按鈕,在工具按鈕的屬性窗口中,將其ID號選擇為ID_FORMAT_TXTFONT,這是將工具按鈕與菜單命令聯(lián)動的關(guān)鍵。將其Prompt屬性內(nèi)容改成"改變顯示的字體\n字體"。Prompt屬性是用來指定工具按鈕的提示文本。例如若為"改變顯示的字體\n字體"時,則表示當(dāng)鼠標(biāo)移至該工具按鈕時,在狀態(tài)欄中就會顯示"改變顯示的字體",稍等片刻后還會彈出一個小的提示窗口,顯示出"字體"字樣。注意:提示窗口顯示的內(nèi)容是Prompt屬性字符串中"\n"后的內(nèi)容。


  (4) 將第二個工具按鈕的ID號選擇為ID_FORMAT_TXTCOLOR,Prompt設(shè)為"改變文本的顯示顏色\n顏色"。


  2. 工具欄代碼的實現(xiàn)


  (1) 在CMainFrame類中添加一個成員變量m_wndFormatBar,變量類型為CToolBar。CToolBar類封裝了工具欄的操作。


  (2) 在CMainFrame::OnCreate()函數(shù)中添加工具欄的創(chuàng)建代碼,如圖11所示的加框部分。



圖12 添加的工具欄的創(chuàng)建代碼

 


  程序說明:


  ① 主框架類CMainFrame用來負(fù)責(zé)窗口的菜單欄、工具欄和狀態(tài)欄的創(chuàng)建和更新工作。因此我們將工具欄的創(chuàng)建代碼添加在CMainFrame的OnCreate()函數(shù)中。


  ② CreateEx()是CToolBar類的成員函數(shù),用來創(chuàng)建一個工具欄對象。


 ?、?if語句的LoadToolBar()函數(shù)是用來裝載工具欄資源。若CreateEx()或LoadToolBar()的返回值為0,即調(diào)用不成功,則顯示診斷信息"未能創(chuàng)建工具欄"。TRACE0是一個用于程序調(diào)試的跟蹤宏。OnCreate()函數(shù)返回-1時,主框架窗口被清除。


  ④ 應(yīng)用程序中的工具欄一般具有??炕蚋犹匦?,m_wndFormatBar.EnableDocking()使得m_wndFormatBar對象可以???,CBRS_ALIGN_ANY表示可以停靠在窗口的任一邊。 EnableDocking(CBRS_ALIGN_ANY)是調(diào)用的是CFrameWnd類的成員函數(shù),用來讓工具欄或其他控制條在主框架窗口可以進(jìn)行??坎僮?。DockControlBar()也是CFrameWnd類的成員函數(shù),用來將指定的工具欄或其他控制條進(jìn)行停靠。


 ?、?AFX_IDW_TOOLBAR是系統(tǒng)內(nèi)部的工具欄子窗口標(biāo)識,并將AFX_IDW_TOOLBAR+1的值表示默認(rèn)的狀態(tài)欄子窗口標(biāo)識。如果在創(chuàng)建新的工具欄時沒有指定相應(yīng)的子窗口標(biāo)識,則會使用默認(rèn)的AFX_IDW_TOOLBAR。這樣,當(dāng)打開"視圖"菜單時,單擊"工具欄"菜單時,顯示或隱藏的工具欄不是原來的工具欄而是新添加的工具欄。因此,我們需要重新指定工具欄子窗口的標(biāo)識,并使其值等于AFX_IDW_TOOLBAR + 10。


  (3) 運行程序,可以看到新添加的工具欄,如圖12所示,左圖是工具欄開始的停靠情況,右圖是工具欄浮動的情形。




圖13 新工具欄的??亢透?

 


  需要說明的是,上述工具按鈕是與菜單命令聯(lián)動,因此無需進(jìn)行工具按鈕命令的消息映射,因為該命令已在菜單操作該命令已映射過。若是單獨一個工具按鈕,則需要對該工具按鈕進(jìn)行命令消息的映射,否則按鈕是灰顯的。工具按鈕的命令消息映射方法與菜單命令相同。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多