Ignore:
Timestamp:
Jan 10, 2000, 6:18:13 PM (26 years ago)
Author:
cbratschi
Message:

activated menu code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/new/menu.cpp

    r2290 r2396  
    1 /* $Id: menu.cpp,v 1.4 2000-01-01 14:57:16 cbratschi Exp $*/
     1/* $Id: menu.cpp,v 1.5 2000-01-10 17:18:08 cbratschi Exp $*/
    22/*
    33 * Menu functions
     
    274274#undef MENUFLAG
    275275
    276 #define USER_HEAP_LIN_ADDR(a) ((PVOID)a)
    277 #define USER_HEAP_ALLOC(size) HeapAlloc(GetProcessHeap(),0,size)
    278 #define USER_HEAP_FREE(handle) HeapFree(GetProcessHeap(),0,(LPVOID)handle)
     276//#define USER_HEAP_ALLOC(size) HeapAlloc(GetProcessHeap(),0,size)
     277//#define USER_HEAP_FREE(handle) HeapFree(GetProcessHeap(),0,(LPVOID)handle)
     278
     279HMENU getMenu(HWND hwnd)
     280{
     281  Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd);
     282
     283  return win32wnd ? win32wnd->GetMenu():(HMENU)0;
     284}
     285
     286VOID setMenu(HWND hwnd,HMENU hMenu)
     287{
     288  Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd);
     289
     290  if (win32wnd) win32wnd->SetMenu(hMenu);
     291}
     292
     293HMENU getSysMenu(HWND hwnd)
     294{
     295  Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd);
     296
     297  return win32wnd ? win32wnd->GetSysMenu():(HMENU)0;
     298}
     299
     300VOID setSysMenu(HWND hwnd,HMENU hMenu)
     301{
     302  Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd);
     303
     304  win32wnd->SetSysMenu(hMenu);
     305}
    279306
    280307/***********************************************************************
     
    288315
    289316    if( hMenu ) {
    290         POPUPMENU* menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hMenu);
     317        POPUPMENU* menu = (POPUPMENU*)hMenu;
    291318        menu->wFlags |= MF_SYSMENU | MF_POPUP;
    292319        SetMenuDefaultItem(hMenu, SC_CLOSE, FALSE);
     
    347374    if (hMenu)
    348375    {
    349         POPUPMENU *menu = (POPUPMENU*) USER_HEAP_LIN_ADDR(hMenu);
     376        POPUPMENU *menu = (POPUPMENU*)hMenu;
    350377        menu->wFlags = MF_SYSMENU;
    351378        menu->hWnd = hWnd;
     
    361388            menu->items[0].fType = MF_SYSMENU | MF_POPUP;
    362389            menu->items[0].fState = 0;
    363             menu = (POPUPMENU*) USER_HEAP_LIN_ADDR(hPopupMenu);
     390            menu = (POPUPMENU*)hPopupMenu;
    364391            menu->wFlags |= MF_SYSMENU;
    365392
     
    487514    HMENU  hMenu )
    488515{
    489     POPUPMENU  *menu = (POPUPMENU *)USER_HEAP_LIN_ADDR(hMenu);
     516    POPUPMENU  *menu = (POPUPMENU*)hMenu;
    490517    UINT  i = menu->FocusedItem + 1;
    491518
     
    515542    HMENU  hMenu )
    516543{
    517     POPUPMENU const  *menu = (POPUPMENU *)USER_HEAP_LIN_ADDR(hMenu);
     544    POPUPMENU const  *menu = (POPUPMENU*)hMenu;
    518545    UINT  i;
    519546
     
    556583    UINT i;
    557584
    558     if (((*hmenu)==0xffff) || (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(*hmenu)))) return NULL;
     585    if (((*hmenu)==0xffff) || (!(menu = (POPUPMENU*)*hmenu))) return NULL;
    559586    if (wFlags & MF_BYPOSITION)
    560587    {
     
    565592    {
    566593        MENUITEM *item = menu->items;
     594
    567595        for (i = 0; i < menu->nItems; i++, item++)
    568596        {
     
    600628    MENUITEM *item;
    601629    if (((*hmenu)==0xffff) ||
    602             (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(*hmenu))))
     630            (!(menu = (POPUPMENU*)*hmenu)))
    603631        return NO_SELECTED_ITEM;
    604632    item = menu->items;
     
    673701    if (!IsMenu( hmenu ))
    674702    {
    675         hmenu = GetSubMenu(GetSystemMenu(hwndOwner,FALSE), 0);
     703        hmenu = GetSubMenu(getSysMenu(hwndOwner), 0);
    676704    }
    677705
    678706    if (hmenu)
    679707    {
    680         POPUPMENU *menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu );
     708        POPUPMENU *menu = (POPUPMENU*)hmenu;
    681709        MENUITEM *item = menu->items;
    682710        LONG menuchar;
     
    10091037    if (lpitem->fType & MF_SYSMENU)
    10101038    {
    1011         if( !IsIconic(hwnd) ) {
    1012 #if 0 //CB: todo
    1013                 NC_DrawSysButton95( hwnd, hdc,
    1014                                     lpitem->fState &
    1015                                     (MF_HILITE | MF_MOUSESELECT) );
    1016 #endif
     1039        if( !IsIconic(hwnd) )
     1040        {
     1041          Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd);
     1042
     1043          if (win32wnd) win32wnd->DrawSysButton(hdc,lpitem->fState & (MF_HILITE | MF_MOUSESELECT));
    10171044        }
    10181045
     
    13041331            /* draw menu items */
    13051332
    1306             menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu );
     1333            menu = (POPUPMENU*)hmenu;
    13071334            if (menu && menu->nItems)
    13081335            {
     
    13351362    HFONT hfontOld = 0;
    13361363
    1337     lppop = (LPPOPUPMENU) USER_HEAP_LIN_ADDR((HMENU)GetWindowLongA(hwnd,GWL_ID));
     1364    lppop = (LPPOPUPMENU)getMenu(hwnd);
    13381365    if (lppop == NULL || lprect == NULL)
    13391366    {
     
    13711398    for (i = 0; i < lppop->nItems; i++)
    13721399    {
    1373         MENU_DrawMenuItem( hwnd, (HMENU)GetWindowLongA(hwnd,GWL_ID), GetWindow(hwnd,GW_OWNER),
     1400        MENU_DrawMenuItem( hwnd,getMenu(hwnd), GetWindow(hwnd,GW_OWNER),
    13741401                         hDC, &lppop->items[i], lppop->Height, TRUE, ODA_DRAWENTIRE );
    13751402    }
     
    14551482    //hwndOwner, hmenu, id, x, y, xanchor, yanchor);
    14561483
    1457     if (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu ))) return FALSE;
     1484    if (!(menu = (POPUPMENU*)hmenu)) return FALSE;
    14581485    if (menu->FocusedItem != NO_SELECTED_ITEM)
    14591486    {
     
    14991526            assert( uSubPWndLevel == 0 );
    15001527
    1501             pTopPopupWnd = CreateWindowA( POPUPMENU_CLASS_ATOM, NULL,
     1528            pTopPopupWnd = CreateWindowA( POPUPMENUCLASSNAME, NULL,
    15021529                                          WS_POPUP, x, y, width, height,
    15031530                                          hwndOwner, 0, GetWindowLongA(hwndOwner,GWL_HINSTANCE),
     
    15151542                /* create a new window for the submenu */
    15161543
    1517                 menu->hWnd = CreateWindowA( POPUPMENU_CLASS_ATOM, NULL,
     1544                menu->hWnd = CreateWindowA( POPUPMENUCLASSNAME, NULL,
    15181545                                          WS_POPUP, x, y, width, height,
    15191546                                          hwndOwner, 0, GetWindowLongA(hwndOwner,GWL_HINSTANCE),
     
    15631590    //TRACE("owner=0x%04x menu=0x%04x index=0x%04x select=0x%04x\n", hwndOwner, hmenu, wIndex, sendMenuSelect);
    15641591
    1565     lppop = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu );
     1592    lppop = (POPUPMENU*)hmenu;
    15661593    if (!lppop->nItems) return;
    15671594
     
    16041631            int pos;
    16051632            if((pos=MENU_FindSubMenu(&topmenu, hmenu))!=NO_SELECTED_ITEM){
    1606                 POPUPMENU *ptm = (POPUPMENU *) USER_HEAP_LIN_ADDR( topmenu );
     1633                POPUPMENU *ptm = (POPUPMENU*)topmenu;
    16071634                MENUITEM *ip = &ptm->items[pos];
    16081635                SendMessageA( hwndOwner, WM_MENUSELECT, MAKELONG(pos,
     
    16301657    //TRACE("hwnd=0x%04x hmenu=0x%04x off=0x%04x\n", hwndOwner, hmenu, offset);
    16311658
    1632     menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu );
     1659    menu = (POPUPMENU*)hmenu;
    16331660    if (!menu->items) return;
    16341661
     
    17021729    if (flags & MF_POPUP)
    17031730    {
    1704         POPUPMENU *menu = (POPUPMENU *)USER_HEAP_LIN_ADDR((UINT)id);
     1731        POPUPMENU *menu = (POPUPMENU*)(UINT)id;
    17051732        if (IS_A_MENU(menu)) menu->wFlags |= MF_POPUP;
    17061733        else
     
    17461773    POPUPMENU *menu;
    17471774
    1748     if (!(menu = (POPUPMENU *)USER_HEAP_LIN_ADDR(hMenu)))
     1775    if (!(menu = (POPUPMENU*)hMenu))
    17491776    {
    17501777        //WARN("%04x not a menu handle\n",
     
    17701797            return NULL;
    17711798        }
    1772         if (!(menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu)))
     1799        if (!(menu = (LPPOPUPMENU)hMenu))
    17731800        {
    17741801            //WARN("%04x not a menu handle\n",
     
    19141941    MENUITEM *item;
    19151942
    1916     menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu );
     1943    menu = (POPUPMENU*)hmenu;
    19171944
    19181945    if (menu->FocusedItem == NO_SELECTED_ITEM) return 0;
     
    19331960                                BOOL sendMenuSelect )
    19341961{
    1935     POPUPMENU *menu = (POPUPMENU*) USER_HEAP_LIN_ADDR( hmenu );;
     1962    POPUPMENU *menu = (POPUPMENU*)hmenu;
    19361963
    19371964    //TRACE("owner=0x%04x hmenu=0x%04x 0x%04x\n", hwndOwner, hmenu, sendMenuSelect);
     
    19521979        } else return;
    19531980
    1954         submenu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hsubmenu );
     1981        submenu = (POPUPMENU*)hsubmenu;
    19551982        MENU_HideSubPopups( hwndOwner, hsubmenu, FALSE );
    19561983        MENU_SelectItem( hwndOwner, hsubmenu, NO_SELECTED_ITEM, sendMenuSelect, 0 );
     
    19872014    //TRACE("owner=0x%04x hmenu=0x%04x 0x%04x\n", hwndOwner, hmenu, selectFirst);
    19882015
    1989     if (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu ))) return hmenu;
     2016    if (!(menu = (POPUPMENU*)hmenu)) return hmenu;
    19902017
    19912018    if (menu->FocusedItem == NO_SELECTED_ITEM)
     
    20312058    if (IS_SYSTEM_MENU(menu))
    20322059    {
     2060        Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(menu->hWnd);
     2061
    20332062        MENU_InitSysMenuPopup(item->hSubMenu,GetWindowLongA(menu->hWnd,GWL_STYLE), GetClassLongA(menu->hWnd, GCL_STYLE));
    20342063
    2035         //NC_GetSysPopupPos( menu->hWnd, &rect ); //CB: todo
     2064        if (win32wnd) win32wnd->GetSysPopupPos(&rect);
    20362065        rect.top = rect.bottom;
    20372066        rect.right = GetSystemMetrics(SM_CXSIZE);
     
    20762105static HMENU MENU_PtMenu( HMENU hMenu, POINT pt )
    20772106{
    2078    POPUPMENU *menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hMenu );
     2107   POPUPMENU *menu = (POPUPMENU*)hMenu;
    20792108   register UINT ht = menu->FocusedItem;
    20802109
     
    20872116   if( !ht )    /* check the current window (avoiding WM_HITTEST) */
    20882117   {
    2089         //ht = (UINT)NC_HandleNCHitTest( menu->hWnd, pt ); //CB: todo
     2118        Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(menu->hWnd);
     2119
     2120        ht = win32wnd->HandleNCHitTest(pt);
    20902121        if( menu->wFlags & MF_POPUP )
    20912122            ht =  (ht != (UINT)HTNOWHERE &&
     
    20932124        else
    20942125        {
    2095             ht = ( ht == HTSYSMENU ) ? (UINT)(GetSystemMenu(menu->hWnd,FALSE))
    2096                  : ( ht == HTMENU ) ? (UINT)(GetWindowLongA(menu->hWnd,GWL_ID)) : 0;
     2126            ht = ( ht == HTSYSMENU ) ? (UINT)(getSysMenu(menu->hWnd))
     2127                 : ( ht == HTMENU ) ? (UINT)(getMenu(menu->hWnd)) : 0;
    20972128        }
    20982129   }
     
    21132144{
    21142145    MENUITEM *item;
    2115     POPUPMENU *menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hMenu );
     2146    POPUPMENU *menu = (POPUPMENU*)hMenu;
    21162147
    21172148    //TRACE("%p hmenu=0x%04x\n", pmt, hMenu);
     
    21552186static void MENU_SwitchTracking( MTRACKER* pmt, HMENU hPtMenu, UINT id )
    21562187{
    2157     POPUPMENU *ptmenu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hPtMenu );
    2158     POPUPMENU *topmenu = (POPUPMENU *) USER_HEAP_LIN_ADDR( pmt->hTopMenu );
     2188    POPUPMENU *ptmenu = (POPUPMENU*)hPtMenu;
     2189    POPUPMENU *topmenu = (POPUPMENU*)pmt->hTopMenu;
    21592190
    21602191    //TRACE("%p hmenu=0x%04x 0x%04x\n", pmt, hPtMenu, id);
     
    21852216    {
    21862217        UINT id = 0;
    2187         POPUPMENU *ptmenu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hPtMenu );
     2218        POPUPMENU *ptmenu = (POPUPMENU*)hPtMenu;
    21882219        MENUITEM *item;
    21892220
     
    22262257    {
    22272258        UINT id = 0;
    2228         POPUPMENU *ptmenu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hPtMenu );
     2259        POPUPMENU *ptmenu = (POPUPMENU*)hPtMenu;
    22292260        MENUITEM *item;
    22302261
     
    22632294    if( hPtMenu )
    22642295    {
    2265         ptmenu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hPtMenu );
     2296        ptmenu = (POPUPMENU*)hPtMenu;
    22662297        if( IS_SYSTEM_MENU(ptmenu) )
    22672298            id = 0;
     
    22922323static LRESULT MENU_DoNextMenu( MTRACKER* pmt, UINT vk )
    22932324{
    2294     POPUPMENU *menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( pmt->hTopMenu );
     2325    POPUPMENU *menu = (POPUPMENU*)pmt->hTopMenu;
    22952326
    22962327    if( (vk == VK_LEFT &&  menu->FocusedItem == 0 ) ||
    22972328        (vk == VK_RIGHT && menu->FocusedItem == menu->nItems - 1))
    22982329    {
    2299         WND*    wndPtr;
    23002330        HMENU hNewMenu;
    23012331        HWND  hNewWnd;
     
    23142344                /* switch to the menu bar */
    23152345
    2316                 if( (GetWindowLongA(pmt->hOwnerWnd,GWL_STYLE) & WS_CHILD) || !GetWindowLongA(pmt->hOwnerWnd,GWL_ID) )
     2346                if( (GetWindowLongA(pmt->hOwnerWnd,GWL_STYLE) & WS_CHILD) || !getMenu(pmt->hOwnerWnd) )
    23172347                {
    23182348                    return FALSE;
    23192349                }
    23202350
    2321                 hNewMenu = GetWindowLongA(pmt->hOwnerWnd,GWL_ID);
     2351                hNewMenu = getMenu(pmt->hOwnerWnd);
    23222352                if( vk == VK_LEFT )
    23232353                {
    2324                     menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hNewMenu );
     2354                    menu = (POPUPMENU*)hNewMenu;
    23252355                    id = menu->nItems - 1;
    23262356                }
     
    23292359            {
    23302360                /* switch to the system menu */
    2331                 hNewMenu = GetSystemMenu(pmt->hOwnerWnd,FALSE);
     2361                hNewMenu = getSysMenu(pmt->hOwnerWnd);
    23322362            }
    23332363            else
     
    23432373            {
    23442374                if( (GetWindowLongA(hNewWnd,GWL_STYLE) & WS_SYSMENU) &&
    2345                     GetSubMenu(GetSystemMenu(hNewWnd,FALSE), 0) == hNewMenu )
     2375                    GetSubMenu(getSysMenu(hNewWnd), 0) == hNewMenu )
    23462376                {
    23472377                    /* get the real system menu */
    2348                     hNewMenu =  GetSystemMenu(hNewWnd,FALSE);
     2378                    hNewMenu =  getSysMenu(hNewWnd);
    23492379                }
    2350                 else if( (GetWindowLongA(hNewWnd,GWL_STYLE) & WS_CHILD) || (GetWindowLongA(hNewWnd,GWL_ID) != hNewMenu) )
     2380                else if( (GetWindowLongA(hNewWnd,GWL_STYLE) & WS_CHILD) || (getMenu(hNewWnd) != hNewMenu) )
    23512381                {
    23522382                    /* FIXME: Not sure what to do here, perhaps,
     
    23722402            ReleaseCapture();
    23732403            pmt->hOwnerWnd = hNewWnd;
    2374             //EVENT_Capture( pmt->hOwnerWnd, HTMENU ); //CB:
     2404            //EVENT_Capture( pmt->hOwnerWnd, HTMENU ); //CB: todo
    23752405        }
    23762406
     
    24332463
    24342464    hmenuprev = hmenutmp = pmt->hTopMenu;
    2435     menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenutmp );
     2465    menu = (POPUPMENU*)hmenutmp;
    24362466
    24372467    /* Try to move 1 column left (if possible) */
     
    24822512{
    24832513    HMENU hmenutmp;
    2484     POPUPMENU *menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( pmt->hTopMenu );
     2514    POPUPMENU *menu = (POPUPMENU*)pmt->hTopMenu;
    24852515    UINT  nextcol;
    24862516
     
    25572587
    25582588    fEndMenu = FALSE;
    2559     if (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu ))) return FALSE;
     2589    if (!(menu = (POPUPMENU*)hmenu)) return FALSE;
    25602590
    25612591    if (wFlags & TPM_BUTTONDOWN) MENU_ButtonDown( &mt, hmenu, wFlags );
     
    25652595    while (!fEndMenu)
    25662596    {
    2567         menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( mt.hCurrentMenu );
     2597        menu = (POPUPMENU*)mt.hCurrentMenu;
    25682598        msg.hwnd = (wFlags & TPM_ENTERIDLEEX && menu->wFlags & MF_POPUP) ? menu->hWnd : 0;
    25692599
    25702600        /* we have to keep the message in the queue until it's
    25712601         * clear that menu loop is not over yet. */
    2572 #if 0 //CB: todo
    2573         if (!MSG_InternalGetMessage( QMSG_WIN32A, &msg, msg.hwnd, mt.hOwnerWnd,
    2574                                      MSGF_MENU, PM_NOREMOVE, !enterIdleSent, &enterIdleSent )) break;
    2575 #endif
     2602        if (!GetMessageA(&msg,msg.hwnd,0,0)) break;
    25762603        TranslateMessage( &msg );
    25772604        mt.pt = msg.pt;
     
    26522679                case VK_DOWN: /* If on menu bar, pull-down the menu */
    26532680
    2654                     menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( mt.hCurrentMenu );
     2681                    menu = (POPUPMENU*)mt.hCurrentMenu;
    26552682                    if (!(menu->wFlags & MF_POPUP))
    26562683                        mt.hCurrentMenu = MENU_ShowSubPopup(mt.hOwnerWnd, mt.hTopMenu, TRUE, wFlags);
     
    27332760    ReleaseCapture();
    27342761
    2735     menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( mt.hTopMenu );
     2762    menu = (POPUPMENU*)mt.hTopMenu;
    27362763
    27372764    if( IsWindow( mt.hOwnerWnd ) )
     
    27922819 * Menu-bar tracking upon a mouse event. Called from NC_HandleSysCommand().
    27932820 */
    2794 void MENU_TrackMouseMenuBar( WND* wndPtr, INT ht, POINT pt )
    2795 {
    2796     HWND  hWnd = wndPtr->hwndSelf;
    2797     HMENU hMenu = (ht == HTSYSMENU) ? wndPtr->hSysMenu : wndPtr->wIDmenu;
     2821void MENU_TrackMouseMenuBar( HWND hWnd, INT ht, POINT pt )
     2822{
     2823    HMENU hMenu = (ht == HTSYSMENU) ? getSysMenu(hWnd):getMenu(hWnd);
    27982824    UINT wFlags = TPM_ENTERIDLEEX | TPM_BUTTONDOWN | TPM_LEFTALIGN | TPM_LEFTBUTTON;
    27992825
     
    28142840 * Menu-bar tracking upon a keyboard event. Called from NC_HandleSysCommand().
    28152841 */
    2816 void MENU_TrackKbdMenuBar( WND* wndPtr, UINT wParam, INT vkey)
     2842void MENU_TrackKbdMenuBar( HWND hWnd, UINT wParam, INT vkey)
    28172843{
    28182844   UINT uItem = NO_SELECTED_ITEM;
     
    28222848    /* find window that has a menu */
    28232849
    2824     while( wndPtr->dwStyle & WS_CHILD)
    2825         if( !(wndPtr = wndPtr->parent) ) return;
     2850    while(GetWindowLongA(hWnd,GWL_STYLE) & WS_CHILD)
     2851        if( !(hWnd = GetParent(hWnd)) ) return;
    28262852
    28272853    /* check if we have to track a system menu */
    28282854
    2829     if( (wndPtr->dwStyle & (WS_CHILD | WS_MINIMIZE)) ||
    2830         !wndPtr->wIDmenu || vkey == VK_SPACE )
    2831     {
    2832         if( !(wndPtr->dwStyle & WS_SYSMENU) ) return;
    2833         hTrackMenu = wndPtr->hSysMenu;
     2855    if( (GetWindowLongA(hWnd,GWL_STYLE) & (WS_CHILD | WS_MINIMIZE)) ||
     2856        !getMenu(hWnd) || vkey == VK_SPACE )
     2857    {
     2858        if( !(GetWindowLongA(hWnd,GWL_STYLE) & WS_SYSMENU) ) return;
     2859        hTrackMenu = getSysMenu(hWnd);
    28342860        uItem = 0;
    28352861        wParam |= HTSYSMENU;    /* prevent item lookup */
    28362862    }
    28372863    else
    2838         hTrackMenu = wndPtr->wIDmenu;
     2864        hTrackMenu = getMenu(hWnd);
    28392865
    28402866    if (IsMenu( hTrackMenu ))
    28412867    {
    2842         MENU_InitTracking( wndPtr->hwndSelf, hTrackMenu, FALSE, wFlags );
     2868        MENU_InitTracking( hWnd, hTrackMenu, FALSE, wFlags );
    28432869
    28442870        if( vkey && vkey != VK_SPACE )
    28452871        {
    2846             uItem = MENU_FindItemByKey( wndPtr->hwndSelf, hTrackMenu,
     2872            uItem = MENU_FindItemByKey( hWnd, hTrackMenu,
    28472873                                        vkey, (wParam & HTSYSMENU) );
    28482874            if( uItem >= (UINT)(-2) )
     
    28552881        if( hTrackMenu )
    28562882        {
    2857             MENU_SelectItem( wndPtr->hwndSelf, hTrackMenu, uItem, TRUE, 0 );
     2883            MENU_SelectItem( hWnd, hTrackMenu, uItem, TRUE, 0 );
    28582884
    28592885            if( uItem == NO_SELECTED_ITEM )
    2860                 MENU_MoveSelection( wndPtr->hwndSelf, hTrackMenu, ITEM_NEXT );
     2886                MENU_MoveSelection( hWnd, hTrackMenu, ITEM_NEXT );
    28612887            else if( vkey )
    2862                 PostMessageA( wndPtr->hwndSelf, WM_KEYDOWN, VK_DOWN, 0L );
    2863 
    2864             MENU_TrackMenu( hTrackMenu, wFlags, 0, 0, wndPtr->hwndSelf, NULL );
    2865         }
    2866 
    2867         MENU_ExitTracking (wndPtr->hwndSelf);
     2888                PostMessageA( hWnd, WM_KEYDOWN, VK_DOWN, 0L );
     2889
     2890            MENU_TrackMenu( hTrackMenu, wFlags, 0, 0, hWnd, NULL );
     2891        }
     2892
     2893        MENU_ExitTracking (hWnd);
    28682894    }
    28692895}
     
    28812907{
    28822908    BOOL ret = FALSE;
     2909
     2910    dprintf(("USER32: TrackPopupMenu"));
    28832911
    28842912    MENU_InitTracking(hWnd, hMenu, TRUE, wFlags);
     
    29042932                                HWND hWnd, LPTPMPARAMS lpTpm )
    29052933{
     2934    dprintf(("USER32: TrackPopupMenuEx"));
    29062935    //FIXME("not fully implemented\n" );
    29072936    return TrackPopupMenu( hMenu, wFlags, x, y, 0, hWnd,
     
    30063035 * Compute the size of the menu bar height. Used by NC_HandleNCCalcSize().
    30073036 */
    3008 UINT MENU_GetMenuBarHeight( HWND hwnd, UINT menubarWidth,
    3009                               INT orgX, INT orgY )
     3037UINT MENU_GetMenuBarHeight(HWND hwnd,UINT menubarWidth,INT orgX,INT orgY)
    30103038{
    30113039    HDC hdc;
     
    30173045    //             hwnd, menubarWidth, orgX, orgY );
    30183046
    3019     if (!(lppop = (LPPOPUPMENU)USER_HEAP_LIN_ADDR((HMENU)GetWindowLongA(hwnd,GWL_ID))))
     3047    if (!(lppop = (LPPOPUPMENU)getMenu(hwnd)))
    30203048    {
    30213049        return 0;
     
    30383066                             UINT id, UINT flags )
    30393067{
     3068    dprintf(("USER32: ChangeMenuA"));
     3069
    30403070    //TRACE("menu=%08x pos=%d data=%08lx id=%08x flags=%08x\n",
    30413071    //              hMenu, pos, (DWORD)data, id, flags );
     
    30593089                             UINT id, UINT flags )
    30603090{
     3091    dprintf(("USER32: ChangeMenuW"));
     3092
    30613093    //TRACE("menu=%08x pos=%d data=%08lx id=%08x flags=%08x\n",
    30623094    //              hMenu, pos, (DWORD)data, id, flags );
     
    30823114    DWORD ret;
    30833115
     3116    dprintf(("USER32: CheckMenuItem"));
     3117
    30843118    //TRACE("menu=%04x id=%04x flags=%04x\n", hMenu, id, flags );
    30853119    if (!(item = MENU_FindItem( &hMenu, &id, flags ))) return -1;
     
    31003134    POPUPMENU *menu;
    31013135
     3136    dprintf(("USER32: EnableMenuItem"));
     3137
    31023138    //TRACE("(%04x, %04X, %04X) !\n",
    31033139    //             hMenu, wItemID, wFlags);
    31043140
    31053141    /* Get the Popupmenu to access the owner menu */
    3106     if (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hMenu)))
     3142    if (!(menu = (POPUPMENU*)hMenu))
    31073143        return (UINT)-1;
    31083144
     
    31213157
    31223158            /* Get the parent menu to access*/
    3123             if (!(parentMenu = (POPUPMENU *) USER_HEAP_LIN_ADDR(menu->hSysMenuOwner)))
     3159            if (!(parentMenu = (POPUPMENU*)menu->hSysMenuOwner))
    31243160                return (UINT)-1;
    31253161
     
    31413177{
    31423178    MENUITEM *item;
     3179
     3180    dprintf(("USER32: GetMenuStringA"));
    31433181
    31443182    //TRACE("menu=%04x item=%04x ptr=%p len=%d flags=%04x\n",
     
    31623200    MENUITEM *item;
    31633201
     3202    dprintf(("USER32: GetMenuStringW"));
     3203
    31643204    //TRACE("menu=%04x item=%04x ptr=%p len=%d flags=%04x\n",
    31653205    //             hMenu, wItemID, str, nMaxSiz, wFlags );
     
    31803220{
    31813221    LPPOPUPMENU menu;
     3222
     3223    dprintf(("USER32: HiliteMenuItem"));
     3224
    31823225    //TRACE("(%04x, %04x, %04x, %04x);\n",
    31833226    //             hWnd, hMenu, wItemID, wHilite);
    31843227    if (!MENU_FindItem( &hMenu, &wItemID, wHilite )) return FALSE;
    3185     if (!(menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu))) return FALSE;
     3228    if (!(menu = (LPPOPUPMENU)hMenu)) return FALSE;
    31863229    if (menu->FocusedItem == wItemID) return TRUE;
    31873230    MENU_HideSubPopups( hWnd, hMenu, FALSE );
     
    31973240{
    31983241    MENUITEM *item;
     3242
     3243    dprintf(("USER32: GetMenuState %d %d",wItemID,wFlags));
     3244
    31993245    //TRACE("(menu=%04x, id=%04x, flags=%04x);\n",
    32003246    //             hMenu, wItemID, wFlags);
     3247
    32013248    if (!(item = MENU_FindItem( &hMenu, &wItemID, wFlags ))) return -1;
     3249
    32023250    //debug_print_menuitem ("  item: ", item, "");
    32033251    if (item->fType & MF_POPUP)
    32043252    {
    3205         POPUPMENU *menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( item->hSubMenu );
     3253        POPUPMENU *menu = (POPUPMENU*)item->hSubMenu;
    32063254        if (!menu) return -1;
    32073255        else return (menu->nItems << 8) | ((item->fState|item->fType) & 0xff);
     
    32223270INT WINAPI GetMenuItemCount( HMENU hMenu )
    32233271{
    3224     LPPOPUPMENU menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu);
     3272    LPPOPUPMENU menu = (LPPOPUPMENU)hMenu;
     3273
     3274    dprintf(("USER32: GetMenuItemCount"));
     3275
    32253276    if (!IS_A_MENU(menu)) return -1;
    32263277    //TRACE("(%04x) returning %d\n",
     
    32363287    MENUITEM * lpmi;
    32373288
     3289    dprintf(("USER32: GetMenuItemID"));
     3290
    32383291    if (!(lpmi = MENU_FindItem(&hMenu,(UINT*)&nPos,MF_BYPOSITION))) return 0;
    32393292    if (lpmi->fType & MF_POPUP) return -1;
     
    32493302{
    32503303    MENUITEM *item;
     3304
     3305    dprintf(("USER32: InsertMenuA"));
    32513306
    32523307    //if (IS_STRING_ITEM(flags) && str)
     
    32673322
    32683323    if (flags & MF_POPUP)  /* Set the MF_POPUP flag on the popup-menu */
    3269         ((POPUPMENU *)USER_HEAP_LIN_ADDR((HMENU)id))->wFlags |= MF_POPUP;
     3324        ((POPUPMENU *)(HMENU)id)->wFlags |= MF_POPUP;
    32703325
    32713326    item->hCheckBit = item->hUnCheckBit = 0;
     
    32813336{
    32823337    BOOL ret;
     3338
     3339    dprintf(("USER32: InsertMenuW"));
    32833340
    32843341    if (IS_STRING_ITEM(flags) && str)
     
    32993356                             UINT id, LPCSTR data )
    33003357{
     3358    dprintf(("USER32: AppendMenuA"));
     3359
    33013360    return InsertMenuA( hMenu, -1, flags | MF_BYPOSITION, id, data );
    33023361}
     
    33093368                             UINT id, LPCWSTR data )
    33103369{
     3370    dprintf(("USER32: AppendMenuW"));
     3371
    33113372    return InsertMenuW( hMenu, -1, flags | MF_BYPOSITION, id, data );
    33123373}
     
    33213382    MENUITEM *item;
    33223383
     3384    dprintf(("USER32: RemoveMenu"));
     3385
    33233386    //TRACE("(menu=%04x pos=%04x flags=%04x)\n",hMenu, nPos, wFlags);
    33243387    if (!(item = MENU_FindItem( &hMenu, &nPos, wFlags ))) return FALSE;
    3325     if (!(menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu))) return FALSE;
     3388    if (!(menu = (LPPOPUPMENU)hMenu)) return FALSE;
    33263389
    33273390      /* Remove item */
     
    33553418{
    33563419    MENUITEM *item = MENU_FindItem( &hMenu, &nPos, wFlags );
     3420
     3421    dprintf(("USER32: DeleteMenu"));
     3422
    33573423    if (!item) return FALSE;
    33583424    if (item->fType & MF_POPUP) DestroyMenu( item->hSubMenu );
     
    33713437    MENUITEM *item;
    33723438
     3439    dprintf(("USER32: ModifyMenuA"));
     3440
    33733441    if (IS_STRING_ITEM(flags))
    33743442    {
     
    33953463{
    33963464    BOOL ret;
     3465
     3466    dprintf(("USER32: ModifyMenuW"));
    33973467
    33983468    if (IS_STRING_ITEM(flags) && str)
     
    34153485    POPUPMENU *menu;
    34163486
     3487    dprintf(("USER32: CreatePopupMenu"));
     3488
    34173489    if (!(hmenu = CreateMenu())) return 0;
    3418     menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu );
     3490    menu = (POPUPMENU*)hmenu;
    34193491    menu->wFlags |= MF_POPUP;
    34203492    menu->bTimeToHide = FALSE;
     
    34283500DWORD WINAPI GetMenuCheckMarkDimensions(void)
    34293501{
     3502    dprintf(("USER32: GetMenuCheckMarkDimensions"));
     3503
    34303504    return MAKELONG( check_bitmap_width, check_bitmap_height );
    34313505}
     
    34393513{
    34403514    MENUITEM *item;
     3515
     3516    dprintf(("USER32: SetMenuItemBitmaps"));
     3517
    34413518    //TRACE("(%04x, %04x, %04x, %04x, %04x)\n",
    34423519    //             hMenu, nPos, wFlags, hNewCheck, hNewUnCheck);
     
    34643541    HMENU hMenu;
    34653542    LPPOPUPMENU menu;
    3466     if (!(hMenu = (HMENU)USER_HEAP_ALLOC( sizeof(POPUPMENU) ))) return 0;
    3467     menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu);
     3543
     3544    dprintf(("USER32: CreateMenu"));
     3545
     3546    if (!(hMenu = (HMENU)HeapAlloc(GetProcessHeap(),0,sizeof(POPUPMENU)))) return 0;
     3547    menu = (LPPOPUPMENU)hMenu;
    34683548
    34693549    ZeroMemory(menu, sizeof(POPUPMENU));
     
    34853565    //TRACE("(%04x)\n", hMenu);
    34863566
     3567    dprintf(("USER32: DestroyMenu"));
     3568
    34873569    /* Silently ignore attempts to destroy default system popup */
    34883570
    34893571    if (hMenu && hMenu != MENU_DefSysPopup)
    34903572    {
    3491         LPPOPUPMENU lppop = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu);
     3573        LPPOPUPMENU lppop = (LPPOPUPMENU)hMenu;
    34923574        HWND pTPWnd = MENU_GetTopPopupWnd();
    34933575
     
    35143596                HeapFree(GetProcessHeap(), 0, lppop->items );
    35153597            }
    3516             USER_HEAP_FREE( hMenu );
     3598            HeapFree(GetProcessHeap(),0,(LPVOID)hMenu);
    35173599            MENU_ReleaseTopPopupWnd();
    35183600        }
     
    35263608}
    35273609
    3528 #if 0 //CB: todo
    35293610/**********************************************************************
    35303611 *         GetSystemMenu32    (USER32.291)
     
    35333614{
    35343615    HMENU retvalue = 0;
    3535     Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd);
     3616    Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hWnd);
     3617
     3618    dprintf(("USER32: GetSystemMenu"));
    35363619
    35373620    if (win32wnd)
    35383621    {
    3539         if( wndPtr->hSysMenu )
     3622        HMENU hSysMenu = getSysMenu(hWnd);
     3623        if(hSysMenu)
    35403624        {
    35413625            if( bRevert )
    35423626            {
    3543                 DestroyMenu(wndPtr->hSysMenu);
    3544                 wndPtr->hSysMenu = 0;
     3627                DestroyMenu(hSysMenu);
     3628                hSysMenu = 0;
     3629                setSysMenu(hWnd,hSysMenu);
    35453630            }
    35463631            else
    35473632            {
    3548                 POPUPMENU *menu = (POPUPMENU*)
    3549                            USER_HEAP_LIN_ADDR(wndPtr->hSysMenu);
     3633                POPUPMENU *menu = (POPUPMENU*)hSysMenu;
    35503634                if( IS_A_MENU(menu) )
    35513635                {
     
    35573641                   //WARN("Current sys-menu (%04x) of wnd %04x is broken\n",
    35583642                   //     wndPtr->hSysMenu, hWnd);
    3559                    wndPtr->hSysMenu = 0;
     3643                   hSysMenu = 0;
     3644                   setSysMenu(hWnd,hSysMenu);
    35603645                }
    35613646            }
    35623647        }
    35633648
    3564         if(!wndPtr->hSysMenu && (wndPtr->dwStyle & WS_SYSMENU) )
    3565             wndPtr->hSysMenu = MENU_GetSysMenu( hWnd, (HMENU)(-1) );
    3566 
    3567         if( wndPtr->hSysMenu )
     3649        if(!hSysMenu && (GetWindowLongA(hWnd,GWL_STYLE) & WS_SYSMENU) )
     3650        {
     3651            hSysMenu = MENU_GetSysMenu( hWnd, (HMENU)(-1) );
     3652            setSysMenu(hWnd,hSysMenu);
     3653        }
     3654
     3655        if( hSysMenu )
    35683656        {
    35693657            POPUPMENU *menu;
    3570             retvalue = GetSubMenu(wndPtr->hSysMenu, 0);
     3658            retvalue = GetSubMenu(hSysMenu, 0);
    35713659
    35723660            /* Store the dummy sysmenu handle to facilitate the refresh */
    35733661            /* of the close button if the SC_CLOSE item change */
    3574             menu = (POPUPMENU*) USER_HEAP_LIN_ADDR(retvalue);
     3662            menu = (POPUPMENU*)retvalue;
    35753663            if ( IS_A_MENU(menu) )
    3576                menu->hSysMenuOwner = wndPtr->hSysMenu;
     3664               menu->hSysMenuOwner = hSysMenu;
    35773665        }
    35783666    }
     
    35883676    Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd);
    35893677
    3590     if (wndPtr)
    3591     {
    3592         if (wndPtr->hSysMenu) DestroyMenu( wndPtr->hSysMenu );
    3593         wndPtr->hSysMenu = MENU_GetSysMenu( hwnd, hMenu );
     3678    dprintf(("USER32: SetSystemMenu"));
     3679
     3680    if (win32wnd)
     3681    {
     3682        if (win32wnd->GetSysMenu()) DestroyMenu(win32wnd->GetSysMenu());
     3683        win32wnd->SetSysMenu(MENU_GetSysMenu( hwnd, hMenu ));
    35943684        return TRUE;
    35953685    }
    35963686    return FALSE;
    35973687}
    3598 #endif
    35993688
    36003689/**********************************************************************
     
    36053694    HMENU retvalue;
    36063695
     3696    dprintf(("USER32: GetMenu"));
     3697
    36073698    if (GetWindowLongA(hWnd,GWL_STYLE) & WS_CHILD) return 0;
    3608     else return GetWindowLongA(hWnd,GWL_ID);
    3609 }
    3610 
    3611 #if 0 //CB: todo
     3699    else return getMenu(hWnd);
     3700}
     3701
    36123702/**********************************************************************
    36133703 *         SetMenu32    (USER32.487)
     
    36173707    //TRACE("(%04x, %04x);\n", hWnd, hMenu);
    36183708
     3709    dprintf(("USER32: SetMenu"));
     3710
    36193711    if (hMenu && !IsMenu(hMenu))
    36203712    {
     
    36283720        if (GetCapture() == hWnd) ReleaseCapture();
    36293721
    3630         wndPtr->wIDmenu = (UINT)hMenu;
     3722        setMenu(hWnd,hMenu);
    36313723        if (hMenu != 0)
    36323724        {
    36333725            LPPOPUPMENU lpmenu;
    36343726
    3635             if (!(lpmenu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu)))
     3727            if (!(lpmenu = (LPPOPUPMENU)hMenu))
    36363728            {
    36373729                return FALSE;
     
    36483740    return FALSE;
    36493741}
    3650 #endif
    36513742
    36523743
     
    36573748{
    36583749    MENUITEM * lpmi;
     3750
     3751    dprintf(("USER32: GetSubMenu"));
    36593752
    36603753    if (!(lpmi = MENU_FindItem(&hMenu,(UINT*)&nPos,MF_BYPOSITION))) return 0;
     
    36713764    LPPOPUPMENU lppop;
    36723765
    3673     if (!(GetWindowLongA(hWnd,GWL_STYLE) & WS_CHILD) && GetWindowLongA(hWnd,GWL_ID))
    3674     {
    3675         lppop = (LPPOPUPMENU) USER_HEAP_LIN_ADDR((HMENU)GetWindowLongA(hWnd,GWL_ID));
     3766    dprintf(("USER32: DrawMenuBar"));
     3767
     3768    if (!(GetWindowLongA(hWnd,GWL_STYLE) & WS_CHILD) && getMenu(hWnd))
     3769    {
     3770        lppop = (LPPOPUPMENU)getMenu(hWnd);
    36763771        if (lppop == NULL)
    36773772        {
     
    36943789void WINAPI EndMenu(void)
    36953790{
     3791    dprintf(("USER32: EndMenu not implemented!"));
    36963792    /*
    36973793     * FIXME: NOT ENOUGH! This has to cancel menu tracking right away.
     
    37083804{
    37093805    HRSRC hrsrc = FindResourceA( instance, name, RT_MENUA );
     3806
     3807    dprintf(("USER32: LoadMenuA"));
     3808
    37103809    if (!hrsrc) return 0;
    37113810    return LoadMenuIndirectA( (MENUITEMTEMPLATEHEADER*)LoadResource( instance, hrsrc ));
     
    37193818{
    37203819    HRSRC hrsrc = FindResourceW( instance, name, RT_MENUW );
     3820
     3821    dprintf(("USER32: LoadMenuW"));
     3822
    37213823    if (!hrsrc) return 0;
    37223824    return LoadMenuIndirectW( (MENUITEMTEMPLATEHEADER*)LoadResource( instance, hrsrc ));
     
    37323834    WORD version, offset;
    37333835    LPCSTR p = (LPCSTR)lpMenuTemplate;
     3836
     3837    dprintf(("USER32: LoadMenuIndirectA"));
    37343838
    37353839    //TRACE("%p\n", template );
     
    37703874HMENU WINAPI LoadMenuIndirectW(CONST MENUITEMTEMPLATEHEADER *lpMenuTemplate )
    37713875{
     3876    dprintf(("USER32: LoadMenuIndirectW"));
     3877
    37723878    /* FIXME: is there anything different between A and W? */
    37733879    return LoadMenuIndirectA(lpMenuTemplate);
     
    37803886BOOL WINAPI IsMenu(HMENU hmenu)
    37813887{
    3782     LPPOPUPMENU menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hmenu);
     3888    LPPOPUPMENU menu = (LPPOPUPMENU)hmenu;
     3889
     3890    dprintf(("USER32: IsMenu"));
     3891
    37833892    return IS_A_MENU(menu);
    37843893}
     
    38623971                                  LPMENUITEMINFOA lpmii)
    38633972{
     3973    dprintf(("USER32: GetMenuItemInfoA"));
     3974
    38643975    return GetMenuItemInfo_common (hmenu, item, bypos, lpmii, FALSE);
    38653976}
     
    38713982                                  LPMENUITEMINFOW lpmii)
    38723983{
     3984    dprintf(("USER32: GetMenuItemInfoW"));
     3985
    38733986    return GetMenuItemInfo_common (hmenu, item, bypos,
    38743987                                     (LPMENUITEMINFOA)lpmii, TRUE);
     
    39394052        menu->hSubMenu = lpmii->hSubMenu;
    39404053        if (menu->hSubMenu) {
    3941             POPUPMENU *subMenu = (POPUPMENU *)USER_HEAP_LIN_ADDR((UINT)menu->hSubMenu);
     4054            POPUPMENU *subMenu = (POPUPMENU*)(UINT)menu->hSubMenu;
    39424055            if (IS_A_MENU(subMenu)) {
    39434056                subMenu->wFlags |= MF_POPUP;
     
    39704083                                 const MENUITEMINFOA *lpmii)
    39714084{
     4085    dprintf(("USER32: SetMenuItemInfoA"));
     4086
    39724087    return SetMenuItemInfo_common(MENU_FindItem(&hmenu, &item, bypos? MF_BYPOSITION : 0),
    39734088                                    lpmii, FALSE);
     
    39804095                                 const MENUITEMINFOW *lpmii)
    39814096{
     4097    dprintf(("USER32: SetMenuItemInfoW"));
     4098
    39824099    return SetMenuItemInfo_common(MENU_FindItem(&hmenu, &item, bypos? MF_BYPOSITION : 0),
    39834100                                    (const MENUITEMINFOA*)lpmii, TRUE);
     
    39944111        MENUITEM *item;
    39954112
     4113
     4114        dprintf(("USER32: SetMenuDefaultItem"));
    39964115        //TRACE("(0x%x,%d,%d)\n", hmenu, uItem, bypos);
    39974116
    3998         if (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hmenu))) return FALSE;
     4117        if (!(menu = (POPUPMENU*)hmenu)) return FALSE;
    39994118
    40004119        /* reset all default-item flags */
     
    40424161        UINT i = 0;
    40434162
     4163        dprintf(("USER32: GetMenuDefaultItem"));
    40444164        //TRACE("(0x%x,%d,%d)\n", hmenu, bypos, flags);
    40454165
    4046         if (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hmenu))) return -1;
     4166        if (!(menu = (POPUPMENU*)hmenu)) return -1;
    40474167
    40484168        /* find default item */
     
    40814201{
    40824202    MENUITEM *item = MENU_InsertItem(hMenu, uItem, bypos ? MF_BYPOSITION : 0 );
     4203
     4204    dprintf(("USER32: InsertMenuItemA"));
     4205
    40834206    return SetMenuItemInfo_common(item, lpmii, FALSE);
    40844207}
     
    40924215{
    40934216    MENUITEM *item = MENU_InsertItem(hMenu, uItem, bypos ? MF_BYPOSITION : 0 );
     4217
     4218    dprintf(("USER32: InsertMenuItemW"));
     4219
    40944220    return SetMenuItemInfo_common(item, (const MENUITEMINFOA*)lpmii, TRUE);
    40954221}
     
    41064232     HMENU mfirst = hMenu, mlast = hMenu, mcheck = hMenu;
    41074233
     4234     dprintf(("USER32: CheckMenuRadioItem"));
    41084235     //TRACE("ox%x: %d-%d, check %d, bypos=%d\n",
    41094236     //             hMenu, first, last, check, bypos);
     
    41494276     HWND referenceHwnd;
    41504277
     4278     dprintf(("USER32: GetMenuItemRect"));
    41514279     //TRACE("(0x%x,0x%x,%d,%p)\n", hwnd, hMenu, uItem, rect);
    41524280
     
    41564284     if(!hwnd)
    41574285     {
    4158          itemMenu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hMenu);
     4286         itemMenu = (POPUPMENU*)hMenu;
    41594287         if (itemMenu == NULL)
    41604288             return FALSE;
     
    41864314    POPUPMENU *menu;
    41874315
     4316    dprintf(("USER32: SetMenuInfo"));
    41884317    //TRACE("(0x%04x %p)\n", hMenu, lpmi);
    41894318
    4190     if (lpmi && (lpmi->cbSize==sizeof(MENUINFO)) && (menu=(POPUPMENU*)USER_HEAP_LIN_ADDR(hMenu)))
     4319    if (lpmi && (lpmi->cbSize==sizeof(MENUINFO)) && (menu=(POPUPMENU*)hMenu))
    41914320    {
    41924321
     
    42214350{   POPUPMENU *menu;
    42224351
     4352    dprintf(("USER32: GetMenuInfo"));
    42234353    //TRACE("(0x%04x %p)\n", hMenu, lpmi);
    42244354
    4225     if (lpmi && (menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hMenu)))
     4355    if (lpmi && (menu = (POPUPMENU*)hMenu))
    42264356    {
    42274357
     
    42534383    LPPOPUPMENU menu;
    42544384
     4385    dprintf(("USER32: SetMenuContextHelpId"));
    42554386    //TRACE("(0x%04x 0x%08lx)\n", hMenu, dwContextHelpID);
    42564387
    4257     menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hMenu);
     4388    menu = (POPUPMENU*)hMenu;
    42584389    if (menu)
    42594390    {
     
    42714402    LPPOPUPMENU menu;
    42724403
     4404    dprintf(("USER32: GetMenuContextHelpId"));
    42734405    //TRACE("(0x%04x)\n", hMenu);
    42744406
    4275     menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hMenu);
     4407    menu = (POPUPMENU*)hMenu;
    42764408    if (menu)
    42774409    {
     
    42864418UINT WINAPI MenuItemFromPoint(HWND hWnd, HMENU hMenu, POINT ptScreen)
    42874419{
     4420    dprintf(("USER32: MenuItemFromPoint not implemented!"));
    42884421    //FIXME("(0x%04x,0x%04x,(%ld,%ld)):stub\n",
    42894422    //      hWnd, hMenu, ptScreen.x, ptScreen.y);
     
    42944427{
    42954428    WNDCLASSA wndClass;
     4429    BOOL rc;
    42964430
    42974431//SvL: Don't check this now
     
    43074441    wndClass.lpszClassName = POPUPMENUCLASSNAME;
    43084442
    4309     return RegisterClassA(&wndClass);
     4443    rc = RegisterClassA(&wndClass);
     4444    MENU_Init();
     4445
     4446    return rc;
    43104447}
    43114448//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.