EnableMenuItem Function Is not Working With the parameter MF_GRAYED

Have created a ATL COM project through which I am inserting Menu Items to The rightclick menu like this:

STDMETHODIMP CSimpleShlExt::QueryContextMenu (
HMENU hmenu, UINT uMenuIndex, UINT uidFirstCmd,
UINT uidLastCmd, UINT uFlags )
{
gHMenu=hmenu;
UINT uCmdID = uidFirstCmd;

// If the flags include CMF_DEFAULTONLY then we shouldn’t do anything.

if ( uFlags & CMF_DEFAULTONLY )
return MAKE_HRESULT ( SEVERITY_SUCCESS, FACILITY_NULL, 0 );

InsertMenu ( hmenu, uMenuIndex, MF_BYPOSITION, uCmdID++, _T(“Connect To Server”) );
uMenuIndex++;
InsertMenu ( hmenu, uMenuIndex, MF_BYPOSITION, uCmdID++,
_T(“DisConnect From Server”) );
return MAKE_HRESULT ( SEVERITY_SUCCESS, FACILITY_NULL, 2 );
}

Now I wan to Disable the Connect submenu as soon as the user clicks on it and for this I am using EnableSubMenuItem ,

STDMETHODIMP CSimpleShlExt::InvokeCommand ( LPCMINVOKECOMMANDINFO pCmdInfo )
{
// If lpVerb really points to a string, ignore this function call and bail out.
if ( 0 != HIWORD( pCmdInfo->lpVerb ) )
return E_INVALIDARG;

switch ( LOWORD( pCmdInfo->lpVerb) )
{
case 0:
{

TCHAR szMsg [MAX_PATH + 32];

wsprintf ( szMsg, _T(“The selected file was:\n\n%s”), m_szFile );

MessageBox ( pCmdInfo->hwnd, “Connected”, _T(“SimpleShlExt”),
MB_ICONINFORMATION );

//InsertMenu ( hmenu, uMenuIndex, MF_STRING | MF_BYPOSITION, uCmdID++, _T(“Connect => NDS”) );
//EnableMenuItem(gHMenu,0,MF_GRAYED);

EnableMenuItem(gHMenu,0,MF_DISABLED | MF_GRAYED | MF_BYPOSITION);

return S_OK;
}
break;




}

But this is not helping with disabling the Menu Item. What am I doing Wrong??

On Thu, Sep 23, 2010 at 5:38 AM, wrote:

> What am I doing Wrong??
>
Asking about windows application programming in a driver developer forum
would be the first problem.
Mark Roddy

xxxxx@lge.com wrote:

Have created a ATL COM project through which I am inserting Menu Items to The rightclick menu like this:

Now I wan to Disable the Connect submenu as soon as the user clicks on it and for this I am using EnableSubMenuItem ,

But this is not helping with disabling the Menu Item. What am I doing Wrong??

This is the wrong mailing list for this question, but since I can’t help
myself, I’m going to answer.

You are assuming that QueryContextMenu is called exactly once. I
believe you’ll find that is a false assumption. You tweak the menu in
your InvokeCommand handler, and then Explorer throws the menu away. The
next time there is a right-click, QueryContextMenu is called again to
recreate the menu, but this time you don’t disable anything.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

@Tim Roberts, Thatz Right. Thanks