- Timestamp:
- Jun 27, 1999, 11:59:40 PM (26 years ago)
- Location:
- trunk/src/user32
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/Makefile
r225 r232 1 # $Id: Makefile,v 1.1 0 1999-06-27 16:23:22sandervl Exp $1 # $Id: Makefile,v 1.11 1999-06-27 21:59:40 sandervl Exp $ 2 2 3 3 # … … 56 56 dde.obj: dde.cpp 57 57 hook.obj: hook.cpp hooks.h 58 defwndproc.obj: defwndproc.cpp syscolor.h 58 defwndproc.obj: defwndproc.cpp syscolor.h $(PDWIN32_INCLUDE)\wndproc.h 59 59 hooks.obj: hooks.cpp hooks.h 60 60 dlgconvert.obj: dlgconvert.cpp \ -
trunk/src/user32/setwindow.cpp
r228 r232 1 /* $Id: setwindow.cpp,v 1. 4 1999-06-27 17:01:46sandervl Exp $ */1 /* $Id: setwindow.cpp,v 1.5 1999-06-27 21:59:40 sandervl Exp $ */ 2 2 3 3 /* … … 23 23 24 24 dprintf(("USER32: SetWindowLongA %X %d %X\n", hwnd, nIndex, arg3)); 25 if(nIndex == GWL_WNDPROC || nIndex == DWL_DLGPROC) { 25 if(nIndex == GWL_WNDPROC || nIndex == DWL_DLGPROC) 26 { 26 27 Win32WindowProc *wndproc = Win32WindowProc::FindProc(hwnd); 27 if(wndproc == NULL) {//created with system class and app wants to change the handler 28 dprintf(("USER32: ERROR: SetWindowLong new WindowProc for system class\n")); 29 //SvL: 26/06/99 Should no longer be possible 30 DebugInt3(); 31 return(0); 28 if(wndproc == NULL) 29 {//dialog control that has was automatically created 30 dprintf(("USER32: SetWindowLong create new Win32 to OS/2 callback\n")); 31 wndproc = new Win32WindowProc((WNDPROC)arg3, (WNDPROC_O32)O32_GetWindowLong(hwnd, nIndex)); 32 if(wndproc) { 33 O32_SetWindowLong(hwnd, nIndex, (LONG)wndproc->GetOS2Callback()); 34 return (LONG)wndproc->GetWin32ToOS2Callback(); 35 } 36 else DebugInt3(); 32 37 } 33 38 else { 34 39 if(!(nIndex == DWL_DLGPROC && wndproc->IsWindow() == TRUE)) { 35 rc = (LONG)wndproc->GetWin32Callback(); 36 dprintf(("USER32: SetWindowLong change WindowProc %X to %X\n", rc, arg3)); 37 wndproc->SetWin32Callback((WNDPROC)arg3); 40 rc = (LONG)wndproc->GetWin32Callback(); 41 if(rc == 0) { 42 //window proc that was just created with os/2 callback only 43 rc = (LONG) wndproc->GetWin32ToOS2Callback(); 44 } 45 dprintf(("USER32: SetWindowLong change WindowProc %X to %X\n", rc, arg3)); 46 wndproc->SetWin32Callback((WNDPROC)arg3); 38 47 O32_SetWindowLong(hwnd, nIndex, (LONG)wndproc->GetOS2Callback()); 39 return(rc); 40 } 41 //else window that accesses it's normal window data 48 return(rc); 49 } 42 50 } 43 51 } … … 74 82 LONG rc; 75 83 76 dprintf(("USER32: GetWindowLong %X %d\n", hwnd, nIndex)); 84 if(nIndex == GWL_WNDPROC || nIndex == DWL_DLGPROC) 85 { 86 dprintf(("USER32: GetWindowLong %X %d\n", hwnd, nIndex)); 77 87 78 if(nIndex == GWL_WNDPROC || nIndex == DWL_DLGPROC) {79 Win32WindowProc *window = Win32WindowProc::FindProc(hwnd);80 if(window && !(nIndex == DWL_DLGPROC && window->IsWindow() == TRUE)) { 81 return (LONG)window->GetWin32Callback();88 Win32WindowProc *wndproc = Win32WindowProc::FindProc(hwnd); 89 if(wndproc) { 90 if(!(nIndex == DWL_DLGPROC && wndproc->IsWindow() == TRUE)) 91 return (LONG)wndproc->GetWin32Callback(); 82 92 } 93 else {//probably a dialog box control 94 dprintf(("USER32: GetWindowLong create new Win32 to OS/2 callback\n")); 95 wndproc = new Win32WindowProc(0, (WNDPROC_O32)O32_GetWindowLong(hwnd, nIndex)); 96 if(wndproc) 97 return (LONG)wndproc->GetWin32ToOS2Callback(); 98 } 83 99 } 84 100 rc = O32_GetWindowLong(hwnd, nIndex); … … 87 103 if(nIndex == GWL_ID && rc == 0xffff) 88 104 rc = 0xffffffff; 105 dprintf(("USER32: GetWindowLong %X %d returned %x\n", hwnd, nIndex, rc)); 89 106 return(rc); 90 107 } -
trunk/src/user32/wndproc.cpp
r225 r232 1 /* $Id: wndproc.cpp,v 1.1 2 1999-06-27 16:23:24sandervl Exp $ */1 /* $Id: wndproc.cpp,v 1.13 1999-06-27 21:59:40 sandervl Exp $ */ 2 2 3 3 /* … … 69 69 //****************************************************************************** 70 70 Win32WindowProc::Win32WindowProc(WNDPROC pUserCallback) 71 : hwnd(0), next(NULL), os2dlg(NULL), win32class(0) 71 : hwnd(0), next(NULL), os2dlg(NULL), win32class(0), pOS2Callback(NULL) 72 72 { 73 73 //Insert it in front of the rest … … 81 81 //****************************************************************************** 82 82 //****************************************************************************** 83 Win32WindowProc::Win32WindowProc(WNDPROC pUserCallback, WNDPROC_O32 pOS2Callback) 84 : hwnd(0), next(NULL), os2dlg(NULL), win32class(0), pOS2Callback(NULL) 85 { 86 //Insert it in front of the rest 87 next = windows; 88 windows = this; 89 threadid = (DWORD)GetCurrentThreadId(); 90 91 pCallback = pUserCallback; //can be NULL (to be set in SetWindowLong call) 92 fIsWindow = TRUE; 93 if(pOS2Callback == NULL) { 94 dprintf(("Win32WindowProc ctor: pOS2Callback == NULL")); 95 DebugInt3(); 96 } 97 this->pOS2Callback = pOS2Callback; 98 } 99 //****************************************************************************** 100 //****************************************************************************** 83 101 Win32WindowProc::Win32WindowProc(WNDPROC pUserCallback, DLGTEMPLATE *os2dlg) 84 : hwnd(0), next(NULL), os2dlg(NULL), win32class(0) 102 : hwnd(0), next(NULL), os2dlg(NULL), win32class(0), pOS2Callback(NULL) 85 103 { 86 104 //Insert it in front of the rest … … 96 114 //****************************************************************************** 97 115 Win32WindowProc::Win32WindowProc(HINSTANCE hinst, LPCSTR lpszClassName) 98 : hwnd(0), next(NULL), os2dlg(NULL) 116 : hwnd(0), next(NULL), os2dlg(NULL), pOS2Callback(NULL) 99 117 { 100 118 WNDCLASSA wc; … … 172 190 WNDPROC_O32 Win32WindowProc::GetOS2Callback() 173 191 { 174 return(WndCallback); 192 return(OS2ToWin32Callback); 193 } 194 //****************************************************************************** 195 //****************************************************************************** 196 WNDPROC Win32WindowProc::GetWin32ToOS2Callback() 197 { 198 return(Win32ToOS2Callback); 175 199 } 176 200 //****************************************************************************** … … 281 305 //#define DEBUG1 282 306 //****************************************************************************** 283 LRESULT EXPENTRY_O32 WndCallback(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)307 LRESULT EXPENTRY_O32 OS2ToWin32Callback(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam) 284 308 { 285 309 Win32WindowProc *curwnd; … … 374 398 wnd = new Win32WindowProc(wclass->GetClassCallback(szClass)); 375 399 wnd->SetWindowHandle(hwnd); 376 rc = WndCallback(hwnd, Msg, wParam, lParam);400 rc = OS2ToWin32Callback(hwnd, Msg, wParam, lParam); 377 401 RestoreOS2TIB(); 378 402 return rc; … … 385 409 //****************************************************************************** 386 410 //****************************************************************************** 411 LRESULT EXPENTRY Win32ToOS2Callback(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam) 412 { 413 Win32WindowProc *curwnd = Win32WindowProc::FindProc(hwnd); 414 if(curwnd && curwnd->pOS2Callback) { 415 return curwnd->pOS2Callback(hwnd, Msg, wParam, lParam); 416 } 417 else DebugInt3(); 418 419 return 0; 420 } 421 //****************************************************************************** 422 //****************************************************************************** 387 423 Win32WindowProc *Win32WindowProc::windows = NULL;
Note:
See TracChangeset
for help on using the changeset viewer.