[翻譯]-Windows CE 程式設計 (3rd 版)–5.2 公用控制項(十)

來源:互聯網
上載者:User

                      菜單條                                        翻譯:tellmenow

菜單條控制項是在Pocket PC 2000中開始引入的。從外觀上看,菜單條同命令條的不同之處在於它是位於視窗底部而不是頂部。但是,對程式員來說,菜單條有許多不同的編程介面。因為Pocket PC的流行以及OEM廠商希望能夠建立同Pocket PC軟體相容的嵌入式系統,所以從Windows CE.NET 4.2開始,現在菜單條同Windows CE的嵌入式版本一起發布。

菜單條是一個精巧複雜的控制項,這使得它不適合手工編程。菜單條控制項的設計者似乎也有意通過代碼嚮導和資源編輯器來完成菜單條控制項的大部分編碼和資源產生。雖然這是大部分Windows程式員編碼的方式,但瞭解菜單條控制項實際上是如何工作的依然是很重要的,尤其是當工具不能完全符合工作需要的時候。出於這個原因,在本節,我將在基本的API層級上描述菜單條。因此,我可以準確的描述出希望的控制面板,特別是用資源的方式來描述。對書中後面的例子,當我在例子中使用菜單條時,我將用代碼嚮導來產生菜單條上的菜單。

在一頭鑽進去編寫菜單條之前,我想簡單講一下如何設計控制項。在許多方面,菜單條都和Windows CE系統中使用的其它命令條控制項不同。首先,菜單條上的菜單不是作為一個整體來管理的。相反,雖然菜單被定義成一個單一資源,但是菜單條將菜單作為一系列獨立的子功能表來管理。

當菜單條上對應的按鈕被點中時,每個子功能表都被當作一個快顯功能表顯示在適當的位置上。所以,從這個意義上講,同命令條相比,菜單條更像是一個工具條。

使用者很少能看到菜單條和命令條之間的差別,因為功能表按鈕是按期望的方式,彼此相鄰的擺放在菜單條的最左邊的。然而,對於程式員來說,理解差異的重點在於理解如何管理和操縱菜單條。

和命令條的另一個不同點在於,菜單條並不是建立它的視窗的子視窗。菜單條控制項實際上是系統建立的一個快顯視窗,並放在螢幕底部而已。建立菜單的視窗可以通過覆蓋菜單條來將其隱藏起來。菜單條的部分可以被繪製到它的擁有者的上層。為了避免這種情況,應用程式必須調整視窗尺寸來為案頭上菜單條留出空間。應用程式同菜單條之間的這種糾纏,就是為什麼使用菜單條控制項的應用程式要手工調整其主視窗的原因。

圖5-5展示了Pocket PC上的菜單條,圖5-6顯示了在嵌入式系統中運行同樣的應用程式時的介面。將要討論的兩個菜單條外觀上微小差異還是存在的。
圖5-5(略):Pocket PC裝置上的菜單條。
圖5-5(略):嵌入式系統上的菜單條。

Pocket PC上的菜單條在控制項最左邊包含了軟鍵盤(SIP)按鈕。在嵌入式裝置上,SIP按鈕在任務條上,而不在菜單條上。作為SIP按鈕的替代,嵌入式裝置上的菜單條有一個[關閉]按鈕,同Pocket PC相比,在嵌入式裝置螢幕頂部的導航條上有一個輕巧的[最小化]按鈕。最後,即使是擁有同樣菜單條資源的非常相似的應用程式,在Pocket PC版的菜單條最左邊有一個叫[建立]([NEW])的菜單。這是shell的一個擴充,但嵌入式裝置並不支援。因為缺乏這個Shell支援,所以即使用來建立菜單條的資源中指定了[建立]菜單,菜單條不能建立[建立]菜單。

菜單條在Pocket PC和嵌入式裝置中的另一個不同是菜單條的高度。因為菜單條高度隨系統的不同而不同,所以必須編程來判斷菜單條的高度。老一些的Pocket PC應用程式,包括本書前幾版中的程式,都是假設菜單條是26像素高。既然現在菜單條控制項用在各種系統上,那麼這個假設就不成立了。一種計算菜單條高度的方式是用菜單條控制代碼作為參數來調用GetWindowRect函數。下面的代碼是在WM_CREATE訊息處理函數中,菜單條建立後就計算高度。

RECT rectMB;
GetWindowRect (hwndMenuBar, &rectMB);
nMBHeight = (rectMB.bottom - rectMB.top);

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.