
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 '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~