IContextMenu3::HandleMenuMsg2 method (shobjidl_core.h)

Allows client objects of the IContextMenu3 interface to handle messages associated with owner-drawn menu items.

Syntax

HRESULT HandleMenuMsg2(
  UINT    uMsg,
  WPARAM  wParam,
  LPARAM  lParam,
  LRESULT *plResult
);

Parameters

uMsg

Type: UINT

The message to be processed. In the case of some messages, such as WM_INITMENUPOPUP, WM_DRAWITEM, WM_MENUCHAR, or WM_MEASUREITEM, the client object being called may provide owner-drawn menu items.

wParam

Type: WPARAM

Additional message information. The value of this parameter depends on the value of the uMsg parameter.

lParam

Type: LPARAM

Additional message information. The value of this parameter depends on the value of the uMsg parameter.

plResult

Type: LRESULT*

The address of an LRESULT value that the owner of the menu will return from the message. This parameter can be NULL.

Return value

Type: HRESULT

If this method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code.

Remarks

IContextMenu3::HandleMenuMsg2 generally replaces IContextMenu2::HandleMenuMsg, and is called when IContextMenu determines that IContextMenu3 is supported and one of the supported messages (see uMsg) has been received. However, in some cases, IContextMenu2::HandleMenuMsg is still called. Context menu hosts may dispatch menu messages through either or both methods. Consequently, if a Shell extension implements both IContextMenu2::HandleMenuMsg and IContextMenu3::HandleMenuMsg2, it must be prepared for menu messages to arrive through either method.

Note  If IContextMenu3 is not implemented, there is no guarantee that IContextMenu2 will be called in its place. In some cases, the absence of IContextMenu3 is determined and then the process is halted.
 

Requirements

Requirement Value
Minimum supported client Windows 2000 Professional, Windows XP [desktop apps only]
Minimum supported server Windows 2000 Server [desktop apps only]
Target Platform Windows
Header shobjidl_core.h (include Shobjidl.h)
DLL Shell32.dll (version 4.71 or later)