PopupMenuItem 

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;

};

 

Members

type

Specifies a set of type flags that you can use to describe the menu item. Some of the values this member can have include:

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 MENUITEMINFOF8HLYR 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 

state

Specifies a set of state flags that you can use to describe the menu item. This member can be a combination of the state values listed with the dwState member of the MENUITEMINFO structure. The state values are those that begin with MFS_. To use these predefined MFS_* state values, include the following statement in your .RC file:

#include  WINUSER.H 

id

A numeric expression that identifies the menu item that is passed in the WM_COMMAND message.

resInfo

A set of bit flags that specify the type of menu item. This member can be one of the following values.

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.

 

menuText

Specifies a null-terminated Unicode string that contains the text for this menu item. There is no fixed limit on the size of this string.

 

Remarks

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 MENUHELPIDH1BM2T 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.

See Also

MenuHeader, MENUHELPID, MENUITEMINFO, NormalMenuItem