程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Windows 編程[14] - 菜單與菜單資源(三)

Windows 編程[14] - 菜單與菜單資源(三)

編輯:Delphi

 前面我們分別使用過 MENU 和 MENUEX 來指定菜單資源, 我發現用 MENU 不必注意大小寫; 但 MENUEX 在使用參數時需要注意大小寫! 另外, 指定相同的功能時, 它們使用的參數和格式也有很大的區別. 我想還是多了解 MENUEX 吧, 因為它的參數同時也是 Win32API 菜單函數們 需要的!

  MENUEX 有四個參數, 分別是: 菜單文本, 菜單標識(整數), 菜單格式(常數: MFT_*), 菜單樣式(常數: MFS_*).

  後兩個參數都有系統預定義的常量, 列表如下:

MFT_STRING    = 0;    {菜單項是字符串}
MFT_BITMAP    = 4;    {菜單項用一個圖片來代替(暫沒測試)}
MFT_MENUBARBREAK = $20;   {換列並有分列線}
MFT_MENUBREAK  = $40;   {換列}
MFT_OWNERDRAW  = $100;  {指定為物主菜單; 通過 WM_DRAWITEM 消息的申請可以繪制更復雜的菜單}
MFT_RADIOCHECK  = $200;  {圓點代替 √ 來表示選擇
MFT_SEPARATOR  = $800;  {指定為分割線, 會忽略前面指定的菜單文本}
MFT_RIGHTORDER  = $2000;  {右對齊}
MFT_RIGHTJUSTIFY = $4000;  {顯示在右邊(幫助位置)}

MFS_GRAYED    = 3;     {禁止使用, 灰度顯示}
MFS_DISABLED   = MFS_GRAYED; {同上}
MFS_CHECKED    = 8;     {選擇}
MFS_HILITE    = $80;    {反色凸現}
MFS_ENABLED    = 0;     {不禁止, 這是默認的, 一般用於程序中對禁止的反操作}
MFS_UNCHECKED   = 0;     {不選擇}
MFS_UNHILITE   = 0;     {不反色}
MFS_DEFAULT    = $1000;   {指定為缺省, 應該類似與缺省按鈕(還沒試過), 會加粗顯示菜單文本}


 以上同類參數可以通過 "或" 運算來同時指定功能, 當然這裡不能使用 Delphi 的 "or", 是用 C/C++ 的 "|" 運算符. 再舉個例子:

#define IDM_New  101
#define IDM_Open 102
#define IDM_Save 103
#define IDM_Exit 104
#define IDM_Cut  201
#define IDM_Copy 202
#define IDM_Paste 203
#define IDM_About 301

MYMENU1 MENUEX
BEGIN
 POPUP "&File"    ,65535
 BEGIN
  MENUITEM "&New"  ,IDM_New ,MFT_STRING | MFT_RIGHTORDER ,MFS_DEFAULT | MFS_CHECKED | MFS_GRAYED
  MENUITEM "&Open"  ,IDM_Open ,MFT_STRING, MFS_HILITE
  MENUITEM "&Save"  ,IDM_Save
  MENUITEM SEPARATOR
  MENUITEM "E&xit"  ,IDM_Exit
 END
 POPUP "&Edit"    ,65535
 BEGIN
  MENUITEM "Cu&t"  ,IDM_Cut
  MENUITEM "&Copy"  ,IDM_Copy
  MENUITEM "&Paste" ,IDM_Paste
 END
 POPUP "&Help"    ,65535
 BEGIN
  MENUITEM "&About" ,IDM_About
 END
END

  顯示效果圖:

Windows 編程[14] - 菜單與菜單資源(三)


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved