Changeset 2396 for trunk/src/user32/new/menu.cpp
- Timestamp:
- Jan 10, 2000, 6:18:13 PM (26 years ago)
- 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:16cbratschi Exp $*/1 /* $Id: menu.cpp,v 1.5 2000-01-10 17:18:08 cbratschi Exp $*/ 2 2 /* 3 3 * Menu functions … … 274 274 #undef MENUFLAG 275 275 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 279 HMENU getMenu(HWND hwnd) 280 { 281 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd); 282 283 return win32wnd ? win32wnd->GetMenu():(HMENU)0; 284 } 285 286 VOID setMenu(HWND hwnd,HMENU hMenu) 287 { 288 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd); 289 290 if (win32wnd) win32wnd->SetMenu(hMenu); 291 } 292 293 HMENU getSysMenu(HWND hwnd) 294 { 295 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd); 296 297 return win32wnd ? win32wnd->GetSysMenu():(HMENU)0; 298 } 299 300 VOID setSysMenu(HWND hwnd,HMENU hMenu) 301 { 302 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd); 303 304 win32wnd->SetSysMenu(hMenu); 305 } 279 306 280 307 /*********************************************************************** … … 288 315 289 316 if( hMenu ) { 290 POPUPMENU* menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hMenu);317 POPUPMENU* menu = (POPUPMENU*)hMenu; 291 318 menu->wFlags |= MF_SYSMENU | MF_POPUP; 292 319 SetMenuDefaultItem(hMenu, SC_CLOSE, FALSE); … … 347 374 if (hMenu) 348 375 { 349 POPUPMENU *menu = (POPUPMENU*) USER_HEAP_LIN_ADDR(hMenu);376 POPUPMENU *menu = (POPUPMENU*)hMenu; 350 377 menu->wFlags = MF_SYSMENU; 351 378 menu->hWnd = hWnd; … … 361 388 menu->items[0].fType = MF_SYSMENU | MF_POPUP; 362 389 menu->items[0].fState = 0; 363 menu = (POPUPMENU*) USER_HEAP_LIN_ADDR(hPopupMenu);390 menu = (POPUPMENU*)hPopupMenu; 364 391 menu->wFlags |= MF_SYSMENU; 365 392 … … 487 514 HMENU hMenu ) 488 515 { 489 POPUPMENU *menu = (POPUPMENU *)USER_HEAP_LIN_ADDR(hMenu);516 POPUPMENU *menu = (POPUPMENU*)hMenu; 490 517 UINT i = menu->FocusedItem + 1; 491 518 … … 515 542 HMENU hMenu ) 516 543 { 517 POPUPMENU const *menu = (POPUPMENU *)USER_HEAP_LIN_ADDR(hMenu);544 POPUPMENU const *menu = (POPUPMENU*)hMenu; 518 545 UINT i; 519 546 … … 556 583 UINT i; 557 584 558 if (((*hmenu)==0xffff) || (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(*hmenu)))) return NULL;585 if (((*hmenu)==0xffff) || (!(menu = (POPUPMENU*)*hmenu))) return NULL; 559 586 if (wFlags & MF_BYPOSITION) 560 587 { … … 565 592 { 566 593 MENUITEM *item = menu->items; 594 567 595 for (i = 0; i < menu->nItems; i++, item++) 568 596 { … … 600 628 MENUITEM *item; 601 629 if (((*hmenu)==0xffff) || 602 (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(*hmenu))))630 (!(menu = (POPUPMENU*)*hmenu))) 603 631 return NO_SELECTED_ITEM; 604 632 item = menu->items; … … 673 701 if (!IsMenu( hmenu )) 674 702 { 675 hmenu = GetSubMenu( GetSystemMenu(hwndOwner,FALSE), 0);703 hmenu = GetSubMenu(getSysMenu(hwndOwner), 0); 676 704 } 677 705 678 706 if (hmenu) 679 707 { 680 POPUPMENU *menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu );708 POPUPMENU *menu = (POPUPMENU*)hmenu; 681 709 MENUITEM *item = menu->items; 682 710 LONG menuchar; … … 1009 1037 if (lpitem->fType & MF_SYSMENU) 1010 1038 { 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)); 1017 1044 } 1018 1045 … … 1304 1331 /* draw menu items */ 1305 1332 1306 menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu );1333 menu = (POPUPMENU*)hmenu; 1307 1334 if (menu && menu->nItems) 1308 1335 { … … 1335 1362 HFONT hfontOld = 0; 1336 1363 1337 lppop = (LPPOPUPMENU) USER_HEAP_LIN_ADDR((HMENU)GetWindowLongA(hwnd,GWL_ID));1364 lppop = (LPPOPUPMENU)getMenu(hwnd); 1338 1365 if (lppop == NULL || lprect == NULL) 1339 1366 { … … 1371 1398 for (i = 0; i < lppop->nItems; i++) 1372 1399 { 1373 MENU_DrawMenuItem( hwnd, (HMENU)GetWindowLongA(hwnd,GWL_ID), GetWindow(hwnd,GW_OWNER),1400 MENU_DrawMenuItem( hwnd,getMenu(hwnd), GetWindow(hwnd,GW_OWNER), 1374 1401 hDC, &lppop->items[i], lppop->Height, TRUE, ODA_DRAWENTIRE ); 1375 1402 } … … 1455 1482 //hwndOwner, hmenu, id, x, y, xanchor, yanchor); 1456 1483 1457 if (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu ))) return FALSE;1484 if (!(menu = (POPUPMENU*)hmenu)) return FALSE; 1458 1485 if (menu->FocusedItem != NO_SELECTED_ITEM) 1459 1486 { … … 1499 1526 assert( uSubPWndLevel == 0 ); 1500 1527 1501 pTopPopupWnd = CreateWindowA( POPUPMENU _CLASS_ATOM, NULL,1528 pTopPopupWnd = CreateWindowA( POPUPMENUCLASSNAME, NULL, 1502 1529 WS_POPUP, x, y, width, height, 1503 1530 hwndOwner, 0, GetWindowLongA(hwndOwner,GWL_HINSTANCE), … … 1515 1542 /* create a new window for the submenu */ 1516 1543 1517 menu->hWnd = CreateWindowA( POPUPMENU _CLASS_ATOM, NULL,1544 menu->hWnd = CreateWindowA( POPUPMENUCLASSNAME, NULL, 1518 1545 WS_POPUP, x, y, width, height, 1519 1546 hwndOwner, 0, GetWindowLongA(hwndOwner,GWL_HINSTANCE), … … 1563 1590 //TRACE("owner=0x%04x menu=0x%04x index=0x%04x select=0x%04x\n", hwndOwner, hmenu, wIndex, sendMenuSelect); 1564 1591 1565 lppop = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu );1592 lppop = (POPUPMENU*)hmenu; 1566 1593 if (!lppop->nItems) return; 1567 1594 … … 1604 1631 int pos; 1605 1632 if((pos=MENU_FindSubMenu(&topmenu, hmenu))!=NO_SELECTED_ITEM){ 1606 POPUPMENU *ptm = (POPUPMENU *) USER_HEAP_LIN_ADDR( topmenu );1633 POPUPMENU *ptm = (POPUPMENU*)topmenu; 1607 1634 MENUITEM *ip = &ptm->items[pos]; 1608 1635 SendMessageA( hwndOwner, WM_MENUSELECT, MAKELONG(pos, … … 1630 1657 //TRACE("hwnd=0x%04x hmenu=0x%04x off=0x%04x\n", hwndOwner, hmenu, offset); 1631 1658 1632 menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu );1659 menu = (POPUPMENU*)hmenu; 1633 1660 if (!menu->items) return; 1634 1661 … … 1702 1729 if (flags & MF_POPUP) 1703 1730 { 1704 POPUPMENU *menu = (POPUPMENU *)USER_HEAP_LIN_ADDR((UINT)id);1731 POPUPMENU *menu = (POPUPMENU*)(UINT)id; 1705 1732 if (IS_A_MENU(menu)) menu->wFlags |= MF_POPUP; 1706 1733 else … … 1746 1773 POPUPMENU *menu; 1747 1774 1748 if (!(menu = (POPUPMENU *)USER_HEAP_LIN_ADDR(hMenu)))1775 if (!(menu = (POPUPMENU*)hMenu)) 1749 1776 { 1750 1777 //WARN("%04x not a menu handle\n", … … 1770 1797 return NULL; 1771 1798 } 1772 if (!(menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu)))1799 if (!(menu = (LPPOPUPMENU)hMenu)) 1773 1800 { 1774 1801 //WARN("%04x not a menu handle\n", … … 1914 1941 MENUITEM *item; 1915 1942 1916 menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu );1943 menu = (POPUPMENU*)hmenu; 1917 1944 1918 1945 if (menu->FocusedItem == NO_SELECTED_ITEM) return 0; … … 1933 1960 BOOL sendMenuSelect ) 1934 1961 { 1935 POPUPMENU *menu = (POPUPMENU*) USER_HEAP_LIN_ADDR( hmenu );;1962 POPUPMENU *menu = (POPUPMENU*)hmenu; 1936 1963 1937 1964 //TRACE("owner=0x%04x hmenu=0x%04x 0x%04x\n", hwndOwner, hmenu, sendMenuSelect); … … 1952 1979 } else return; 1953 1980 1954 submenu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hsubmenu );1981 submenu = (POPUPMENU*)hsubmenu; 1955 1982 MENU_HideSubPopups( hwndOwner, hsubmenu, FALSE ); 1956 1983 MENU_SelectItem( hwndOwner, hsubmenu, NO_SELECTED_ITEM, sendMenuSelect, 0 ); … … 1987 2014 //TRACE("owner=0x%04x hmenu=0x%04x 0x%04x\n", hwndOwner, hmenu, selectFirst); 1988 2015 1989 if (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu ))) return hmenu;2016 if (!(menu = (POPUPMENU*)hmenu)) return hmenu; 1990 2017 1991 2018 if (menu->FocusedItem == NO_SELECTED_ITEM) … … 2031 2058 if (IS_SYSTEM_MENU(menu)) 2032 2059 { 2060 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(menu->hWnd); 2061 2033 2062 MENU_InitSysMenuPopup(item->hSubMenu,GetWindowLongA(menu->hWnd,GWL_STYLE), GetClassLongA(menu->hWnd, GCL_STYLE)); 2034 2063 2035 //NC_GetSysPopupPos( menu->hWnd, &rect ); //CB: todo2064 if (win32wnd) win32wnd->GetSysPopupPos(&rect); 2036 2065 rect.top = rect.bottom; 2037 2066 rect.right = GetSystemMetrics(SM_CXSIZE); … … 2076 2105 static HMENU MENU_PtMenu( HMENU hMenu, POINT pt ) 2077 2106 { 2078 POPUPMENU *menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hMenu );2107 POPUPMENU *menu = (POPUPMENU*)hMenu; 2079 2108 register UINT ht = menu->FocusedItem; 2080 2109 … … 2087 2116 if( !ht ) /* check the current window (avoiding WM_HITTEST) */ 2088 2117 { 2089 //ht = (UINT)NC_HandleNCHitTest( menu->hWnd, pt ); //CB: todo 2118 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(menu->hWnd); 2119 2120 ht = win32wnd->HandleNCHitTest(pt); 2090 2121 if( menu->wFlags & MF_POPUP ) 2091 2122 ht = (ht != (UINT)HTNOWHERE && … … 2093 2124 else 2094 2125 { 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; 2097 2128 } 2098 2129 } … … 2113 2144 { 2114 2145 MENUITEM *item; 2115 POPUPMENU *menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hMenu );2146 POPUPMENU *menu = (POPUPMENU*)hMenu; 2116 2147 2117 2148 //TRACE("%p hmenu=0x%04x\n", pmt, hMenu); … … 2155 2186 static void MENU_SwitchTracking( MTRACKER* pmt, HMENU hPtMenu, UINT id ) 2156 2187 { 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; 2159 2190 2160 2191 //TRACE("%p hmenu=0x%04x 0x%04x\n", pmt, hPtMenu, id); … … 2185 2216 { 2186 2217 UINT id = 0; 2187 POPUPMENU *ptmenu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hPtMenu );2218 POPUPMENU *ptmenu = (POPUPMENU*)hPtMenu; 2188 2219 MENUITEM *item; 2189 2220 … … 2226 2257 { 2227 2258 UINT id = 0; 2228 POPUPMENU *ptmenu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hPtMenu );2259 POPUPMENU *ptmenu = (POPUPMENU*)hPtMenu; 2229 2260 MENUITEM *item; 2230 2261 … … 2263 2294 if( hPtMenu ) 2264 2295 { 2265 ptmenu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hPtMenu );2296 ptmenu = (POPUPMENU*)hPtMenu; 2266 2297 if( IS_SYSTEM_MENU(ptmenu) ) 2267 2298 id = 0; … … 2292 2323 static LRESULT MENU_DoNextMenu( MTRACKER* pmt, UINT vk ) 2293 2324 { 2294 POPUPMENU *menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( pmt->hTopMenu );2325 POPUPMENU *menu = (POPUPMENU*)pmt->hTopMenu; 2295 2326 2296 2327 if( (vk == VK_LEFT && menu->FocusedItem == 0 ) || 2297 2328 (vk == VK_RIGHT && menu->FocusedItem == menu->nItems - 1)) 2298 2329 { 2299 WND* wndPtr;2300 2330 HMENU hNewMenu; 2301 2331 HWND hNewWnd; … … 2314 2344 /* switch to the menu bar */ 2315 2345 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) ) 2317 2347 { 2318 2348 return FALSE; 2319 2349 } 2320 2350 2321 hNewMenu = GetWindowLongA(pmt->hOwnerWnd,GWL_ID);2351 hNewMenu = getMenu(pmt->hOwnerWnd); 2322 2352 if( vk == VK_LEFT ) 2323 2353 { 2324 menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hNewMenu );2354 menu = (POPUPMENU*)hNewMenu; 2325 2355 id = menu->nItems - 1; 2326 2356 } … … 2329 2359 { 2330 2360 /* switch to the system menu */ 2331 hNewMenu = GetSystemMenu(pmt->hOwnerWnd,FALSE);2361 hNewMenu = getSysMenu(pmt->hOwnerWnd); 2332 2362 } 2333 2363 else … … 2343 2373 { 2344 2374 if( (GetWindowLongA(hNewWnd,GWL_STYLE) & WS_SYSMENU) && 2345 GetSubMenu( GetSystemMenu(hNewWnd,FALSE), 0) == hNewMenu )2375 GetSubMenu(getSysMenu(hNewWnd), 0) == hNewMenu ) 2346 2376 { 2347 2377 /* get the real system menu */ 2348 hNewMenu = GetSystemMenu(hNewWnd,FALSE);2378 hNewMenu = getSysMenu(hNewWnd); 2349 2379 } 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) ) 2351 2381 { 2352 2382 /* FIXME: Not sure what to do here, perhaps, … … 2372 2402 ReleaseCapture(); 2373 2403 pmt->hOwnerWnd = hNewWnd; 2374 //EVENT_Capture( pmt->hOwnerWnd, HTMENU ); //CB: 2404 //EVENT_Capture( pmt->hOwnerWnd, HTMENU ); //CB: todo 2375 2405 } 2376 2406 … … 2433 2463 2434 2464 hmenuprev = hmenutmp = pmt->hTopMenu; 2435 menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenutmp );2465 menu = (POPUPMENU*)hmenutmp; 2436 2466 2437 2467 /* Try to move 1 column left (if possible) */ … … 2482 2512 { 2483 2513 HMENU hmenutmp; 2484 POPUPMENU *menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( pmt->hTopMenu );2514 POPUPMENU *menu = (POPUPMENU*)pmt->hTopMenu; 2485 2515 UINT nextcol; 2486 2516 … … 2557 2587 2558 2588 fEndMenu = FALSE; 2559 if (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu ))) return FALSE;2589 if (!(menu = (POPUPMENU*)hmenu)) return FALSE; 2560 2590 2561 2591 if (wFlags & TPM_BUTTONDOWN) MENU_ButtonDown( &mt, hmenu, wFlags ); … … 2565 2595 while (!fEndMenu) 2566 2596 { 2567 menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( mt.hCurrentMenu );2597 menu = (POPUPMENU*)mt.hCurrentMenu; 2568 2598 msg.hwnd = (wFlags & TPM_ENTERIDLEEX && menu->wFlags & MF_POPUP) ? menu->hWnd : 0; 2569 2599 2570 2600 /* we have to keep the message in the queue until it's 2571 2601 * 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; 2576 2603 TranslateMessage( &msg ); 2577 2604 mt.pt = msg.pt; … … 2652 2679 case VK_DOWN: /* If on menu bar, pull-down the menu */ 2653 2680 2654 menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( mt.hCurrentMenu );2681 menu = (POPUPMENU*)mt.hCurrentMenu; 2655 2682 if (!(menu->wFlags & MF_POPUP)) 2656 2683 mt.hCurrentMenu = MENU_ShowSubPopup(mt.hOwnerWnd, mt.hTopMenu, TRUE, wFlags); … … 2733 2760 ReleaseCapture(); 2734 2761 2735 menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( mt.hTopMenu );2762 menu = (POPUPMENU*)mt.hTopMenu; 2736 2763 2737 2764 if( IsWindow( mt.hOwnerWnd ) ) … … 2792 2819 * Menu-bar tracking upon a mouse event. Called from NC_HandleSysCommand(). 2793 2820 */ 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; 2821 void MENU_TrackMouseMenuBar( HWND hWnd, INT ht, POINT pt ) 2822 { 2823 HMENU hMenu = (ht == HTSYSMENU) ? getSysMenu(hWnd):getMenu(hWnd); 2798 2824 UINT wFlags = TPM_ENTERIDLEEX | TPM_BUTTONDOWN | TPM_LEFTALIGN | TPM_LEFTBUTTON; 2799 2825 … … 2814 2840 * Menu-bar tracking upon a keyboard event. Called from NC_HandleSysCommand(). 2815 2841 */ 2816 void MENU_TrackKbdMenuBar( WND* wndPtr, UINT wParam, INT vkey)2842 void MENU_TrackKbdMenuBar( HWND hWnd, UINT wParam, INT vkey) 2817 2843 { 2818 2844 UINT uItem = NO_SELECTED_ITEM; … … 2822 2848 /* find window that has a menu */ 2823 2849 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; 2826 2852 2827 2853 /* check if we have to track a system menu */ 2828 2854 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); 2834 2860 uItem = 0; 2835 2861 wParam |= HTSYSMENU; /* prevent item lookup */ 2836 2862 } 2837 2863 else 2838 hTrackMenu = wndPtr->wIDmenu;2864 hTrackMenu = getMenu(hWnd); 2839 2865 2840 2866 if (IsMenu( hTrackMenu )) 2841 2867 { 2842 MENU_InitTracking( wndPtr->hwndSelf, hTrackMenu, FALSE, wFlags );2868 MENU_InitTracking( hWnd, hTrackMenu, FALSE, wFlags ); 2843 2869 2844 2870 if( vkey && vkey != VK_SPACE ) 2845 2871 { 2846 uItem = MENU_FindItemByKey( wndPtr->hwndSelf, hTrackMenu,2872 uItem = MENU_FindItemByKey( hWnd, hTrackMenu, 2847 2873 vkey, (wParam & HTSYSMENU) ); 2848 2874 if( uItem >= (UINT)(-2) ) … … 2855 2881 if( hTrackMenu ) 2856 2882 { 2857 MENU_SelectItem( wndPtr->hwndSelf, hTrackMenu, uItem, TRUE, 0 );2883 MENU_SelectItem( hWnd, hTrackMenu, uItem, TRUE, 0 ); 2858 2884 2859 2885 if( uItem == NO_SELECTED_ITEM ) 2860 MENU_MoveSelection( wndPtr->hwndSelf, hTrackMenu, ITEM_NEXT );2886 MENU_MoveSelection( hWnd, hTrackMenu, ITEM_NEXT ); 2861 2887 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); 2868 2894 } 2869 2895 } … … 2881 2907 { 2882 2908 BOOL ret = FALSE; 2909 2910 dprintf(("USER32: TrackPopupMenu")); 2883 2911 2884 2912 MENU_InitTracking(hWnd, hMenu, TRUE, wFlags); … … 2904 2932 HWND hWnd, LPTPMPARAMS lpTpm ) 2905 2933 { 2934 dprintf(("USER32: TrackPopupMenuEx")); 2906 2935 //FIXME("not fully implemented\n" ); 2907 2936 return TrackPopupMenu( hMenu, wFlags, x, y, 0, hWnd, … … 3006 3035 * Compute the size of the menu bar height. Used by NC_HandleNCCalcSize(). 3007 3036 */ 3008 UINT MENU_GetMenuBarHeight( HWND hwnd, UINT menubarWidth, 3009 INT orgX, INT orgY ) 3037 UINT MENU_GetMenuBarHeight(HWND hwnd,UINT menubarWidth,INT orgX,INT orgY) 3010 3038 { 3011 3039 HDC hdc; … … 3017 3045 // hwnd, menubarWidth, orgX, orgY ); 3018 3046 3019 if (!(lppop = (LPPOPUPMENU) USER_HEAP_LIN_ADDR((HMENU)GetWindowLongA(hwnd,GWL_ID))))3047 if (!(lppop = (LPPOPUPMENU)getMenu(hwnd))) 3020 3048 { 3021 3049 return 0; … … 3038 3066 UINT id, UINT flags ) 3039 3067 { 3068 dprintf(("USER32: ChangeMenuA")); 3069 3040 3070 //TRACE("menu=%08x pos=%d data=%08lx id=%08x flags=%08x\n", 3041 3071 // hMenu, pos, (DWORD)data, id, flags ); … … 3059 3089 UINT id, UINT flags ) 3060 3090 { 3091 dprintf(("USER32: ChangeMenuW")); 3092 3061 3093 //TRACE("menu=%08x pos=%d data=%08lx id=%08x flags=%08x\n", 3062 3094 // hMenu, pos, (DWORD)data, id, flags ); … … 3082 3114 DWORD ret; 3083 3115 3116 dprintf(("USER32: CheckMenuItem")); 3117 3084 3118 //TRACE("menu=%04x id=%04x flags=%04x\n", hMenu, id, flags ); 3085 3119 if (!(item = MENU_FindItem( &hMenu, &id, flags ))) return -1; … … 3100 3134 POPUPMENU *menu; 3101 3135 3136 dprintf(("USER32: EnableMenuItem")); 3137 3102 3138 //TRACE("(%04x, %04X, %04X) !\n", 3103 3139 // hMenu, wItemID, wFlags); 3104 3140 3105 3141 /* Get the Popupmenu to access the owner menu */ 3106 if (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hMenu)))3142 if (!(menu = (POPUPMENU*)hMenu)) 3107 3143 return (UINT)-1; 3108 3144 … … 3121 3157 3122 3158 /* Get the parent menu to access*/ 3123 if (!(parentMenu = (POPUPMENU *) USER_HEAP_LIN_ADDR(menu->hSysMenuOwner)))3159 if (!(parentMenu = (POPUPMENU*)menu->hSysMenuOwner)) 3124 3160 return (UINT)-1; 3125 3161 … … 3141 3177 { 3142 3178 MENUITEM *item; 3179 3180 dprintf(("USER32: GetMenuStringA")); 3143 3181 3144 3182 //TRACE("menu=%04x item=%04x ptr=%p len=%d flags=%04x\n", … … 3162 3200 MENUITEM *item; 3163 3201 3202 dprintf(("USER32: GetMenuStringW")); 3203 3164 3204 //TRACE("menu=%04x item=%04x ptr=%p len=%d flags=%04x\n", 3165 3205 // hMenu, wItemID, str, nMaxSiz, wFlags ); … … 3180 3220 { 3181 3221 LPPOPUPMENU menu; 3222 3223 dprintf(("USER32: HiliteMenuItem")); 3224 3182 3225 //TRACE("(%04x, %04x, %04x, %04x);\n", 3183 3226 // hWnd, hMenu, wItemID, wHilite); 3184 3227 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; 3186 3229 if (menu->FocusedItem == wItemID) return TRUE; 3187 3230 MENU_HideSubPopups( hWnd, hMenu, FALSE ); … … 3197 3240 { 3198 3241 MENUITEM *item; 3242 3243 dprintf(("USER32: GetMenuState %d %d",wItemID,wFlags)); 3244 3199 3245 //TRACE("(menu=%04x, id=%04x, flags=%04x);\n", 3200 3246 // hMenu, wItemID, wFlags); 3247 3201 3248 if (!(item = MENU_FindItem( &hMenu, &wItemID, wFlags ))) return -1; 3249 3202 3250 //debug_print_menuitem (" item: ", item, ""); 3203 3251 if (item->fType & MF_POPUP) 3204 3252 { 3205 POPUPMENU *menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( item->hSubMenu );3253 POPUPMENU *menu = (POPUPMENU*)item->hSubMenu; 3206 3254 if (!menu) return -1; 3207 3255 else return (menu->nItems << 8) | ((item->fState|item->fType) & 0xff); … … 3222 3270 INT WINAPI GetMenuItemCount( HMENU hMenu ) 3223 3271 { 3224 LPPOPUPMENU menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu); 3272 LPPOPUPMENU menu = (LPPOPUPMENU)hMenu; 3273 3274 dprintf(("USER32: GetMenuItemCount")); 3275 3225 3276 if (!IS_A_MENU(menu)) return -1; 3226 3277 //TRACE("(%04x) returning %d\n", … … 3236 3287 MENUITEM * lpmi; 3237 3288 3289 dprintf(("USER32: GetMenuItemID")); 3290 3238 3291 if (!(lpmi = MENU_FindItem(&hMenu,(UINT*)&nPos,MF_BYPOSITION))) return 0; 3239 3292 if (lpmi->fType & MF_POPUP) return -1; … … 3249 3302 { 3250 3303 MENUITEM *item; 3304 3305 dprintf(("USER32: InsertMenuA")); 3251 3306 3252 3307 //if (IS_STRING_ITEM(flags) && str) … … 3267 3322 3268 3323 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; 3270 3325 3271 3326 item->hCheckBit = item->hUnCheckBit = 0; … … 3281 3336 { 3282 3337 BOOL ret; 3338 3339 dprintf(("USER32: InsertMenuW")); 3283 3340 3284 3341 if (IS_STRING_ITEM(flags) && str) … … 3299 3356 UINT id, LPCSTR data ) 3300 3357 { 3358 dprintf(("USER32: AppendMenuA")); 3359 3301 3360 return InsertMenuA( hMenu, -1, flags | MF_BYPOSITION, id, data ); 3302 3361 } … … 3309 3368 UINT id, LPCWSTR data ) 3310 3369 { 3370 dprintf(("USER32: AppendMenuW")); 3371 3311 3372 return InsertMenuW( hMenu, -1, flags | MF_BYPOSITION, id, data ); 3312 3373 } … … 3321 3382 MENUITEM *item; 3322 3383 3384 dprintf(("USER32: RemoveMenu")); 3385 3323 3386 //TRACE("(menu=%04x pos=%04x flags=%04x)\n",hMenu, nPos, wFlags); 3324 3387 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; 3326 3389 3327 3390 /* Remove item */ … … 3355 3418 { 3356 3419 MENUITEM *item = MENU_FindItem( &hMenu, &nPos, wFlags ); 3420 3421 dprintf(("USER32: DeleteMenu")); 3422 3357 3423 if (!item) return FALSE; 3358 3424 if (item->fType & MF_POPUP) DestroyMenu( item->hSubMenu ); … … 3371 3437 MENUITEM *item; 3372 3438 3439 dprintf(("USER32: ModifyMenuA")); 3440 3373 3441 if (IS_STRING_ITEM(flags)) 3374 3442 { … … 3395 3463 { 3396 3464 BOOL ret; 3465 3466 dprintf(("USER32: ModifyMenuW")); 3397 3467 3398 3468 if (IS_STRING_ITEM(flags) && str) … … 3415 3485 POPUPMENU *menu; 3416 3486 3487 dprintf(("USER32: CreatePopupMenu")); 3488 3417 3489 if (!(hmenu = CreateMenu())) return 0; 3418 menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu );3490 menu = (POPUPMENU*)hmenu; 3419 3491 menu->wFlags |= MF_POPUP; 3420 3492 menu->bTimeToHide = FALSE; … … 3428 3500 DWORD WINAPI GetMenuCheckMarkDimensions(void) 3429 3501 { 3502 dprintf(("USER32: GetMenuCheckMarkDimensions")); 3503 3430 3504 return MAKELONG( check_bitmap_width, check_bitmap_height ); 3431 3505 } … … 3439 3513 { 3440 3514 MENUITEM *item; 3515 3516 dprintf(("USER32: SetMenuItemBitmaps")); 3517 3441 3518 //TRACE("(%04x, %04x, %04x, %04x, %04x)\n", 3442 3519 // hMenu, nPos, wFlags, hNewCheck, hNewUnCheck); … … 3464 3541 HMENU hMenu; 3465 3542 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; 3468 3548 3469 3549 ZeroMemory(menu, sizeof(POPUPMENU)); … … 3485 3565 //TRACE("(%04x)\n", hMenu); 3486 3566 3567 dprintf(("USER32: DestroyMenu")); 3568 3487 3569 /* Silently ignore attempts to destroy default system popup */ 3488 3570 3489 3571 if (hMenu && hMenu != MENU_DefSysPopup) 3490 3572 { 3491 LPPOPUPMENU lppop = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu);3573 LPPOPUPMENU lppop = (LPPOPUPMENU)hMenu; 3492 3574 HWND pTPWnd = MENU_GetTopPopupWnd(); 3493 3575 … … 3514 3596 HeapFree(GetProcessHeap(), 0, lppop->items ); 3515 3597 } 3516 USER_HEAP_FREE( hMenu);3598 HeapFree(GetProcessHeap(),0,(LPVOID)hMenu); 3517 3599 MENU_ReleaseTopPopupWnd(); 3518 3600 } … … 3526 3608 } 3527 3609 3528 #if 0 //CB: todo3529 3610 /********************************************************************** 3530 3611 * GetSystemMenu32 (USER32.291) … … 3533 3614 { 3534 3615 HMENU retvalue = 0; 3535 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd); 3616 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hWnd); 3617 3618 dprintf(("USER32: GetSystemMenu")); 3536 3619 3537 3620 if (win32wnd) 3538 3621 { 3539 if( wndPtr->hSysMenu ) 3622 HMENU hSysMenu = getSysMenu(hWnd); 3623 if(hSysMenu) 3540 3624 { 3541 3625 if( bRevert ) 3542 3626 { 3543 DestroyMenu(wndPtr->hSysMenu); 3544 wndPtr->hSysMenu = 0; 3627 DestroyMenu(hSysMenu); 3628 hSysMenu = 0; 3629 setSysMenu(hWnd,hSysMenu); 3545 3630 } 3546 3631 else 3547 3632 { 3548 POPUPMENU *menu = (POPUPMENU*) 3549 USER_HEAP_LIN_ADDR(wndPtr->hSysMenu); 3633 POPUPMENU *menu = (POPUPMENU*)hSysMenu; 3550 3634 if( IS_A_MENU(menu) ) 3551 3635 { … … 3557 3641 //WARN("Current sys-menu (%04x) of wnd %04x is broken\n", 3558 3642 // wndPtr->hSysMenu, hWnd); 3559 wndPtr->hSysMenu = 0; 3643 hSysMenu = 0; 3644 setSysMenu(hWnd,hSysMenu); 3560 3645 } 3561 3646 } 3562 3647 } 3563 3648 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 ) 3568 3656 { 3569 3657 POPUPMENU *menu; 3570 retvalue = GetSubMenu( wndPtr->hSysMenu, 0);3658 retvalue = GetSubMenu(hSysMenu, 0); 3571 3659 3572 3660 /* Store the dummy sysmenu handle to facilitate the refresh */ 3573 3661 /* of the close button if the SC_CLOSE item change */ 3574 menu = (POPUPMENU*) USER_HEAP_LIN_ADDR(retvalue);3662 menu = (POPUPMENU*)retvalue; 3575 3663 if ( IS_A_MENU(menu) ) 3576 menu->hSysMenuOwner = wndPtr->hSysMenu;3664 menu->hSysMenuOwner = hSysMenu; 3577 3665 } 3578 3666 } … … 3588 3676 Win32BaseWindow *win32wnd = Win32BaseWindow::GetWindowFromHandle(hwnd); 3589 3677 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 )); 3594 3684 return TRUE; 3595 3685 } 3596 3686 return FALSE; 3597 3687 } 3598 #endif3599 3688 3600 3689 /********************************************************************** … … 3605 3694 HMENU retvalue; 3606 3695 3696 dprintf(("USER32: GetMenu")); 3697 3607 3698 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 3612 3702 /********************************************************************** 3613 3703 * SetMenu32 (USER32.487) … … 3617 3707 //TRACE("(%04x, %04x);\n", hWnd, hMenu); 3618 3708 3709 dprintf(("USER32: SetMenu")); 3710 3619 3711 if (hMenu && !IsMenu(hMenu)) 3620 3712 { … … 3628 3720 if (GetCapture() == hWnd) ReleaseCapture(); 3629 3721 3630 wndPtr->wIDmenu = (UINT)hMenu;3722 setMenu(hWnd,hMenu); 3631 3723 if (hMenu != 0) 3632 3724 { 3633 3725 LPPOPUPMENU lpmenu; 3634 3726 3635 if (!(lpmenu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu)))3727 if (!(lpmenu = (LPPOPUPMENU)hMenu)) 3636 3728 { 3637 3729 return FALSE; … … 3648 3740 return FALSE; 3649 3741 } 3650 #endif3651 3742 3652 3743 … … 3657 3748 { 3658 3749 MENUITEM * lpmi; 3750 3751 dprintf(("USER32: GetSubMenu")); 3659 3752 3660 3753 if (!(lpmi = MENU_FindItem(&hMenu,(UINT*)&nPos,MF_BYPOSITION))) return 0; … … 3671 3764 LPPOPUPMENU lppop; 3672 3765 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); 3676 3771 if (lppop == NULL) 3677 3772 { … … 3694 3789 void WINAPI EndMenu(void) 3695 3790 { 3791 dprintf(("USER32: EndMenu not implemented!")); 3696 3792 /* 3697 3793 * FIXME: NOT ENOUGH! This has to cancel menu tracking right away. … … 3708 3804 { 3709 3805 HRSRC hrsrc = FindResourceA( instance, name, RT_MENUA ); 3806 3807 dprintf(("USER32: LoadMenuA")); 3808 3710 3809 if (!hrsrc) return 0; 3711 3810 return LoadMenuIndirectA( (MENUITEMTEMPLATEHEADER*)LoadResource( instance, hrsrc )); … … 3719 3818 { 3720 3819 HRSRC hrsrc = FindResourceW( instance, name, RT_MENUW ); 3820 3821 dprintf(("USER32: LoadMenuW")); 3822 3721 3823 if (!hrsrc) return 0; 3722 3824 return LoadMenuIndirectW( (MENUITEMTEMPLATEHEADER*)LoadResource( instance, hrsrc )); … … 3732 3834 WORD version, offset; 3733 3835 LPCSTR p = (LPCSTR)lpMenuTemplate; 3836 3837 dprintf(("USER32: LoadMenuIndirectA")); 3734 3838 3735 3839 //TRACE("%p\n", template ); … … 3770 3874 HMENU WINAPI LoadMenuIndirectW(CONST MENUITEMTEMPLATEHEADER *lpMenuTemplate ) 3771 3875 { 3876 dprintf(("USER32: LoadMenuIndirectW")); 3877 3772 3878 /* FIXME: is there anything different between A and W? */ 3773 3879 return LoadMenuIndirectA(lpMenuTemplate); … … 3780 3886 BOOL WINAPI IsMenu(HMENU hmenu) 3781 3887 { 3782 LPPOPUPMENU menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hmenu); 3888 LPPOPUPMENU menu = (LPPOPUPMENU)hmenu; 3889 3890 dprintf(("USER32: IsMenu")); 3891 3783 3892 return IS_A_MENU(menu); 3784 3893 } … … 3862 3971 LPMENUITEMINFOA lpmii) 3863 3972 { 3973 dprintf(("USER32: GetMenuItemInfoA")); 3974 3864 3975 return GetMenuItemInfo_common (hmenu, item, bypos, lpmii, FALSE); 3865 3976 } … … 3871 3982 LPMENUITEMINFOW lpmii) 3872 3983 { 3984 dprintf(("USER32: GetMenuItemInfoW")); 3985 3873 3986 return GetMenuItemInfo_common (hmenu, item, bypos, 3874 3987 (LPMENUITEMINFOA)lpmii, TRUE); … … 3939 4052 menu->hSubMenu = lpmii->hSubMenu; 3940 4053 if (menu->hSubMenu) { 3941 POPUPMENU *subMenu = (POPUPMENU *)USER_HEAP_LIN_ADDR((UINT)menu->hSubMenu);4054 POPUPMENU *subMenu = (POPUPMENU*)(UINT)menu->hSubMenu; 3942 4055 if (IS_A_MENU(subMenu)) { 3943 4056 subMenu->wFlags |= MF_POPUP; … … 3970 4083 const MENUITEMINFOA *lpmii) 3971 4084 { 4085 dprintf(("USER32: SetMenuItemInfoA")); 4086 3972 4087 return SetMenuItemInfo_common(MENU_FindItem(&hmenu, &item, bypos? MF_BYPOSITION : 0), 3973 4088 lpmii, FALSE); … … 3980 4095 const MENUITEMINFOW *lpmii) 3981 4096 { 4097 dprintf(("USER32: SetMenuItemInfoW")); 4098 3982 4099 return SetMenuItemInfo_common(MENU_FindItem(&hmenu, &item, bypos? MF_BYPOSITION : 0), 3983 4100 (const MENUITEMINFOA*)lpmii, TRUE); … … 3994 4111 MENUITEM *item; 3995 4112 4113 4114 dprintf(("USER32: SetMenuDefaultItem")); 3996 4115 //TRACE("(0x%x,%d,%d)\n", hmenu, uItem, bypos); 3997 4116 3998 if (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hmenu))) return FALSE;4117 if (!(menu = (POPUPMENU*)hmenu)) return FALSE; 3999 4118 4000 4119 /* reset all default-item flags */ … … 4042 4161 UINT i = 0; 4043 4162 4163 dprintf(("USER32: GetMenuDefaultItem")); 4044 4164 //TRACE("(0x%x,%d,%d)\n", hmenu, bypos, flags); 4045 4165 4046 if (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hmenu))) return -1;4166 if (!(menu = (POPUPMENU*)hmenu)) return -1; 4047 4167 4048 4168 /* find default item */ … … 4081 4201 { 4082 4202 MENUITEM *item = MENU_InsertItem(hMenu, uItem, bypos ? MF_BYPOSITION : 0 ); 4203 4204 dprintf(("USER32: InsertMenuItemA")); 4205 4083 4206 return SetMenuItemInfo_common(item, lpmii, FALSE); 4084 4207 } … … 4092 4215 { 4093 4216 MENUITEM *item = MENU_InsertItem(hMenu, uItem, bypos ? MF_BYPOSITION : 0 ); 4217 4218 dprintf(("USER32: InsertMenuItemW")); 4219 4094 4220 return SetMenuItemInfo_common(item, (const MENUITEMINFOA*)lpmii, TRUE); 4095 4221 } … … 4106 4232 HMENU mfirst = hMenu, mlast = hMenu, mcheck = hMenu; 4107 4233 4234 dprintf(("USER32: CheckMenuRadioItem")); 4108 4235 //TRACE("ox%x: %d-%d, check %d, bypos=%d\n", 4109 4236 // hMenu, first, last, check, bypos); … … 4149 4276 HWND referenceHwnd; 4150 4277 4278 dprintf(("USER32: GetMenuItemRect")); 4151 4279 //TRACE("(0x%x,0x%x,%d,%p)\n", hwnd, hMenu, uItem, rect); 4152 4280 … … 4156 4284 if(!hwnd) 4157 4285 { 4158 itemMenu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hMenu);4286 itemMenu = (POPUPMENU*)hMenu; 4159 4287 if (itemMenu == NULL) 4160 4288 return FALSE; … … 4186 4314 POPUPMENU *menu; 4187 4315 4316 dprintf(("USER32: SetMenuInfo")); 4188 4317 //TRACE("(0x%04x %p)\n", hMenu, lpmi); 4189 4318 4190 if (lpmi && (lpmi->cbSize==sizeof(MENUINFO)) && (menu=(POPUPMENU*) USER_HEAP_LIN_ADDR(hMenu)))4319 if (lpmi && (lpmi->cbSize==sizeof(MENUINFO)) && (menu=(POPUPMENU*)hMenu)) 4191 4320 { 4192 4321 … … 4221 4350 { POPUPMENU *menu; 4222 4351 4352 dprintf(("USER32: GetMenuInfo")); 4223 4353 //TRACE("(0x%04x %p)\n", hMenu, lpmi); 4224 4354 4225 if (lpmi && (menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hMenu)))4355 if (lpmi && (menu = (POPUPMENU*)hMenu)) 4226 4356 { 4227 4357 … … 4253 4383 LPPOPUPMENU menu; 4254 4384 4385 dprintf(("USER32: SetMenuContextHelpId")); 4255 4386 //TRACE("(0x%04x 0x%08lx)\n", hMenu, dwContextHelpID); 4256 4387 4257 menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hMenu);4388 menu = (POPUPMENU*)hMenu; 4258 4389 if (menu) 4259 4390 { … … 4271 4402 LPPOPUPMENU menu; 4272 4403 4404 dprintf(("USER32: GetMenuContextHelpId")); 4273 4405 //TRACE("(0x%04x)\n", hMenu); 4274 4406 4275 menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hMenu);4407 menu = (POPUPMENU*)hMenu; 4276 4408 if (menu) 4277 4409 { … … 4286 4418 UINT WINAPI MenuItemFromPoint(HWND hWnd, HMENU hMenu, POINT ptScreen) 4287 4419 { 4420 dprintf(("USER32: MenuItemFromPoint not implemented!")); 4288 4421 //FIXME("(0x%04x,0x%04x,(%ld,%ld)):stub\n", 4289 4422 // hWnd, hMenu, ptScreen.x, ptScreen.y); … … 4294 4427 { 4295 4428 WNDCLASSA wndClass; 4429 BOOL rc; 4296 4430 4297 4431 //SvL: Don't check this now … … 4307 4441 wndClass.lpszClassName = POPUPMENUCLASSNAME; 4308 4442 4309 return RegisterClassA(&wndClass); 4443 rc = RegisterClassA(&wndClass); 4444 MENU_Init(); 4445 4446 return rc; 4310 4447 } 4311 4448 //******************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.