I am trying to keep the owner drawn part of the menu from being inverted
with the color blue highlight. I am trying to make a title for the menu and
have it disable and no highlight.

Here is the latest stuff I did to it...

I looked into the call stack of DrawItem( ) and MeasureItem( ) in CTRLTEST.
The frame window obj
WM_MEASUREITEM and WM_DRAWITEM is handled by the default window proc. I read
MSDN more and OnDrawItem( ) and OnMeasureItem( ) and found out the this is
only for top-level menus. So I went to my dialog class and added
WM_MEASUREITEM and WM_DRAWITEM handler then step in to the base class of
each one. I end up at CWnd::OnDrawItem( ) and CWnd::OnMeasureItem( ). Each
one looks like below but call the right function in the CContextMenu
class...

void CWnd::OnDrawItem(int /*nIDCtl*/, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
if (lpDrawItemStruct->CtlType == ODT_MENU)
{
CMenu* pMenu = CMenu::FromHandlePermanent(
(HMENU)lpDrawItemStruct->hwndItem);
if (pMenu != NULL)
{
pMenu->DrawItem(lpDrawItemStruct);
return; // eat it
}
}

// reflect notification to child window control
if (ReflectLastMsg(lpDrawItemStruct->hwndItem))
return; // eat it

// not handled - do default
Default();
}

And the same for CWnd::OnMeasureItem( ).

When running pMenu always == NULL. I copy some of the code to
CDlg::OnMeasureItem( ) which is I cut down to....

void CDlg::OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT
lpMeasureItemStruct)
{
// TODO: Add your message handler code here and/or call default
if (lpDrawItemStruct->CtlType == ODT_MENU)
{
ModeSelectMenu.MeasureItem(lpMeasureItemStruct);
return;
}
CDialog::OnMeasureItem(nIDCtl, lpMeasureItemStruct);
}

And the same for CWnd::OnDrawItem( ).

Now the right CContextMenu functions get called but still the same blank
menu item results.

Any help...