Announcement

Collapse

Forum Guidelines

This forum is for finished source code that is working properly. If you have questions about this or any other source code, please post it in one of the Discussion Forums, not here.
See more
See less

MsgViewer

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • MsgViewer



    Code:
    'MessageViewer.bas
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    'Here's a little windows message viewer, based on Semen Matusovski's WriteConsole code,
    'also using Jim Huguley's message list, it's been very helpful to me ..maybe someone would like...
    'also has a little demo to play with, using some of Edwin Knoppert's NCCALCSIZE_PARAMS code...
    'resize dialog boxes to see NCCALCSIZE msg's....
    'Thanks, All
    'Brad
    
       #COMPILE EXE
       #REGISTER NONE
       #DIM ALL
       #INCLUDE "Win32Api.Inc"
       GLOBAL hDlg2&, hVDsp& ,Msg AS tagMsg
       '================================
    
       DECLARE FUNCTION GetMsg (hndl AS LONG) AS STRING
       DECLARE FUNCTION ShowVar (Var_label$, Var_value&) AS LONG
    
    '________________________________________________________________________________
    'Semen Matusovski's CPrint code:
    
       SUB CPrint (SOut AS STRING)
          STATIC hConsole AS LONG, cWritten AS LONG
          IF hConsole = 0 THEN AllocConsole: hConsole = GetStdHandle(-11&)
          WriteConsole hConsole, BYCOPY sOut + $CRLF, LEN(sOut) + 2, cWritten, BYVAL 0&
       END SUB
    
    '________________________________________________________________________________
       CALLBACK FUNCTION DlgProc3
          STATIC p1 AS LONG, p2 AS LONG, p3 AS LONG, p4 AS LONG ,msgCnt&,NcCapture&,NCmoveDiff&
          DIM pNCC AS NCCALCSIZE_PARAMS PTR
    
          CPrint STR$(msgCnt&)+GetMsg(CBMSG)
          INCR msgCnt&
    
    showVar "hover", CBCTL
    
       SELECT CASE CBMSG
    
           CASE %WM_MOUSEMOVE
              BEEP
       showVar "NCBCTL", CBMSG
    
       CASE %WM_NCCALCSIZE
           IF CBWPARAM = 0 THEN EXIT SELECT
    
           pNCC = CBLPARAM
           showVar "NCCALCSIZE0",@pNCC.rgrc( 0 ).nRight
           showVar "NCCALCSIZEl",@pNCC.rgrc( 1 ).nRight
           showVar "NCCALCSIZE2",@pNCC.rgrc( 2 ).nRight
           showVar "NCCALCSIZE0b",@pNCC.rgrc( 0 ).nBottom
           showVar "NCCALCSIZElb",@pNCC.rgrc( 1 ).nBottom
           showVar "NCCALCSIZE2b",@pNCC.rgrc( 2 ).nBottom
       END SELECT
    
       IF CBMSG = %WM_DESTROY THEN PostQuitMessage 0
       END FUNCTION
    
    
    '________________________________________________________________________________
       CALLBACK FUNCTION DlgProc
          STATIC p1 AS LONG, p2 AS LONG, p3 AS LONG, p4 AS LONG ,msgCnt&,NcCapture&,NCmoveDiff&
          DIM pNCC AS NCCALCSIZE_PARAMS PTR
    
          CPrint STR$(msgCnt&)+GetMsg(CBMSG)
          INCR msgCnt&
    
       SELECT CASE CBMSG
    
       CASE %WM_NCCALCSIZE
           IF CBWPARAM = 0 THEN EXIT SELECT
    
           pNCC = CBLPARAM
           showVar "NCCALCSIZE0",@pNCC.rgrc( 0 ).nRight
           showVar "NCCALCSIZEl",@pNCC.rgrc( 1 ).nRight
           showVar "NCCALCSIZE2",@pNCC.rgrc( 2 ).nRight
           showVar "NCCALCSIZE0b",@pNCC.rgrc( 0 ).nBottom
           showVar "NCCALCSIZElb",@pNCC.rgrc( 1 ).nBottom
           showVar "NCCALCSIZE2b",@pNCC.rgrc( 2 ).nBottom
       END SELECT
    
       IF CBMSG = %WM_DESTROY THEN PostQuitMessage 0
       END FUNCTION
    
        CALLBACK FUNCTION DlgProc2
            IF CBMSG = %WM_DESTROY THEN PostQuitMessage 0
        END FUNCTION
    
    '________________________________________________________________________________
       FUNCTION PBMAIN
          LOCAL hDlg AS LONG ,TextStr$
                  TextStr$ = " An Introduction...New to PowerBASIC? We offer compilers "
    
          DIALOG NEW 0, "Sample Dlg: NCCALCSIZE_PARAMS", , , 300, 200, %WS_CLIPCHILDREN OR %WS_CLIPSIBLINGS _
                        OR %WS_overlappedwindow TO hDlg
          PostMessage hDlg, %WM_USER + 1, 300, 50
          PostMessage hDlg, %WM_USER + 2, 400, 200
          CONTROL ADD BUTTON, hdlg, 101, "Button", 10, 10, 60, 12 ,CALL DlgProc3
          CONTROL ADD TEXTBOX, hDlg, 100, TextStr$, 33, 43, 100, 50, %ES_multiline OR %WS_VSCROLL _
                                             OR %ES_AUTOVSCROLL , %WS_EX_CLIENTEDGE
    
    
          DIALOG NEW hDlg&, "Custom control test1",20,100, 240, 80, %WS_CHILD OR %WS_VISIBLE _
           OR %WS_CLIPCHILDREN OR %WS_VSCROLL OR %WS_thickframe  , %ws_ex_clientedge TO hDlg2&
          CONTROL ADD BUTTON, hDlg2&, 4000, "Button", 5,  20, 50, 14,%bS_NOTIFY,CALL DlgProc3
    
          DIALOG SHOW MODELESS hDlg2&, CALL DlgProc2
    
          DIALOG SHOW MODELESS hDlg CALL DlgProc
    
          WHILE getMessage(Msg, %NULL, 0, 0)
            TranslateMessage Msg
            DispatchMessage Msg
          WEND
    
       END FUNCTION
    
    '________________________________________________________________________________
    'List Cut'n'Pasted from Jim Huguley's "Display Control Messages" code at:
    'MESSAGE [URL=http://www.powerbasic.com/support/forums/Forum7/HTML/000348.html]
    'partial list... more at Jim's post
    
    FUNCTION GetMsg (hndl AS LONG) AS STRING
    SELECT CASE hndl
        CASE %EN_UPDATE
              FUNCTION = " &H0  %EN_UPDATE"
    
        CASE %WM_NULL
             FUNCTION = " &H0  %WM_NULL"
        CASE %WM_CREATE
             FUNCTION = " &H1  %WM_CREATE"
    
        CASE %WM_DESTROY
             FUNCTION = " &H2  %WM_DESTROY"
        CASE %WM_MOVE
             FUNCTION = " &H3  %WM_MOVE"
    
        CASE %WM_SIZE
             FUNCTION = " &H5  %WM_SIZE"
        CASE %WM_ACTIVATE
             FUNCTION = " &H6  %WM_ACTIVATE"
    
        CASE %WM_SETFOCUS
             FUNCTION = " &H7  %WM_SETFOCUS"
        CASE %WM_KILLFOCUS
             FUNCTION = " &H8  %WM_KILLFOCUS"
    
        CASE %WM_ENABLE
             FUNCTION = " &HA  %WM_ENABLE"
        CASE %WM_SETREDRAW
             FUNCTION = " &HB  %WM_SETREDRAW"
    
        CASE %WM_SETTEXT
             FUNCTION = " &HC  %WM_SETTEXT"
        CASE %WM_GETTEXT
             FUNCTION = " &HD  %WM_GETTEXT"
    
        CASE %WM_GETTEXTLENGTH
             FUNCTION = " &HE  %WM_GETTEXTLENGTH"
        CASE %WM_PAINT
             FUNCTION = " &HF  %WM_PAINT"
    
        CASE %WM_CLOSE
             FUNCTION = " &H10  %WM_CLOSE"
        CASE %WM_QUERYENDSESSION
             FUNCTION = " &H11  %WM_QUERYENDSESSION"
    
        CASE %WM_QUIT
             FUNCTION = " &H12  %WM_QUIT"
        CASE %WM_QUERYOPEN
             FUNCTION = " &H13  %WM_QUERYOPEN"
    
        CASE %WM_ERASEBKGND
             FUNCTION = " &H14  %WM_ERASEBKGND"
        CASE %WM_SYSCOLORCHANGE
             FUNCTION = " &H15  %WM_SYSCOLORCHANGE"
    
        CASE %WM_ENDSESSION
             FUNCTION = " &H16  %WM_ENDSESSION"
        CASE %WM_SHOWWINDOW
             FUNCTION = " &H18  %WM_SHOWWINDOW"
    
        CASE %WM_WININICHANGE,%WM_SETTINGCHANGE
             FUNCTION = " &H1A  %WM_WININICHANGE,%WM_SETTINGCHANGE"
        CASE %WM_DEVMODECHANGE
             FUNCTION = " &H1B  %WM_DEVMODECHANGE"
    
        CASE %WM_ACTIVATEAPP
             FUNCTION = " &H1C  %WM_ACTIVATEAPP"
        CASE %WM_FONTCHANGE
             FUNCTION = " &H1D  %WM_FONTCHANGE"
    
        CASE %WM_TIMECHANGE
             FUNCTION = " &H1E  %WM_TIMECHANGE"
        CASE %WM_CANCELMODE
             FUNCTION = " &H1F  %WM_CANCELMODE"
    
        CASE %WM_SETCURSOR
             FUNCTION = " &H20  %WM_SETCURSOR"
        CASE %WM_MOUSEACTIVATE
             FUNCTION = " &H21  %WM_MOUSEACTIVATE"
    
        CASE %WM_CHILDACTIVATE
             FUNCTION = " &H22  %WM_CHILDACTIVATE"
        CASE %WM_QUEUESYNC
             FUNCTION = " &H23  %WM_QUEUESYNC"
    
        CASE %WM_GETMINMAXINFO
             FUNCTION = " &H24  %WM_GETMINMAXINFO"
        CASE %WM_PAINTICON
             FUNCTION = " &H26  %WM_PAINTICON"
    
        CASE %WM_ICONERASEBKGND
             FUNCTION = " &H27  %WM_ICONERASEBKGND"
        CASE %WM_NEXTDLGCTL
             FUNCTION = " &H28  %WM_NEXTDLGCTL"
    
        CASE %WM_SPOOLERSTATUS
             FUNCTION = " &H2A  %WM_SPOOLERSTATUS"
        CASE %WM_DRAWITEM
             FUNCTION = " &H2B  %WM_DRAWITEM"
    
        CASE %WM_MEASUREITEM
             FUNCTION = " &H2C  %WM_MEASUREITEM"
        CASE %WM_DELETEITEM
             FUNCTION = " &H2D  %WM_DELETEITEM"
    
        CASE %WM_VKEYTOITEM
             FUNCTION = " &H2E  %WM_VKEYTOITEM"
        CASE %WM_CHARTOITEM
             FUNCTION = " &H2F  %WM_CHARTOITEM"
    
        CASE %WM_SETFONT
             FUNCTION = " &H30  %WM_SETFONT"
        CASE %WM_GETFONT
             FUNCTION = " &H31  %WM_GETFONT"
    
        CASE %WM_SETHOTKEY
             FUNCTION = " &H32  %WM_SETHOTKEY"
        CASE %WM_GETHOTKEY
             FUNCTION = " &H33  %WM_GETHOTKEY"
    
        CASE %WM_QUERYDRAGICON
             FUNCTION = " &H37  %WM_QUERYDRAGICON"
        CASE %WM_COMPAREITEM
             FUNCTION = " &H39  %WM_COMPAREITEM"
    
        CASE %WM_COMPACTING
             FUNCTION = " &H41  %WM_COMPACTING"
        CASE %WM_OTHERWINDOWCREATED
             FUNCTION = " &H42  %WM_OTHERWINDOWCREATED"   '  no longer suported
    
        CASE %WM_OTHERWINDOWDESTROYED
             FUNCTION = " &H43  %WM_OTHERWINDOWDESTROYED" '  no longer suported
        CASE %WM_COMMNOTIFY
             FUNCTION = " &H44  %WM_COMMNOTIFY            '  no longer suported
    
        '
        ' notifications passed in low word of lParam on WM_COMMNOTIFY messages
        ' %CN_RECEIVE                                  = &H1
        ' %CN_TRANSMIT                                 = &H2
        ' %CN_EVENT                                    = &H4
        '
    
        CASE %WM_WINDOWPOSCHANGING
             FUNCTION = " &H46  %WM_WINDOWPOSCHANGING"
        CASE %WM_WINDOWPOSCHANGED
             FUNCTION = " &H47  %WM_WINDOWPOSCHANGED"
    
        CASE %WM_POWER
             FUNCTION = " &H48  %WM_POWER"
        '
        ' wParam for WM_POWER window message and DRV_POWER driver notification
    
        ' %PWR_OK                                      = 1
        ' %PWR_FAIL                                    = -1
        ' %PWR_SUSPENDREQUEST                          = 1
        ' %PWR_SUSPENDRESUME                           = 2
        ' %PWR_CRITICALRESUME                          = 3
        '
    
        CASE %WM_COPYDATA
             FUNCTION = " &H4A   %WM_COPYDATA"
        CASE %WM_CANCELJOURNAL
             FUNCTION = " &H4B   %WM_CANCELJOURNAL"
    
        CASE %WM_NOTIFY
             FUNCTION = " &H4E   %WM_NOTIFY"
        CASE %WM_INPUTLANGUAGECHANGEREQUEST
             FUNCTION = " &H50   %WM_INPUTLANGUAGECHANGEREQUEST"
    
        CASE %WM_INPUTLANGUAGECHANGE
             FUNCTION = " &H51   %WM_INPUTLANGUAGECHANGE"
        CASE %WM_TCARD
             FUNCTION = " &H52   %WM_TCARD"
    
        CASE %WM_HELP
             FUNCTION = " &H53   %WM_HELP"
        CASE %WM_USERCHANGED
             FUNCTION = " &H54   %WM_USERCHANGED"
    
        CASE %WM_NOTIFYFORMAT
             FUNCTION = " &H55   %WM_NOTIFYFORMAT"
        CASE %WM_CONTEXTMENU
             FUNCTION = " &H7B   %WM_CONTEXTMENU"
    
        CASE %WM_STYLECHANGING
             FUNCTION = " &H7C   %WM_STYLECHANGING"
        CASE %WM_STYLECHANGED
             FUNCTION = " &H7D   %WM_STYLECHANGED"
    
        CASE %WM_DISPLAYCHANGE
             FUNCTION = " &H7E   %WM_DISPLAYCHANGE"
        CASE %WM_GETICON
             FUNCTION = " &H7F   %WM_GETICON"
    
        CASE %WM_SETICON
             FUNCTION = " &H80   %WM_SETICON"
        CASE %WM_NCCREATE
             FUNCTION = " &H81   %WM_NCCREATE"
    
        CASE %WM_NCDESTROY
             FUNCTION = " &H82   %WM_NCDESTROY"
        CASE %WM_NCCALCSIZE
             FUNCTION = " &H83   %WM_NCCALCSIZE"
    
        CASE %WM_NCHITTEST
             FUNCTION = " &H84   %WM_NCHITTEST"
        CASE %WM_NCPAINT
             FUNCTION = " &H85   %WM_NCPAINT"
    
        CASE %WM_NCACTIVATE
             FUNCTION = " &H86   %WM_NCACTIVATE"
        CASE %WM_GETDLGCODE
             FUNCTION = " &H87   %WM_GETDLGCODE"
    
        CASE %WM_NCMOUSEMOVE
             FUNCTION = " &HA0   %WM_NCMOUSEMOVE"
        CASE %WM_NCLBUTTONDOWN
             FUNCTION = " &HA1   %WM_NCLBUTTONDOWN"
    
        CASE %WM_NCLBUTTONUP
             FUNCTION = " &HA2   %WM_NCLBUTTONUP"
        CASE %WM_NCLBUTTONDBLCLK
             FUNCTION = " &HA3   %WM_NCLBUTTONDBLCLK"
    
        CASE %WM_NCRBUTTONDOWN
             FUNCTION = " &HA4   %WM_NCRBUTTONDOWN"
        CASE %WM_NCRBUTTONUP
             FUNCTION = " &HA5   %WM_NCRBUTTONUP"
    
        CASE %WM_NCRBUTTONDBLCLK
             FUNCTION = " &HA6   %WM_NCRBUTTONDBLCLK"
        CASE %WM_NCMBUTTONDOWN
             FUNCTION = " &HA7   %WM_NCMBUTTONDOWN"
    
        CASE %WM_NCMBUTTONUP
             FUNCTION = " &HA8   %WM_NCMBUTTONUP"
        CASE %WM_NCMBUTTONDBLCLK
             FUNCTION = " &HA9   %WM_NCMBUTTONDBLCLK"
    
        CASE %WM_KEYFIRST, %WM_KEYDOWN
             FUNCTION = " &H100  %WM_KEYFIRST, %WM_KEYDOWN"
        CASE %WM_KEYUP
             FUNCTION = " &H101  %WM_KEYUP"
    
        CASE %WM_CHAR
             FUNCTION = " &H102  %WM_CHAR"
        CASE %WM_DEADCHAR
             FUNCTION = " &H103  %WM_DEADCHAR"
    
        CASE %WM_SYSKEYDOWN
             FUNCTION = " &H104  %WM_SYSKEYDOWN"
        CASE %WM_SYSKEYUP
             FUNCTION = " &H105  %WM_SYSKEYUP"
    
        CASE %WM_SYSCHAR
             FUNCTION = " &H106  %WM_SYSCHAR"
        CASE %WM_SYSDEADCHAR
             FUNCTION = " &H107  %WM_SYSDEADCHAR"
    
        CASE %WM_KEYLAST
             FUNCTION = " &H108  %WM_KEYLAST"
        CASE %WM_INITDIALOG
             FUNCTION = " &H110  %WM_INITDIALOG"
    
        CASE %WM_COMMAND
             FUNCTION = " &H111  %WM_COMMAND  " + STR$(Msg.wparam)
        CASE %WM_SYSCOMMAND
             FUNCTION = "&H112  %WM_SYSCOMMAND"
    
        CASE %WM_TIMER
             FUNCTION = " &H113  %WM_TIMER"
        CASE %WM_HSCROLL
             FUNCTION = " &H114  %WM_HSCROLL"
    
        CASE %WM_VSCROLL
             FUNCTION = " &H115  %WM_VSCROLL"
        CASE %WM_INITMENU
             FUNCTION = " &H116  %WM_INITMENU"
    
        CASE %WM_INITMENUPOPUP
             FUNCTION = " &H117  %WM_INITMENUPOPUP"
        CASE %WM_MENUSELECT
             FUNCTION = " &H11F  %WM_MENUSELECT"
    
        CASE %WM_MENUCHAR
             FUNCTION = " &H120  %WM_MENUCHAR"
        CASE %WM_ENTERIDLE
             FUNCTION = " &H121  %WM_ENTERIDLE"
    
        CASE %WM_CTLCOLORMSGBOX
             FUNCTION = " &H132  %WM_CTLCOLORMSGBOX"
        CASE %WM_CTLCOLOREDIT
             FUNCTION = " &H133  %WM_CTLCOLOREDIT       "  + STR$(LOWRD(Msg.Lparam))
        CASE %WM_CTLCOLORLISTBOX
             FUNCTION = " &H134  %WM_CTLCOLORLISTBOX"
    
        CASE %WM_CTLCOLORBTN
             FUNCTION = " &H135  %WM_CTLCOLORBTN"
        CASE %WM_CTLCOLORDLG
             FUNCTION = " &H136  %WM_CTLCOLORDLG"
    
        CASE %WM_CTLCOLORSCROLLBAR
             FUNCTION = " &H137  %WM_CTLCOLORSCROLLBAR"
        CASE %WM_CTLCOLORSTATIC
             FUNCTION = " &H138  %WM_CTLCOLORSTATIC"
    
        CASE %WM_MOUSEFIRST,%WM_MOUSEMOVE
             FUNCTION = " &H200  %WM_MOUSEFIRST,%WM_MOUSEMOVE"
        CASE %WM_LBUTTONDOWN
             FUNCTION = " &H201  %WM_LBUTTONDOWN"
    
        CASE %WM_LBUTTONUP
             FUNCTION = " &H202  %WM_LBUTTONUP"
        CASE %WM_LBUTTONDBLCLK
             FUNCTION = " &H203  %WM_LBUTTONDBLCLK"
    
        CASE %WM_RBUTTONDOWN
             FUNCTION = " &H204  %WM_RBUTTONDOWN"
        CASE %WM_RBUTTONUP
             FUNCTION = " &H205  %WM_RBUTTONUP"
    
        CASE %WM_RBUTTONDBLCLK
             FUNCTION = " &H206  %WM_RBUTTONDBLCLK"
        CASE %WM_MBUTTONDOWN
             FUNCTION = " &H207  %WM_MBUTTONDOWN"
    
        CASE %WM_MBUTTONUP
             FUNCTION = " &H208  %WM_MBUTTONUP"
        CASE %WM_MBUTTONDBLCLK
             FUNCTION = " &H209  %WM_MBUTTONDBLCLK"
    
        CASE %WM_MOUSEWHEEL, %WM_MOUSELAST
             FUNCTION = " &H20A  %WM_MOUSEWHEEL, %WM_MOUSELAST"
        CASE %WM_PARENTNOTIFY
             FUNCTION = " &H210  %WM_PARENTNOTIFY"
    
        CASE %WM_ENTERMENULOOP
             FUNCTION = " &H211  %WM_ENTERMENULOOP"
        CASE %WM_EXITMENULOOP
             FUNCTION = " &H212  %WM_EXITMENULOOP"
    
        CASE %WM_SIZING
             FUNCTION = " &H214  %WM_SIZING"
        CASE %WM_CAPTURECHANGED
             FUNCTION = " &H215  %WM_CAPTURECHANGED"
    
        CASE %WM_MOVING
             FUNCTION = " &H216  %WM_MOVING"
        CASE %WM_POWERBROADCAST
             FUNCTION = " &H218  %WM_POWERBROADCAST"
    
        CASE %WM_DEVICECHANGE
             FUNCTION = " &H219  %WM_DEVICECHANGE"
        CASE %WM_MDICREATE
             FUNCTION = " &H220  %WM_MDICREATE"
    
        CASE %WM_MDIDESTROY
             FUNCTION = " &H221  %WM_MDIDESTROY"
        CASE %WM_MDIACTIVATE
             FUNCTION = " &H222  %WM_MDIACTIVATE"
    
        CASE %WM_MDIRESTORE
             FUNCTION = " &H223  %WM_MDIRESTORE"
        CASE %WM_MDINEXT
             FUNCTION = " &H224  %WM_MDINEXT"
    
        CASE %WM_MDIMAXIMIZE
             FUNCTION = " &H225  %WM_MDIMAXIMIZE"
        CASE %WM_MDITILE
             FUNCTION = " &H226  %WM_MDITILE"
    
        CASE %WM_MDICASCADE
             FUNCTION = " &H227  %WM_MDICASCADE"
        CASE %WM_MDIICONARRANGE
             FUNCTION = " &H228  %WM_MDIICONARRANGE"
    
        CASE %WM_MDIGETACTIVE
             FUNCTION = " &H229  %WM_MDIGETACTIVE"
        CASE %WM_MDISETMENU
             FUNCTION = " &H230  %WM_MDISETMENU"
    
        CASE %WM_DROPFILES
             FUNCTION = " &H233  %WM_DROPFILES"
        CASE %WM_MDIREFRESHMENU
             FUNCTION = " &H234  %WM_MDIREFRESHMENU"
    
        CASE %WM_MOUSEHOVER
             FUNCTION = " &H2A1  %WM_MOUSEHOVER"
        CASE %WM_MOUSELEAVE
             FUNCTION = " &H2A3  %WM_MOUSELEAVE"
    
        CASE %WM_CUT
             FUNCTION = " &H300  %WM_CUT"
        CASE %WM_COPY
             FUNCTION = " &H301  %WM_COPY"
    
        CASE %WM_PASTE
             FUNCTION = " &H302  %WM_PASTE"
        CASE %WM_CLEAR
             FUNCTION = " &H303  %WM_CLEAR"
    
        CASE %WM_UNDO
             FUNCTION = " &H304  %WM_UNDO"
        CASE %WM_RENDERFORMAT
             FUNCTION = " &H305  %WM_RENDERFORMAT"
    
        CASE %WM_RENDERALLFORMATS
             FUNCTION = " &H306  %WM_RENDERALLFORMATS"
        CASE %WM_DESTROYCLIPBOARD
             FUNCTION = " &H307  %WM_DESTROYCLIPBOARD"
    
        CASE %WM_DRAWCLIPBOARD
             FUNCTION = " &H308  %WM_DRAWCLIPBOARD"
        CASE %WM_PAINTCLIPBOARD
             FUNCTION = " &H309  %WM_PAINTCLIPBOARD"
    
        CASE %WM_VSCROLLCLIPBOARD
             FUNCTION = " &H30A  %WM_VSCROLLCLIPBOARD"
        CASE %WM_SIZECLIPBOARD
             FUNCTION = " &H30B  %WM_SIZECLIPBOARD"
    
        CASE %WM_ASKCBFORMATNAME
             FUNCTION = " &H30C  %WM_ASKCBFORMATNAME"
        CASE %WM_CHANGECBCHAIN
             FUNCTION = " &H30D  %WM_CHANGECBCHAIN"
    
        CASE %WM_HSCROLLCLIPBOARD
             FUNCTION = " &H30E  %WM_HSCROLLCLIPBOARD"
        CASE %WM_QUERYNEWPALETTE
             FUNCTION = " &H30F  %WM_QUERYNEWPALETTE"
    
        CASE %WM_PALETTEISCHANGING
             FUNCTION = " &H310  %WM_PALETTEISCHANGING"
        CASE %WM_PALETTECHANGED
             FUNCTION = " &H311  %WM_PALETTECHANGED"
    
        CASE %WM_HOTKEY
             FUNCTION = " &H312  %WM_HOTKEY"
        CASE %WM_PRINTCLIENT
             FUNCTION = " &H318  %WM_PRINTCLIENT"
    
        CASE %WM_PENWINFIRST
             FUNCTION = " &H380  %WM_PENWINFIRST"
        CASE %WM_PENWINLAST
             FUNCTION = " &H38F  %WM_PENWINLAST"
    
        CASE %WM_USER
             FUNCTION = " &H400  %WM_USER"
        CASE  %WM_ENTERSIZEMOVE
             FUNCTION  = "&H231  %WM_ENTERSIZEMOVE"
    
        CASE    %WM_EXITSIZEMOVE
            FUNCTION   = "&H232  %WM_EXITSIZEMOVE"
        CASE ELSE
             FUNCTION = STR$(hndl)+"  "+HEX$(hndl)
        END SELECT
    
    END FUNCTION
    
    
    'Show Variable Function
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    FUNCTION ShowVar (Var_label$, Var_value&) AS LONG          'FINISHED
       STATIC ControlCount&
       LOCAL i&,CntrlText$,NewLbl$,MatchLbl&,yy&
       MatchLbl&=0: yy&=ControlCount&*10+22
       IF  ControlCount& = 0 THEN
    
        DIALOG NEW 0, "VARIABLE DISPLAY",500,50, 137, yy&+4,%ws_border , TO hVDsp&
        CONTROL ADD FRAME ,hVDsp&,1000,"Variables",2,1,130,yy&, %ss_sunken,
        DIALOG SHOW MODELESS hVDsp&, 'CALL Var_Dspl()
    
       END IF
           NewLbl$=Var_label$+"   :"
            FOR i&= 1 TO ControlCount&+1
              CONTROL GET TEXT hVDsp&,(1100+i&) TO CntrlText$
                 IF CntrlText$= NewLbl$ THEN
    
                     CONTROL SET TEXT hVDsp&,(1200+i&),STR$(Var_value&)
                     MatchLbl&=1
                     EXIT FOR
                 END IF
            NEXT i&
    
            IF MatchLbl&=0   THEN
    
                     DIALOG SET SIZE hVDsp&,137,yy&+18
                     CONTROL SET SIZE hVDsp&,1000,130,yy&
                     CONTROL ADD LABEL ,hVDsp&,(1100+i&),NewLbl$,4,i&*10-10,60,10,%SS_RIGHT,
                     CONTROL ADD LABEL ,hVDsp&,(1200+i&),STR$(Var_value&),70,i&*10-10,60,10,,
    
    
                     INCR ControlCount&
            END IF
    
          SendMessage hVDsp&,%wm_paint,0,0
    END FUNCTION
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Working...
X