/* $Id: defwndproc.cpp,v 1.17 2002-02-11 16:46:00 sandervl Exp $ */

/*
 * Win32 default window API functions for OS/2
 *
 * Copyright 1998 Sander van Leeuwen
 *
 *
 * TODO: Incomplete default window handlers + incorrect handler (defframe)
 *
 * Project Odin Software License can be found in LICENSE.TXT
 *
 */
#include "user32.h"
#include "syscolor.h"
#include "win32wbase.h"
#include "win32dlg.h"

#define DBG_LOCALLOG	DBG_defwndproc
#include "dbglocal.h"

//******************************************************************************
//******************************************************************************
LRESULT WIN32API DefWindowProcA(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
  Win32BaseWindow *window;
  LRESULT result;

    window = Win32BaseWindow::GetWindowFromHandle(hwnd);
    if(!window) {
        dprintf(("DefWindowProcA, window %x not found", hwnd));
        return 0;
    }
    result = window->DefWindowProcA(Msg, wParam, lParam);
    RELEASE_WNDOBJ(window);
    return result;
}
//******************************************************************************
//******************************************************************************
LRESULT WIN32API DefWindowProcW(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
  Win32BaseWindow *window;
  LRESULT result;

    window = Win32BaseWindow::GetWindowFromHandle(hwnd);
    if(!window) {
        dprintf(("DefWindowProcW, window %x not found", hwnd));
        return 0;
    }
    result = window->DefWindowProcW(Msg, wParam, lParam);
    RELEASE_WNDOBJ(window);
    return result;
}
//******************************************************************************
//******************************************************************************
LRESULT WIN32API DefDlgProcA(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
  Win32Dialog *dialog;
  LRESULT result;

    dialog = (Win32Dialog *)Win32BaseWindow::GetWindowFromHandle(hwnd);
//TODO: Wrong check?
//    if(!dialog || !dialog->IsDialog()) {
    if(!dialog) {
        dprintf(("DefDlgProcA, window %x not found", hwnd));
        return 0;
    }
    if(dialog->IsDialog()) 
    	 result = dialog->DefDlgProcA(Msg, wParam, lParam);
    else result = dialog->DefWindowProcA(Msg, wParam, lParam);
    RELEASE_WNDOBJ(dialog);
    return result;
}
//******************************************************************************
//******************************************************************************
LRESULT WIN32API DefDlgProcW(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
  Win32Dialog *dialog;
  LRESULT result;

    dialog = (Win32Dialog *)Win32BaseWindow::GetWindowFromHandle(hwnd);
//TODO: Wrong check?
//    if(!dialog || !dialog->IsDialog()) {
    if(!dialog) {
        dprintf(("DefDlgProcW, window %x not found", hwnd));
        return 0;
    }
    if(dialog->IsDialog()) 
    	 result = dialog->DefDlgProcW(Msg, wParam, lParam);
    else result = dialog->DefWindowProcW(Msg, wParam, lParam);
    RELEASE_WNDOBJ(dialog);
    return result;
}
//******************************************************************************
//******************************************************************************
