///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//2006-03-05
//由於最近事情比較多,不能像以前一樣,翻譯一整節再發布了,所以決定採用分散翻譯,分散發布的方式。
//每次會翻譯一部分就發布,等該節全部翻譯完,再匯總成一個完整的章節。
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
翻譯:tellmenow
命令條上的組合框
同下拉式清單按鈕相比,命令條中的組合框更容易實現。通過調用下面的函數,您可以增加一個組合框:
HWND CommandBar_InsertComboBox (HWND hwndCB, HINSTANCE hInst,int iWidth, UINT dwStyle,WORD idComboBox,int iButton);
該函數在命令條上iButton參數所指示的按鈕左邊插入一個組合框。組合框的寬度在iWidth參數中指定,單位是像素。dwStyle指定了組合框的風格。允許的風格包括任何有效Windows CE組合框風格和視窗風格。當建立組合框的時候,該函數自動加WS_CHILD和WS_VISIBLE標誌。idComboBox參數是組合框的ID,當發送WM_COMMAND訊息來通知群組合框父視窗事件的時候會使用該ID。經驗豐富的Windows程式員如果知道CommandBAr_InsertComboBox函數已經解決了在將控制項加到標準Windows工具條時會發生的所有問題時,應該是很高興的。要在命令條中建立一個完全功能的組合框,所有需要做的僅僅是調用這個函數即可。
一旦建立了組合框,您就可以按照對待其它獨立撰寫框一樣的方式,對命令條上的組合框進行編程了。因為組合框是命令條的子視窗,所以您必須將命令條的控制代碼以及組合框的ID傳給GetDlgItem函數來查詢組合框的視窗控制代碼,如下列代碼所示:
hwndComboBox = GetDlgItem (GetDlgItem (hwnd, IDC_CMDBAR),IDC_COMBO));
由於來自組合框的WM_COMMAND訊息被直接發送到了命令條的父視窗上,所以處理組合框事件同處理由應用程式頂層視窗建立的作為子視窗的組合框是一樣的。
命令條的工具提示(Tooltips)
工具提示實際上是小視窗,當輸入筆在控制項上壓觸的時候,會在其中顯示命令條按鈕的標題文字。命令條使用自己特殊的方式來實現工具提示。
您可以使用以下函數給命令條增加工具提示:
BOOL CommandBar_AddToolTips (HWND hWndCB, UINT uNumToolTips, LPTSTR lpToolTips);
參數lpToolTips指向字串指標數組。uNumToolTips是字串指標數組中元素的個數。CommandBar_AddToolTips並不會將字串複製到自己的儲存區中,而是儲存字串數組的位置。這意味著在命令條被銷毀之前,包含字串數組的記憶體區不應該被釋放。
數組裡的每個字串成為命令條上控制項或者分隔條的提示文字,要注意的是,這並不包括命令條上面的菜單。數組裡的第一個字串成為第一個控制項或者分隔條的工具提示,第二個字串成為第二個控制項或者分隔條的工具提示,依次類推。所以即使組合框和分隔條不顯示工具提示,它們也必須要在字串數組中佔有條目,以保證所有的文本同相應的按鈕匹配。