10.2選單
當使用者選擇乙個選單項時,windows給您的程式傳送包含該id的wm_command訊息。
選單概念
視窗的選單列緊接在標題列的下方顯示,這個選單列有時被稱為「主選單」或「頂層選單」。
選單結構
頂層選單有乙個選單控制代碼,在頂層選單中的每乙個彈出式選單也有它自己的選單控制代碼。
系統選單(也是乙個彈出式選單)也有選單控制代碼。
選單中的每一項都有三個特性
1.選單中顯示什麼,它可以是字串或位圖
2.第二個特性是wm_command訊息中windows傳送給程式的選單id,或者是在使用者選擇
選單項時windows顯示的彈出式選單的控制代碼。
3.是選單項的屬性,包括是否被禁用、無效化或被選中。
定義選單
為選單中的專案鍵入文字時,可以鍵入乙個「&」符號,指出後面乙個字元在windows顯示選單時要加底線。
checked選項在選單項邊上放置乙個選中標記。separator選項在彈出式選單上產生乙個分欄的橫線。
grayed選項,選單項是否啟動的時候灰掉。 id值是windows傳送給視窗訊息處理程式中選單訊息中的數值。
在選單中id值應該是唯一的。按照慣例,我使用以idm( 「id for a menu」 )開頭的識別符號。
在程式中引用選單
如果在資源描述檔中為選單使用了名稱,敘述如下:hmenu = loadmenu (hinstance, text ("mymenu")) ;
如果使用了數值,那麼loadmenu呼叫採用如下的形式:hmenu = loadmenu (hinstance, makeintresource (id_menu)) ; 可以將這個選單控制代碼作為createwindow的第九個引數
視窗被建立後再給視窗指定乙個選單setmenu (hwnd, hmenu);
當視窗被清除時,與視窗相關的所有選單都將被清除。
選單和訊息
wm_initmenu這一類的訊息,wparam值是您的主選單控制代碼.wm_menuselect是乙個選單追蹤訊息
hiword (wparam):選擇旗標. wparam的高字組中的「選擇旗標」可以是下列這些旗標的組合:mf_grayed、mf_disabled、mf_checked、mf_bitmap、mf_popup、mf_help、mf_sysmenu和mf_mouseselect。
當windows準備顯示乙個彈出式選單時,它給視窗訊息處理程式傳送乙個wm_initmenupopup訊息
最重要的選單訊息是wm_command, 它表示使用者已經從選單中選中了乙個被啟用的選單項。
wm_menuchar:如果使用者按下alt和乙個與選單項不匹配的字元時或者在顯示彈出式選單而使用者按下乙個與彈出式菜
單裡的專案不匹配的字元鍵時。 windows會把這個訊息傳送到視窗訊息處理程式。
menudemo.rc
第十章 選單及其它資源part3
較難的一種選單定義方法 在程式的資源描述檔案中定義選單,通常是在您的視窗中新增選單的最簡單方法,但不是唯一的方法。在您定義完選單後,您可以將選單控制代碼傳送給createwindow或者使用setmenu來設定視窗的選單。hmenupopup createmenu 下面的 是浮動彈出式選單的 使用系...
高效能MySQL 第十章 複製(2)
1 複製拓撲 可以在任意個主庫和備庫之間建立複製,只有乙個限制 每乙個備庫只能有乙個主庫。基本原則 乙個mysql備庫例項只能有乙個主庫。每個備庫必須有乙個唯一的伺服器id。乙個主庫可以有多個備庫 或者相應的,乙個備庫可以有多個兄弟備庫 如果開啟了log sl e updates選項,乙個備庫可以把...
第十章作業2 交換類排序與選擇類排序
胡潤研究院的調查顯示,截至2017年底,中國個人資產超過1億元的高淨值人群達15萬人。假設給出n個人的個人資產值,請快速找出資產排前m位的大富翁。輸入首先給出兩個正整數n 10 6 和m 10 其中n為總人數,m為需要找出的大富翁數 接下來一行給出n個人的個人資產值,以百萬元為單位,為不超過長整型範...