- Timestamp:
- Oct 25, 1999, 10:17:41 PM (26 years ago)
- Location:
- trunk/src/user32
- Files:
-
- 1 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/Makefile
r1425 r1446 1 # $Id: Makefile,v 1.3 5 1999-10-23 23:04:31sandervl Exp $1 # $Id: Makefile,v 1.36 1999-10-25 20:17:16 sandervl Exp $ 2 2 3 3 # … … 85 85 loadres.obj: loadres.cpp user32.h dib.h 86 86 icon.obj: icon.cpp $(PDWIN32_INCLUDE)\winicon.h 87 winmenu.obj: winmenu.cpp user32.h $(PDWIN32_INCLUDE)\winres.h $(PDWIN32_INCLUDE)\winresmenu.h win32wbase.h 87 winmenu.obj: winmenu.cpp user32.h $(PDWIN32_INCLUDE)\winres.h $(PDWIN32_INCLUDE)\winresmenu.h win32wbase.h winmenudef.h oslibwin.h oslibmenu.h 88 88 syscolor.obj: syscolor.cpp syscolor.h 89 89 dde.obj: dde.cpp -
trunk/src/user32/caret.cpp
r1405 r1446 1 /* $Id: caret.cpp,v 1. 6 1999-10-22 18:11:42sandervl Exp $ */1 /* $Id: caret.cpp,v 1.7 1999-10-25 20:17:16 sandervl Exp $ */ 2 2 3 3 /* … … 33 33 #pragma data_seg(_GLOBALDATA) 34 34 35 static HWND hwndCaret ;35 static HWND hwndCaret = 0; 36 36 static HBITMAP hbmCaret; 37 37 static int CaretWidth, CaretHeight; … … 44 44 BOOL WIN32API CreateCaret (HWND hwnd, HBITMAP hBmp, int width, int height) 45 45 { 46 dprintf(("USER32: CreateCaret "));46 dprintf(("USER32: CreateCaret %x", hwnd)); 47 47 48 48 if (hwnd == NULLHANDLE) … … 216 216 BOOL rc = FALSE; 217 217 218 dprintf(("USER32: ShowCaret "));218 dprintf(("USER32: ShowCaret %x", hwnd)); 219 219 220 220 CaretIsVisible = TRUE; -
trunk/src/user32/edit.cpp
r1433 r1446 1 /* $Id: edit.cpp,v 1. 8 1999-10-24 22:56:03sandervl Exp $ */1 /* $Id: edit.cpp,v 1.9 1999-10-25 20:17:17 sandervl Exp $ */ 2 2 /* 3 3 * Edit control … … 3175 3175 3176 3176 //SvL: Set focus 3177 SetFocus(hwnd);3177 // SetFocus(hwnd); 3178 3178 3179 3179 if (!(es->flags & EF_FOCUSED)) -
trunk/src/user32/oslibmenu.cpp
r1031 r1446 1 /* $Id: oslibmenu.cpp,v 1. 2 1999-09-24 12:47:50sandervl Exp $ */1 /* $Id: oslibmenu.cpp,v 1.3 1999-10-25 20:17:18 sandervl Exp $ */ 2 2 /* 3 3 * Window Menu wrapper functions for OS/2 … … 41 41 WinSetParent(hMenu, hwndParent, FALSE ); 42 42 WinSetWindowUShort(hMenu, QWS_ID, FID_MENU); 43 44 43 WinSendMsg(hwndParent, WM_UPDATEFRAME, (MPARAM)FCF_MENU, 0); 44 return hMenu; 45 45 } 46 46 } … … 55 55 //****************************************************************************** 56 56 //****************************************************************************** 57 HMENU OSLibWinCreateMenu(PVOID menutemplate) 58 { 59 return (HMENU)WinCreateMenu(HWND_OBJECT, menutemplate); 60 } 61 //****************************************************************************** 62 //****************************************************************************** 63 HMENU OSLibWinCreateEmptyMenu() 64 { 65 return WinCreateWindow(HWND_OBJECT, WC_MENU, NULL, MS_ACTIONBAR | 0x0008 | WS_SAVEBITS, 66 0, 0, 0, 0, HWND_OBJECT, HWND_TOP, 0, NULL, NULL); 67 } 68 //****************************************************************************** 69 //****************************************************************************** 70 HMENU OSLibWinCreateEmptyPopupMenu() 71 { 72 return WinCreateWindow(HWND_OBJECT, WC_MENU, NULL, WS_CLIPSIBLINGS | WS_SAVEBITS, 73 0, 0, 0, 0, HWND_OBJECT, HWND_TOP, 0, NULL, NULL); 74 } 75 //****************************************************************************** 76 //****************************************************************************** 77 -
trunk/src/user32/oslibmenu.h
r1031 r1446 1 /* $Id: oslibmenu.h,v 1. 2 1999-09-24 12:47:50sandervl Exp $ */1 /* $Id: oslibmenu.h,v 1.3 1999-10-25 20:17:18 sandervl Exp $ */ 2 2 /* 3 3 * Window Menu wrapper functions for OS/2 … … 18 18 19 19 HWND OSLibWinSetMenu(HWND hwndParent, HMENU hMenu); 20 HMENU OSLibWinCreateMenu(PVOID menutemplate); 21 HMENU OSLibWinCreateEmptyMenu(); 22 HMENU OSLibWinCreateEmptyPopupMenu(); 20 23 int OSLibGetMenuItemCount(HWND hMenu); 21 24 -
trunk/src/user32/oslibwin.cpp
r1425 r1446 1 /* $Id: oslibwin.cpp,v 1.3 5 1999-10-23 23:04:35sandervl Exp $ */1 /* $Id: oslibwin.cpp,v 1.36 1999-10-25 20:17:19 sandervl Exp $ */ 2 2 /* 3 3 * Window API wrappers for OS/2 … … 199 199 BOOL OSLibWinSetWindowULong(HWND hwnd, ULONG offset, ULONG value) 200 200 { 201 if(offset == OSLIB_QWL_USER) 202 offset = QWL_USER; 203 201 204 return WinSetWindowULong(hwnd, offset, value); 202 205 } … … 205 208 ULONG OSLibWinGetWindowULong(HWND hwnd, ULONG offset) 206 209 { 210 if(offset == OSLIB_QWL_USER) 211 offset = QWL_USER; 212 207 213 return WinQueryWindowULong(hwnd, offset); 208 214 } -
trunk/src/user32/oslibwin.h
r1425 r1446 1 /* $Id: oslibwin.h,v 1.2 0 1999-10-23 23:04:36sandervl Exp $ */1 /* $Id: oslibwin.h,v 1.21 1999-10-25 20:17:20 sandervl Exp $ */ 2 2 /* 3 3 * Window API wrappers for OS/2 … … 43 43 BOOL OSLibWinConvertStyle(ULONG dwStyle, ULONG *dwExStyle, ULONG *OSWinStyle, ULONG *OSFrameStyle, ULONG *borderWidth, ULONG *borderHeight); 44 44 void OSLibSetWindowStyle(HWND hwnd, ULONG dwStyle); 45 46 #define OSLIB_QWL_USER -4 45 47 46 48 BOOL OSLibWinSetWindowULong(HWND hwnd, ULONG offset, ULONG value); -
trunk/src/user32/pmwindow.cpp
r1429 r1446 1 /* $Id: pmwindow.cpp,v 1.4 4 1999-10-24 12:30:28sandervl Exp $ */1 /* $Id: pmwindow.cpp,v 1.45 1999-10-25 20:17:20 sandervl Exp $ */ 2 2 /* 3 3 * Win32 Window Managment Code for OS/2 … … 51 51 0x09, // VK_TAB VK_TAB 52 52 0x00, // VK_BACKTAB No equivalent! 53 0x0 D, // VK_NEWLINE VK_RETURN53 0x0A, // VK_NEWLINE 0x0A (no VK_* def) 54 54 0x10, // VK_SHIFT VK_SHIFT 55 55 0x11, // VK_CTRL VK_CONTROL … … 73 73 0x91, // VK_SCRLLOCK VK_SCROLL 74 74 0x90, // VK_NUMLOCK VK_NUMLOCK 75 0x 2B, // VK_ENTER VK_EXECUTE, best match I guess75 0x0D, // VK_ENTER VK_RETURN 76 76 0x00, // VK_SYSRQ No equivalent! 77 77 0x70, // VK_F1 VK_F1 … … 448 448 HWND hwndFocus = (HWND)mp1; 449 449 450 dprintf(("OS2: WM_SETFOCUS %x % d", win32wnd->getWindowHandle(), mp2));450 dprintf(("OS2: WM_SETFOCUS %x %x %d", win32wnd->getWindowHandle(), mp1, mp2)); 451 451 if(WinQueryWindowULong(hwndFocus, OFFSET_WIN32PM_MAGIC) != WIN32PM_MAGIC) { 452 452 //another (non-win32) application's window … … 664 664 keyWasPressed = ((SHORT1FROMMP (mp1) & KC_PREVDOWN) == KC_PREVDOWN); 665 665 666 dprintf(("PM: WM_CHAR: %x %x %d %x", SHORT1FROMMP(mp2), SHORT2FROMMP(mp2), repeatCount, scanCode)); 666 667 // both WM_KEYUP & WM_KEYDOWN want a virtual key, find the right Win32 virtual key 667 668 // given the OS/2 virtual key and OS/2 character … … 737 738 ULONG keyflags = 0, vkey = 0; 738 739 ULONG fl = SHORT1FROMMP(mp1); 740 ULONG chCode = SHORT1FROMMP(mp2); 739 741 740 742 if(!(fl & KC_CHAR)) { 741 goto RunDefWndProc; 743 //SvL: Test 744 break; 745 // goto RunDefWndProc; 742 746 } 743 747 if(fl & KC_VIRTUALKEY) { 744 vkey = SHORT2FROMMP(mp2); 748 if(virtualKey) 749 vkey = virtualKey; 750 else vkey = SHORT2FROMMP(mp2); 751 chCode = vkey; 745 752 } 746 753 if(fl & KC_KEYUP) { … … 756 763 keyflags |= KEY_DEADKEY; 757 764 } 758 if(win32wnd->MsgChar(SHORT1FROMMP(mp2), CHAR3FROMMP(mp1), CHAR4FROMMP(mp1), virtualKey, keyflags)) { 759 goto RunDefWndProc; 760 } 761 } 762 if(fRunDefWndProc) goto RunDefWndProc; 765 if(win32wnd->MsgChar(chCode, CHAR3FROMMP(mp1), CHAR4FROMMP(mp1), virtualKey, keyflags)) { 766 //SvL: Test 767 // goto RunDefWndProc; 768 769 } 770 } 771 //SvL: Test 772 // if(fRunDefWndProc) goto RunDefWndProc; 763 773 break; 764 774 } -
trunk/src/user32/winmenu.cpp
r1436 r1446 1 /* $Id: winmenu.cpp,v 1. 9 1999-10-25 12:49:20 phallerExp $ */1 /* $Id: winmenu.cpp,v 1.10 1999-10-25 20:17:21 sandervl Exp $ */ 2 2 3 3 /* … … 7 7 * Copyright 1998 Patrick Haller 8 8 * 9 * Parts ported from Wine: (ChangeMenuA/W)9 * Parts ported from Wine: 10 10 * Copyright 1993 Martin Ayotte 11 11 * Copyright 1994 Alexandre Julliard 12 12 * Copyright 1997 Morten Welinder 13 13 * 14 * 15 * TODO: Set/GetMenu(Item)Info only partially implemented 16 * TODO: Memory leak when deleting submenus 17 * TODO: Check error nrs 14 18 * 15 19 * Project Odin Software License can be found in LICENSE.TXT … … 23 27 #include <win32wbase.h> 24 28 #include "oslibmenu.h" 29 #include "oslibwin.h" 25 30 #include <winresmenu.h> 26 31 #include "winmenudef.h" 27 32 28 33 ODINDEBUGCHANNEL(USER32) 29 34 35 //****************************************************************************** 36 //****************************************************************************** 37 void SetInternalMenuInfo(HMENU hMenu) 38 { 39 LPPOPUPMENU lpMenuInfo; 40 41 lpMenuInfo = (LPPOPUPMENU)malloc(sizeof(*lpMenuInfo)); 42 memset(lpMenuInfo, 0, sizeof(*lpMenuInfo)); 43 OSLibWinSetWindowULong(hMenu, OSLIB_QWL_USER, (ULONG)lpMenuInfo); 44 } 45 //****************************************************************************** 46 //****************************************************************************** 47 LPPOPUPMENU GetInternalMenuInfo(HMENU hMenu) 48 { 49 return (LPPOPUPMENU)OSLibWinGetWindowULong(hMenu, OSLIB_QWL_USER); 50 } 51 //****************************************************************************** 52 //****************************************************************************** 53 void DeleteInternalMenuInfo(HMENU hMenu) 54 { 55 LPPOPUPMENU lpMenuInfo; 56 57 lpMenuInfo = (LPPOPUPMENU)OSLibWinGetWindowULong(hMenu, OSLIB_QWL_USER); 58 if(lpMenuInfo) { 59 free(lpMenuInfo); 60 OSLibWinSetWindowULong(hMenu, OSLIB_QWL_USER, 0); 61 } 62 } 63 //****************************************************************************** 64 //****************************************************************************** 65 ODINFUNCTION0(HMENU, CreateMenu) 66 { 67 HMENU hMenu; 68 69 dprintf(("USER32: CreateMenu\n")); 70 71 hMenu = OSLibWinCreateEmptyMenu(); 72 if(hMenu) { 73 SetInternalMenuInfo(hMenu); 74 } 75 else SetLastError(ERROR_INVALID_PARAMETER); //wrong error 76 77 return hMenu; 78 } 79 //****************************************************************************** 80 //****************************************************************************** 81 ODINFUNCTION0(HMENU, CreatePopupMenu) 82 { 83 HMENU hMenu; 84 85 dprintf(("USER32: CreatePopupMenu\n")); 86 87 hMenu = OSLibWinCreateEmptyPopupMenu(); 88 if(hMenu) { 89 SetInternalMenuInfo(hMenu); 90 } 91 else SetLastError(ERROR_INVALID_PARAMETER); //wrong error 92 93 return hMenu; 94 } 30 95 //****************************************************************************** 31 96 //****************************************************************************** … … 37 102 HMENU hMenu; 38 103 39 winres = (Win32MenuRes *)FindResourceA(hinst, lpszMenu, RT_MENUA); 40 if(winres) { 41 //@@@PH 1999/10/25 crash in EFCW, stack corruption 42 hMenu = O32_LoadMenuIndirect((MENUITEMTEMPLATEHEADER *)winres->lockOS2Resource()); 43 delete winres; 44 return hMenu; 45 } 46 return 0; 104 winres = (Win32MenuRes *)FindResourceA(hinst, lpszMenu, RT_MENUA); 105 if(winres) 106 { 107 hMenu = OSLibWinCreateMenu(winres->lockOS2Resource()); 108 if(hMenu) { 109 SetInternalMenuInfo(hMenu); 110 } 111 else SetLastError(ERROR_INVALID_PARAMETER); 112 113 delete winres; 114 return hMenu; 115 } 116 return 0; 47 117 } 48 118 //****************************************************************************** … … 55 125 HMENU hMenu; 56 126 57 winres = (Win32MenuRes *)FindResourceW(hinst, lpszMenu, RT_MENUW); 58 if(winres) { 59 //@@@PH 1999/10/25 crash in EFCW, stack corruption 60 hMenu = O32_LoadMenuIndirect((MENUITEMTEMPLATEHEADER *)winres->lockOS2Resource()); 61 delete winres; 62 return hMenu; 63 } 64 return 0; 127 winres = (Win32MenuRes *)FindResourceW(hinst, lpszMenu, RT_MENUW); 128 if(winres) { 129 hMenu = OSLibWinCreateMenu(winres->lockOS2Resource()); 130 if(hMenu) { 131 SetInternalMenuInfo(hMenu); 132 } 133 else SetLastError(ERROR_INVALID_PARAMETER); 134 135 delete winres; 136 return hMenu; 137 } 138 return 0; 65 139 } 66 140 //****************************************************************************** … … 73 147 HMENU hMenu; 74 148 75 winres = new Win32MenuRes((LPVOID)menuTemplate); 76 if(winres == NULL) 77 return 0; 78 79 hMenu = O32_LoadMenuIndirect((MENUITEMTEMPLATEHEADER *)winres->lockOS2Resource()); 80 delete winres; 81 return (HMENU)winres; 149 winres = new Win32MenuRes((LPVOID)menuTemplate); 150 if(winres == NULL) 151 return 0; 152 153 hMenu = OSLibWinCreateMenu(winres->lockOS2Resource()); 154 if(hMenu) { 155 SetInternalMenuInfo(hMenu); 156 } 157 else SetLastError(ERROR_INVALID_PARAMETER); 158 159 delete winres; 160 return (HMENU)winres; 82 161 } 83 162 //****************************************************************************** … … 89 168 HMENU hMenu; 90 169 91 winres = new Win32MenuRes((LPVOID)menuTemplate); 92 if(winres == NULL) 93 return 0; 94 95 hMenu = O32_LoadMenuIndirect((MENUITEMTEMPLATEHEADER *)winres->lockOS2Resource()); 96 delete winres; 97 return (HMENU)winres; 170 winres = new Win32MenuRes((LPVOID)menuTemplate); 171 if(winres == NULL) 172 return 0; 173 174 hMenu = OSLibWinCreateMenu(winres->lockOS2Resource()); 175 if(hMenu) { 176 SetInternalMenuInfo(hMenu); 177 } 178 else SetLastError(ERROR_INVALID_PARAMETER); 179 180 delete winres; 181 return (HMENU)winres; 98 182 } 99 183 //****************************************************************************** … … 102 186 HMENU, hMenu) 103 187 { 104 return O32_DestroyMenu(hMenu); 188 if(hMenu == 0) 189 { 190 SetLastError(ERROR_INVALID_PARAMETER); 191 return 0; 192 } 193 DeleteInternalMenuInfo(hMenu); 194 return O32_DestroyMenu(hMenu); 105 195 } 106 196 //****************************************************************************** … … 111 201 Win32BaseWindow *window; 112 202 113 window = Win32BaseWindow::GetWindowFromHandle(hwnd); 114 if(!window) 115 { 116 dprintf(("GetMenu, window %x not found", hwnd)); 117 return 0; 118 } 119 120 return window->GetMenu(); 203 window = Win32BaseWindow::GetWindowFromHandle(hwnd); 204 if(!window) 205 { 206 dprintf(("GetMenu, window %x not found", hwnd)); 207 SetLastError(ERROR_INVALID_WINDOW_HANDLE); 208 return 0; 209 } 210 211 return window->GetMenu(); 121 212 } 122 213 //****************************************************************************** … … 128 219 Win32BaseWindow *window; 129 220 130 window = Win32BaseWindow::GetWindowFromHandle(hwnd); 131 if(!window) 132 { 133 dprintf(("SetMenu, window %x not found", hwnd)); 134 return 0; 135 } 136 137 window->SetMenu(hMenu); 138 return TRUE; 221 window = Win32BaseWindow::GetWindowFromHandle(hwnd); 222 if(!window) 223 { 224 dprintf(("SetMenu, window %x not found", hwnd)); 225 SetLastError(ERROR_INVALID_WINDOW_HANDLE); 226 return 0; 227 } 228 229 window->SetMenu(hMenu); 230 return TRUE; 139 231 } 140 232 //****************************************************************************** … … 149 241 HMENU, hMenu) 150 242 { 151 if(hMenu == 0)152 {153 SetLastError(ERROR_INVALID_PARAMETER);154 return 0;155 }156 return OSLibGetMenuItemCount(hMenu);243 if(hMenu == 0) 244 { 245 SetLastError(ERROR_INVALID_PARAMETER); 246 return 0; 247 } 248 return OSLibGetMenuItemCount(hMenu); 157 249 } 158 250 //****************************************************************************** … … 162 254 int, nPos) 163 255 { 164 if(hMenu == 0)165 {166 SetLastError(ERROR_INVALID_PARAMETER);167 return 0;168 }169 return O32_GetMenuItemID(hMenu, nPos);256 if(hMenu == 0) 257 { 258 SetLastError(ERROR_INVALID_PARAMETER); 259 return 0; 260 } 261 return O32_GetMenuItemID(hMenu, nPos); 170 262 } 171 263 //****************************************************************************** … … 176 268 UINT, arg3) 177 269 { 178 if(hMenu == 0)179 {180 SetLastError(ERROR_INVALID_PARAMETER);181 return 0;182 }183 184 return O32_GetMenuState(hMenu, arg2, arg3);270 if(hMenu == 0) 271 { 272 SetLastError(ERROR_INVALID_PARAMETER); 273 return 0; 274 } 275 276 return O32_GetMenuState(hMenu, arg2, arg3); 185 277 } 186 278 //****************************************************************************** … … 193 285 UINT, arg5) 194 286 { 195 if(hMenu == 0)196 {197 SetLastError(ERROR_INVALID_PARAMETER);198 return 0;199 }200 201 return O32_GetMenuString(hMenu, arg2, arg3, arg4, arg5);287 if(hMenu == 0) 288 { 289 SetLastError(ERROR_INVALID_PARAMETER); 290 return 0; 291 } 292 293 return O32_GetMenuString(hMenu, arg2, arg3, arg4, arg5); 202 294 } 203 295 //****************************************************************************** … … 213 305 int rc; 214 306 215 if(hMenu == 0) 216 { 217 SetLastError(ERROR_INVALID_PARAMETER); 218 return 0; 219 } 220 221 rc = O32_GetMenuString(hMenu, idItem, astring, cchMax, fuFlags); 222 free(astring); 223 if(rc) 224 { 225 dprintf(("USER32: OS2GetMenuStringW %s\n", astring)); 226 AsciiToUnicode(astring, lpsz); 227 } 228 else 229 lpsz[0] = 0; 230 231 return(rc); 307 if(hMenu == 0) 308 { 309 SetLastError(ERROR_INVALID_PARAMETER); 310 return 0; 311 } 312 313 rc = O32_GetMenuString(hMenu, idItem, astring, cchMax, fuFlags); 314 free(astring); 315 if(rc) 316 { 317 dprintf(("USER32: OS2GetMenuStringW %s\n", astring)); 318 AsciiToUnicode(astring, lpsz); 319 } 320 else lpsz[0] = 0; 321 322 return(rc); 232 323 } 233 324 //****************************************************************************** … … 240 331 HBITMAP, arg5) 241 332 { 242 dprintf(("USER32: SetMenuItemBitmaps\n"));243 if(hMenu == 0)244 {245 SetLastError(ERROR_INVALID_PARAMETER);246 return 0;247 }248 return O32_SetMenuItemBitmaps(hMenu, arg2, arg3, arg4, arg5);333 dprintf(("USER32: SetMenuItemBitmaps\n")); 334 if(hMenu == 0) 335 { 336 SetLastError(ERROR_INVALID_PARAMETER); 337 return 0; 338 } 339 return O32_SetMenuItemBitmaps(hMenu, arg2, arg3, arg4, arg5); 249 340 } 250 341 //****************************************************************************** … … 254 345 int, arg2) 255 346 { 256 if(hMenu == 0)257 {258 SetLastError(ERROR_INVALID_PARAMETER);259 return 0;260 }261 262 return O32_GetSubMenu(hMenu, arg2);347 if(hMenu == 0) 348 { 349 SetLastError(ERROR_INVALID_PARAMETER); 350 return 0; 351 } 352 353 return O32_GetSubMenu(hMenu, arg2); 263 354 } 264 355 //****************************************************************************** … … 268 359 BOOL, bRevert) 269 360 { 270 Win32BaseWindow *window;271 272 window = Win32BaseWindow::GetWindowFromHandle(hSystemWindow);273 if(!window)274 {275 dprintf(("GetSystemMenu, window %x not found", hSystemWindow));276 return 0;277 }278 279 return O32_GetSystemMenu(window->getOS2FrameWindowHandle(), bRevert);361 Win32BaseWindow *window; 362 363 window = Win32BaseWindow::GetWindowFromHandle(hSystemWindow); 364 if(!window) 365 { 366 dprintf(("GetSystemMenu, window %x not found", hSystemWindow)); 367 return 0; 368 } 369 370 return O32_GetSystemMenu(window->getOS2FrameWindowHandle(), bRevert); 280 371 } 281 372 //****************************************************************************** … … 300 391 Win32BaseWindow *window; 301 392 302 window = Win32BaseWindow::GetWindowFromHandle(arg6); 303 if(!window) 304 { 305 dprintf(("TrackPopupMenu, window %x not found", arg6)); 306 return 0; 307 } 308 dprintf(("USER32: TrackPopupMenu\n")); 309 if(hMenu == 0) 310 { 311 SetLastError(ERROR_INVALID_PARAMETER); 312 return 0; 313 } 314 return O32_TrackPopupMenu(hMenu, arg2, arg3, arg4, arg5, window->getOS2WindowHandle(), 315 arg7); 393 window = Win32BaseWindow::GetWindowFromHandle(arg6); 394 if(!window) 395 { 396 dprintf(("TrackPopupMenu, window %x not found", arg6)); 397 SetLastError(ERROR_INVALID_WINDOW_HANDLE); 398 return 0; 399 } 400 dprintf(("USER32: TrackPopupMenu\n")); 401 if(hMenu == 0) 402 { 403 SetLastError(ERROR_INVALID_PARAMETER); 404 return 0; 405 } 406 return O32_TrackPopupMenu(hMenu, arg2, arg3, arg4, arg5, window->getOS2WindowHandle(), 407 arg7); 316 408 } 317 409 //****************************************************************************** … … 328 420 Win32BaseWindow *window; 329 421 330 window = Win32BaseWindow::GetWindowFromHandle(hwnd); 331 if(!window) 332 { 333 dprintf(("TrackPopupMenu, window %x not found", hwnd)); 334 return 0; 335 } 336 337 dprintf(("USER32: TrackPopupMenuEx, not completely implemented\n")); 338 if(lpPM->cbSize != 0) 339 rect = &lpPM->rcExclude; 340 341 if(hMenu == 0) 342 { 343 SetLastError(ERROR_INVALID_PARAMETER); 344 return 0; 345 } 346 return O32_TrackPopupMenu(hMenu, flags, X, Y, 0, window->getOS2WindowHandle(), rect); 422 window = Win32BaseWindow::GetWindowFromHandle(hwnd); 423 if(!window) 424 { 425 dprintf(("TrackPopupMenu, window %x not found", hwnd)); 426 SetLastError(ERROR_INVALID_WINDOW_HANDLE); 427 return 0; 428 } 429 430 dprintf(("USER32: TrackPopupMenuEx, not completely implemented\n")); 431 if(lpPM->cbSize != 0) 432 rect = &lpPM->rcExclude; 433 434 if(hMenu == 0) 435 { 436 SetLastError(ERROR_INVALID_PARAMETER); 437 return 0; 438 } 439 return O32_TrackPopupMenu(hMenu, flags, X, Y, 0, window->getOS2WindowHandle(), rect); 347 440 } 348 441 //****************************************************************************** … … 412 505 } 413 506 return O32_CheckMenuItem(hMenu, arg2, arg3); 414 }415 //******************************************************************************416 //******************************************************************************417 ODINFUNCTION0(HMENU, CreateMenu)418 {419 dprintf(("USER32: CreateMenu\n"));420 return O32_CreateMenu();421 }422 //******************************************************************************423 //******************************************************************************424 ODINFUNCTION0(HMENU, CreatePopupMenu)425 {426 dprintf(("USER32: CreateMenu\n"));427 return O32_CreatePopupMenu();428 507 } 429 508 //****************************************************************************** … … 587 666 DWORD, dwContextHelpId) 588 667 { 589 dprintf(("USER32: OS2SetMenuContextHelpId, not implemented\n")); 590 return(TRUE); 668 POPUPMENU *menu; 669 670 menu = GetInternalMenuInfo(hMenu); 671 if(menu == NULL) { 672 dprintf(("USER32: SetMenuContextHelpId(%x) No POPUPMENU structure found!", hMenu)); 673 SetLastError(ERROR_INVALID_PARAMETER); 674 return FALSE; 675 } 676 dprintf(("USER32: SetMenuContextHelpId %x %d", hMenu, dwContextHelpId)); 677 menu->dwContextHelpID = dwContextHelpId; 678 return(TRUE); 591 679 } 592 680 //****************************************************************************** … … 595 683 HMENU, hMenu) 596 684 { 597 dprintf(("USER32: OS2GetMenuContextHelpId, not implemented\n")); 598 return(0); 685 POPUPMENU *menu; 686 687 menu = GetInternalMenuInfo(hMenu); 688 if(menu == NULL) { 689 dprintf(("USER32: GetMenuContextHelpId(%x) No POPUPMENU structure found!", hMenu)); 690 SetLastError(ERROR_INVALID_PARAMETER); 691 return 0; 692 } 693 dprintf(("USER32: GetMenuContextHelpId %x %d", hMenu, menu->dwContextHelpID)); 694 return menu->dwContextHelpID; 599 695 } 600 696 //****************************************************************************** … … 660 756 UINT, par1, 661 757 BOOL, par2, 662 const MENUITEMINFOA *, lpMenuItemInfo) 663 { 664 dprintf(("USER32: SetMenuItemInfoA, faked\n")); 665 return(TRUE); 758 const MENUITEMINFOA *, lpmii) 759 { 760 dprintf(("USER32: SetMenuItemInfoA faked %x", hMenu)); 761 762 if (!hMenu) { 763 SetLastError(ERROR_INVALID_PARAMETER); 764 return FALSE; 765 } 766 return TRUE; 666 767 } 667 768 /***************************************************************************** … … 695 796 fByPosition, 696 797 (const MENUITEMINFOA *)lpmmi)); 697 }698 //******************************************************************************699 //******************************************************************************700 ODINFUNCTION3(BOOL, SetMenuDefaultItem,701 HMENU, hMenu,702 UINT, uItem,703 UINT, fByPos)704 {705 dprintf(("USER32: SetMenuDefaultItem, faked\n"));706 return(TRUE);707 }708 //******************************************************************************709 //******************************************************************************710 ODINFUNCTION4(BOOL, GetMenuItemInfoA,711 HMENU, hMenu,712 UINT, uItem,713 BOOL, aBool,714 MENUITEMINFOA *, lpMenuItemInfo)715 {716 dprintf(("USER32: GetMenuItemInfoA, faked\n"));717 return(TRUE);718 798 } 719 799 /***************************************************************************** … … 744 824 return (-1); 745 825 } 746 747 826 //****************************************************************************** 827 //****************************************************************************** 828 ODINFUNCTION3(BOOL, SetMenuDefaultItem, 829 HMENU, hMenu, 830 UINT, uItem, 831 UINT, fByPos) 832 { 833 dprintf(("USER32: SetMenuDefaultItem, faked\n")); 834 return(TRUE); 835 } 836 //****************************************************************************** 837 //****************************************************************************** 838 BOOL GetMenuItemInfoAW(HMENU hMenu, UINT uItem, BOOL byPos, MENUITEMINFOA *lpmii, BOOL unicode) 839 { 840 if(byPos) { 841 uItem = GetMenuItemID(hMenu, uItem); 842 } 843 if(GetMenuState(hMenu, uItem, MF_BYCOMMAND) == -1) { 844 //item doesn't exist 845 dprintf(("USER32: GetMenuItemInfoAW %x item %d doesn't exist", hMenu, uItem)); 846 SetLastError(ERROR_INVALID_PARAMETER); 847 return FALSE; 848 } 849 if (lpmii->fMask & MIIM_TYPE) 850 { 851 lpmii->fType = GetMenuState(hMenu, uItem, MF_BYCOMMAND); //not correct 852 // lpmii->fType = menu->fType; 853 if (unicode) { 854 lpmii->cch = GetMenuStringW(hMenu, uItem, (LPWSTR)lpmii->dwTypeData, lpmii->cch, MF_BYCOMMAND); 855 } 856 else { 857 lpmii->cch = GetMenuStringA(hMenu, uItem, (LPSTR)lpmii->dwTypeData, lpmii->cch, MF_BYCOMMAND); 858 } 859 //TODO: 860 #if 0 861 switch (MENU_ITEM_TYPE(menu->fType)) { 862 case MF_STRING: 863 if (menu->text && lpmii->dwTypeData && lpmii->cch) { 864 if (unicode) { 865 lstrcpynAtoW((LPWSTR) lpmii->dwTypeData, menu->text, lpmii->cch); 866 lpmii->cch = lstrlenW((LPWSTR)menu->text); 867 } 868 else { 869 lstrcpynA(lpmii->dwTypeData, menu->text, lpmii->cch); 870 lpmii->cch = lstrlenA(menu->text); 871 } 872 } 873 break; 874 case MF_OWNERDRAW: 875 case MF_BITMAP: 876 lpmii->dwTypeData = menu->text; 877 /* fall through */ 878 default: 879 lpmii->cch = 0; 880 } 881 #endif 882 } 883 884 if (lpmii->fMask & MIIM_STRING) { 885 if (unicode) { 886 lpmii->cch = GetMenuStringW(hMenu, uItem, (LPWSTR)lpmii->dwTypeData, lpmii->cch, MF_BYCOMMAND); 887 } 888 else { 889 lpmii->cch = GetMenuStringA(hMenu, uItem, (LPSTR)lpmii->dwTypeData, lpmii->cch, MF_BYCOMMAND); 890 } 891 } 892 893 //TODO: 894 #if 0 895 if (lpmii->fMask & MIIM_FTYPE) 896 lpmii->fType = menu->fType; 897 898 if (lpmii->fMask & MIIM_BITMAP) 899 lpmii->hbmpItem = menu->hbmpItem; 900 #endif 901 902 if (lpmii->fMask & MIIM_STATE) 903 lpmii->fState = GetMenuState(hMenu, uItem, MF_BYCOMMAND); 904 905 if (lpmii->fMask & MIIM_ID) 906 lpmii->wID = uItem; 907 908 //TODO: 909 #if 1 910 lpmii->hSubMenu = 0; 911 lpmii->hbmpChecked = 0; 912 lpmii->hbmpUnchecked = 0; 913 lpmii->dwItemData = 0; 914 #else 915 if (lpmii->fMask & MIIM_SUBMENU) 916 lpmii->hSubMenu = GetSubMenu(hMenu, uItem); //need index, not id 917 918 if (lpmii->fMask & MIIM_CHECKMARKS) { 919 lpmii->hbmpChecked = menu->hCheckBit; 920 lpmii->hbmpUnchecked = menu->hUnCheckBit; 921 } 922 if (lpmii->fMask & MIIM_DATA) 923 lpmii->dwItemData = menu->dwItemData; 924 #endif 925 926 return(FALSE); 927 } 928 //****************************************************************************** 929 //****************************************************************************** 930 ODINFUNCTION4(BOOL, GetMenuItemInfoA, 931 HMENU, hMenu, 932 UINT, uItem, 933 BOOL, byPos, 934 MENUITEMINFOA *, lpMenuItemInfo) 935 { 936 return GetMenuItemInfoAW(hMenu, uItem, byPos, lpMenuItemInfo, FALSE); 937 } 748 938 /***************************************************************************** 749 939 * Function : GetMenuItemInfoW … … 763 953 HMENU, hMenu, 764 954 UINT, uItem, 765 BOOL, fByPosition, 766 MENUITEMINFOW *, lpmii) 767 { 768 dprintf(("USER32:GetMenuItemInfoW (%08xh,%08xh,%u,%08x) not implemented.\n", 769 hMenu, 770 uItem, 771 fByPosition, 772 lpmii)); 773 774 return(GetMenuItemInfoA(hMenu, 775 uItem, 776 fByPosition, 777 (MENUITEMINFOA *)lpmii)); 778 } 779 780 955 BOOL, byPos, 956 MENUITEMINFOW *, lpMenuItemInfo) 957 { 958 return GetMenuItemInfoAW(hMenu, uItem, byPos, (MENUITEMINFOA*)lpMenuItemInfo, TRUE); 959 } 781 960 /***************************************************************************** 782 961 * Function : GetMenuItemRect … … 911 1090 LPMENUINFO, lpmi) 912 1091 { 913 dprintf(("USER32: GetMenuInfo(%08xh,%08xh) not implemented.\n", 914 hMenu, 915 lpmi)); 916 917 memset(lpmi,0,sizeof(MENUINFO)); 918 return 0; 919 } 920 #if 0 921 POPUPMENU *menu; 922 923 TRACE("(0x%04x %p)\n", hMenu, lpmi); 924 925 if (lpmi && (menu = (POPUPMENU *) USER_HEAP_LIN_ADDR(hMenu))) 926 { 927 928 if (lpmi->fMask & MIM_BACKGROUND) 929 lpmi->hbrBack = menu->hbrBack; 930 931 if (lpmi->fMask & MIM_HELPID) 932 lpmi->dwContextHelpID = menu->dwContextHelpID; 933 934 if (lpmi->fMask & MIM_MAXHEIGHT) 935 lpmi->cyMax = menu->cyMax; 936 937 if (lpmi->fMask & MIM_MENUDATA) 938 lpmi->dwMenuData = menu->dwMenuData; 939 940 if (lpmi->fMask & MIM_STYLE) 941 lpmi->dwStyle = menu->dwStyle; 942 943 return TRUE; 944 } 1092 POPUPMENU *menu; 1093 1094 menu = GetInternalMenuInfo(hMenu); 1095 if(menu == NULL) { 1096 dprintf(("USER32: GetMenuInfo(%08xh,%08xh) No POPUPMENU structure found!", hMenu, lpmi)); 1097 SetLastError(ERROR_INVALID_PARAMETER); 1098 return FALSE; 1099 } 1100 dprintf(("USER32: GetMenuInfo(%08xh,%08xh)", hMenu, lpmi)); 1101 1102 if (lpmi) 1103 { 1104 if (lpmi->fMask & MIM_BACKGROUND) 1105 lpmi->hbrBack = menu->hbrBack; 1106 1107 if (lpmi->fMask & MIM_HELPID) 1108 lpmi->dwContextHelpID = menu->dwContextHelpID; 1109 1110 if (lpmi->fMask & MIM_MAXHEIGHT) 1111 lpmi->cyMax = menu->cyMax; 1112 1113 if (lpmi->fMask & MIM_MENUDATA) 1114 lpmi->dwMenuData = menu->dwMenuData; 1115 1116 if (lpmi->fMask & MIM_STYLE) 1117 lpmi->dwStyle = menu->dwStyle; 1118 1119 return TRUE; 1120 } 1121 SetLastError(ERROR_INVALID_PARAMETER); 945 1122 return FALSE; 946 1123 } 947 #endif948 949 950 1124 /***************************************************************************** 951 1125 * Function : SetMenuInfo … … 967 1141 LPCMENUINFO, lpmi) 968 1142 { 969 dprintf(("USER32: SetMenuInfo(%08xh,%08xh) not implemented.\n", 970 hMenu, 971 lpmi)); 972 973 return 0; 974 } 975 #if 0 976 POPUPMENU *menu; 977 978 TRACE("(0x%04x %p)\n", hMenu, lpmi); 979 980 981 982 if (lpmi && (lpmi->cbSize==sizeof(MENUINFO)) && (menu=(POPUPMENU*)USER_HEAP_LIN_ADDR(hMenu))) 983 { 984 985 if (lpmi->fMask & MIM_BACKGROUND) 986 menu->hbrBack = lpmi->hbrBack; 987 988 if (lpmi->fMask & MIM_HELPID) 989 menu->dwContextHelpID = lpmi->dwContextHelpID; 990 991 if (lpmi->fMask & MIM_MAXHEIGHT) 992 menu->cyMax = lpmi->cyMax; 993 994 if (lpmi->fMask & MIM_MENUDATA) 995 menu->dwMenuData = lpmi->dwMenuData; 996 997 if (lpmi->fMask & MIM_STYLE) 998 menu->dwStyle = lpmi->dwStyle; 999 1000 return TRUE; 1001 } 1143 POPUPMENU *menu; 1144 1145 menu = GetInternalMenuInfo(hMenu); 1146 if(menu == NULL) { 1147 dprintf(("USER32: SetMenuInfo(%08xh,%08xh) No POPUPMENU structure found!", hMenu, lpmi)); 1148 SetLastError(ERROR_INVALID_PARAMETER); 1149 return FALSE; 1150 } 1151 1152 dprintf(("USER32: SetMenuInfo(%08xh,%08xh)", hMenu, lpmi)); 1153 1154 if (lpmi && (lpmi->cbSize==sizeof(MENUINFO))) 1155 { 1156 if (lpmi->fMask & MIM_BACKGROUND) 1157 menu->hbrBack = lpmi->hbrBack; 1158 1159 if (lpmi->fMask & MIM_HELPID) 1160 menu->dwContextHelpID = lpmi->dwContextHelpID; 1161 1162 if (lpmi->fMask & MIM_MAXHEIGHT) 1163 menu->cyMax = lpmi->cyMax; 1164 1165 if (lpmi->fMask & MIM_MENUDATA) 1166 menu->dwMenuData = lpmi->dwMenuData; 1167 1168 if (lpmi->fMask & MIM_STYLE) 1169 menu->dwStyle = lpmi->dwStyle; 1170 1171 return TRUE; 1172 } 1173 SetLastError(ERROR_INVALID_PARAMETER); 1002 1174 return FALSE; 1003 1175 } 1004 #endif 1005 1006 1176 //****************************************************************************** 1177 //****************************************************************************** 1178
Note:
See TracChangeset
for help on using the changeset viewer.