The PopupMenuItem structure contains information about the menu items in a menu resource that open a menu or a submenu.
struct PopupMenuItem { DWORD type; DWORD state; DWORD id; WORD resInfo; szOrOrd menuText; };
Value |
Meaning |
MF_END |
The menu item is the last on the menu; the flag is used internally by the system. |
MF_POPUP |
The menu item opens a menu or a submenu; the flag is used internally by the system. |
If you specify MF_POPUP, it indicates that the menu item is one that opens a menu or a submenu.
In addition to the values MF_END and MF_POPUP, this member can also be a combination of the type values listed with the dwType member of the MENUITEMINFO structure. The type values are those that begin with MFT_. To use these predefined MFT_* type values, include the following statement in your .RC file:
#include “WINUSER.H”
#include “WINUSER.H”
Value |
Meaning |
MFR_END |
The menu item is the last in this submenu or menu resource; this flag is used internally by the system. |
MFR_POPUP |
The menu item opens a menu or a submenu; the flag is used internally by the system. |
There is one PopupMenuItem structure for each menu item that opens a menu or a submenu. Identify this type of menu item by setting the type member to MF_POPUP and by setting the MFR_POPUP bit in the resInfo member to 0x0001. In this case, the final data written to the RT_MENU resource for the menu or submenu is the Menuhelpid structure. Menuhelpid contains a numeric expression that identifies the menu during WM_HELP processing.
Additionally, every PopupMenuItem structure that has the MFR_POPUP bit set in the resInfo member will be followed by a Menuhelpid structure plus an additional number of PopupMenuItem structures, one for each menu item in that submenu. The last PopupMenuItem structure in the submenu will have the MFR_END bit set in the resInfo member. To find the end of the resource, look for a matching MFR_END for every MFR_POPUP plus one additional MFR_END that matches the outermost set of menu items.
Indicate the last menu item by setting the type member to MF_END. Because you can nest submenus, there can be multiple levels of MF_END. In these instances, the menu items are sequential.