I use this sub to control user input.
And then in the CALLBACK
With some testing the SUB is called many times over when not needed.
How do I trigger it only when text has actually changed?
Code:
SUB String_Format_Input_Control( hDlg AS LONG, CB_CTL AS LONG ) ' LOCAL TL1 AS LONG LOCAL TL2 AS LONG LOCAL TS1 AS STRING LOCAL TS2 AS STRING ' DIM Updating_Control_FLAG_ST AS STATIC BYTE ' IF ISFALSE Updating_Control_FLAG_ST THEN ' CONTROL GET TEXT hDlg, CB_CTL TO TS1 ' IF TS1 <> "" THEN ' CONTROL SEND hDlg, CB_CTL, %EM_GETSEL, VARPTR( TL1 ), VARPTR( TL2 ) ' Get Selected Positions ' Updating_Control_FLAG_ST = %TRUE ' TS2 = MID$( TS1, TL1, 1 ) ' Character Just Typed ' IF TS2 = $SPC AND ( MID$( TS1, TL1 - 1, 1 ) = $SPC OR MID$( TS1, TL1 + 1, 1 ) = $SPC ) THEN ' WINBEEP 800, 100 ' TS1 = LTRIM$( LEFT$( TS1, TL1 - 1 ) + MID$( TS1, TL2 + 1 )) ' DECR TL1 DECR TL2 ' ELSEIF LEFT$( TS1, 1 ) = $SPC THEN ' IF TS1 = $SPC THEN ' WINBEEP 800, 100 ' END IF ' TS1 = MID$( TS1, 2 ) ' RESET TL1 RESET TL2 ' END IF ' CONTROL SET TEXT hDlg, CB_CTL, TS1 ' CONTROL SEND hDlg, CB_CTL, %EM_SETSEL, TL1, TL2 ' Position cursor ' RESET Updating_Control_FLAG_ST ' END IF ' END IF ' END SUB
Code:
CASE %WM_COMMAND ' SELECT CASE AS LONG CB.CTL ' CASE id of text boxes SELECT CASE CB.CTLMSG ' CASE %EN_UPDATE CALL String_Format_Input_Control( CB.HNDL, CB.CTL )
How do I trigger it only when text has actually changed?
Comment