'
' ----------------------------------------------------------------------------
' SET NEW WINDOW PROCEDURE     MANY CALLBACK     TURN AROUND        by Jacques
'
' NO INDEX, AS MANY NEW WNDPROC AS YOU WANT                       MUCH EASIERS
'
' August 13th, 2006
' ----------------------------------------------------------------------------
'
$TYPECHECK ON
$ESCAPECHARS ON
$INCLUDE "rapidq.inc"

$Include "NewWndProc.inc"   ' or $Include "CallBackAll.Inc"
'
DECLARE FUNCTION CallWindowProc LIB "USER32" ALIAS "CallWindowProcA" (StringBaseProc AS LONG, hWnd AS LONG, uMsg AS LONG, wParam AS LONG, lParam AS LONG) AS LONG
'
CONST WM_CHAR = &H102
'
CREATE MainForm AS QFORM
    Caption = "NewWndProc Test"
    Font.Name = "courier"
    Height = 450
    Center
    CREATE RichEdit1 AS QRICHEDIT
        Height = 200
        Align = alTop
        Text = "ALL INPUT TO UPPERCASE"
    END CREATE
    CREATE RichEdit2 AS QRICHEDIT
        Align = alClient
        Text = "all input to lowercase"
   END CREATE
END CREATE
'
DefInt OldWndProc1, OldWndProc2
'
FUNCTION RichEditCallback1(hWnd AS LONG, uMsg AS LONG, wParam AS LONG, lParam AS LONG) As Long
    If (uMsg = WM_CHAR And wParam > 96 And wParam < 123) Then  wParam = wParam - 32   ' to uppercase
    Result = CallWindowProc(OldWndProc1, hWnd, uMsg, wParam, lParam)
END FUNCTION
'
FUNCTION RichEditCallback2(hWnd AS LONG, uMsg AS LONG, wParam AS LONG, lParam AS LONG) As Long
    If (uMsg = WM_CHAR And wParam > 64 And wParam < 91) Then wParam = wParam + 32    ' to lowercase
    Result = CallWindowProc(OldWndProc2, hWnd, uMsg, wParam, lParam)
END FUNCTION
'
DefInt iTmpBind
Bind iTmpBind To RichEditCallback1
OldWndProc1 = SetNewWndProc (RichEdit1.Handle, iTmpBind)
'
Bind iTmpBind To RichEditCallback2
OldWndProc2 = SetNewWndProc (RichEdit2.Handle, iTmpBind)
'
MainForm.ShowModal
Application.Terminate
' ----------------------------------------------------------------------------
'
