Ignore:
Timestamp:
Jun 27, 1999, 11:59:40 PM (26 years ago)
Author:
sandervl
Message:

Dialog control proc override bugfix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/wndproc.cpp

    r225 r232  
    1 /* $Id: wndproc.cpp,v 1.12 1999-06-27 16:23:24 sandervl Exp $ */
     1/* $Id: wndproc.cpp,v 1.13 1999-06-27 21:59:40 sandervl Exp $ */
    22
    33/*
     
    6969//******************************************************************************
    7070Win32WindowProc::Win32WindowProc(WNDPROC pUserCallback)
    71                         : hwnd(0), next(NULL), os2dlg(NULL), win32class(0)
     71                        : hwnd(0), next(NULL), os2dlg(NULL), win32class(0), pOS2Callback(NULL)
    7272{
    7373  //Insert it in front of the rest
     
    8181//******************************************************************************
    8282//******************************************************************************
     83Win32WindowProc::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//******************************************************************************
    83101Win32WindowProc::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)
    85103{
    86104  //Insert it in front of the rest
     
    96114//******************************************************************************
    97115Win32WindowProc::Win32WindowProc(HINSTANCE hinst, LPCSTR lpszClassName)
    98                         : hwnd(0), next(NULL), os2dlg(NULL)
     116                        : hwnd(0), next(NULL), os2dlg(NULL), pOS2Callback(NULL)
    99117{
    100118 WNDCLASSA wc;
     
    172190WNDPROC_O32 Win32WindowProc::GetOS2Callback()
    173191{
    174   return(WndCallback);
     192  return(OS2ToWin32Callback);
     193}
     194//******************************************************************************
     195//******************************************************************************
     196WNDPROC Win32WindowProc::GetWin32ToOS2Callback()
     197{
     198  return(Win32ToOS2Callback);
    175199}
    176200//******************************************************************************
     
    281305//#define DEBUG1
    282306//******************************************************************************
    283 LRESULT EXPENTRY_O32 WndCallback(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
     307LRESULT EXPENTRY_O32 OS2ToWin32Callback(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
    284308{
    285309 Win32WindowProc *curwnd;
     
    374398                wnd = new Win32WindowProc(wclass->GetClassCallback(szClass));
    375399                wnd->SetWindowHandle(hwnd);
    376                 rc = WndCallback(hwnd, Msg, wParam, lParam);
     400                rc = OS2ToWin32Callback(hwnd, Msg, wParam, lParam);
    377401                RestoreOS2TIB();
    378402                return rc;
     
    385409//******************************************************************************
    386410//******************************************************************************
     411LRESULT 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//******************************************************************************
    387423Win32WindowProc *Win32WindowProc::windows = NULL;
Note: See TracChangeset for help on using the changeset viewer.