thanks for the link. Although I'm not quite certain we are addressing the same issue - it might be so.
I was already starting to think that I have finally lost my mind and chasing ghosts getting ready to head to a funny farm.

Then reading thru the thread you mentioned, it hit me: earlier I used GLOBAL variables and in my demostration program LOCALs. Back to PB/DLL and yes - there seems to be a difference between these two scopes. Globals do what I have tried to describe earlier, locals don't.
I have attached a small program which demonstrates my point.
Lasse Rantanen
[email protected]
Code:
#COMPILE EXE $INCLUDE "WIN32API.INC" %IDL_CONSTANT = 1000 %IDL_LONG = 1001 %IDL_DWORD = 1002 %IDL_DWORDLONG = 1003 %IDL_LONG1 = 1004 %IDL_DWORD1 = 1005 %IDL_DWORDLONG1 = 1006 %TVI_ROOT_DW1 = &HFFFF0000??? %TVI_ROOT_DW2 = &H0FFFF0000 %TVI_ROOT_L1 = &HFFFF0000 %TVI_ROOT_L2 = &HFFFF0000& GLOBAL hDlg AS LONG GLOBAL dwTest1 AS DWORD GLOBAL lTest1 AS LONG '------------------------------------------------------------------------------ SUB SetLabels(iConst AS INTEGER) LOCAL dwTest AS DWORD LOCAL lTest AS LONG LOCAL sBits AS STRING LOCAL i AS INTEGER SELECT CASE iConst CASE 1 dwTest = %TVI_ROOT_DW1 lTest = %TVI_ROOT_DW1 dwTest1 = %TVI_ROOT_DW1 lTest1 = %TVI_ROOT_DW1 CONTROL SET TEXT hDlg,%IDL_CONSTANT, "Define %TVI_ROOT = &HFFFF0000??? " CASE 2 dwTest = %TVI_ROOT_DW2 lTest = %TVI_ROOT_DW2 dwTest1 = %TVI_ROOT_DW2 lTest1 = %TVI_ROOT_DW2 CONTROL SET TEXT hDlg,%IDL_CONSTANT, "Define %TVI_ROOT = &H0FFFF0000 " CASE 3 dwTest = %TVI_ROOT_L1 lTest = %TVI_ROOT_L1 dwTest1 = %TVI_ROOT_L1 lTest1 = %TVI_ROOT_L1 CONTROL SET TEXT hDlg,%IDL_CONSTANT, "Define %TVI_ROOT = &HFFFF0000 " CASE 4 dwTest = %TVI_ROOT_L2 lTest = %TVI_ROOT_L2 dwTest1 = %TVI_ROOT_L2 lTest1 = %TVI_ROOT_L2 CONTROL SET TEXT hDlg,%IDL_CONSTANT, "Define %TVI_ROOT = &HFFFF0000& " END SELECT sBits = "" FOR i= 31 TO 0 STEP -1 sBits = sBits + TRIM$(STR$(BIT(lTest,i))) NEXT CONTROL SET TEXT hDlg, %IDL_LONG, sBits sBits = "" FOR i= 31 TO 0 STEP -1 sBits = sBits + TRIM$(STR$(BIT(dwTest,i))) NEXT CONTROL SET TEXT hDlg, %IDL_DWORD, sBits lTest = dwTest sBits = "" FOR i= 31 TO 0 STEP -1 sBits = sBits + TRIM$(STR$(BIT(lTest,i))) NEXT CONTROL SET TEXT hDlg, %IDL_DWORDLONG, sBits sBits = "" FOR i= 31 TO 0 STEP -1 sBits = sBits + TRIM$(STR$(BIT(lTest1,i))) NEXT CONTROL SET TEXT hDlg, %IDL_LONG1, sBits sBits = "" FOR i= 31 TO 0 STEP -1 sBits = sBits + TRIM$(STR$(BIT(dwTest1,i))) NEXT CONTROL SET TEXT hDlg, %IDL_DWORD1, sBits lTest1 = dwTest1 sBits = "" FOR i= 31 TO 0 STEP -1 sBits = sBits + TRIM$(STR$(BIT(lTest1,i))) NEXT CONTROL SET TEXT hDlg, %IDL_DWORDLONG1, sBits END SUB '------------------------------------------------------------------------------ CALLBACK FUNCTION AssignDlgProc STATIC iStep AS INTEGER SELECT CASE CBMSG CASE %WM_COMMAND SELECT CASE CBCTL CASE %IDOK INCR iStep IF iStep > 4 THEN iStep = 1 SetLabels iStep CASE %IDCANCEL DIALOG END CBHNDL END SELECT END SELECT END FUNCTION '------------------------------------------------------------------------------ FUNCTION PBMAIN () AS LONG $REGISTER NONE ' ** Create a new dialog template DIALOG NEW 0, "Some Numeric Assigments", ,, 320, 190, 0, 0 TO hDlg ' ** Add controls to it CONTROL ADD LABEL, hDlg, %IDL_CONSTANT, "",5,15,310,12, %SS_LEFT CONTROL ADD LABEL, hDlg, -1, "Results with Local Variables",5,30,310,12, %SS_LEFT CONTROL ADD LABEL, hDlg, -1, "lTest = %TVI_ROOT : BITS in lTest -> ",5,40,175,12, %SS_LEFT CONTROL ADD LABEL, hDlg, %IDL_LONG, "",180,40,140,12, %SS_LEFT CONTROL ADD LABEL, hDlg, -1, "dwTest = %TVI_ROOT : BITS in dwTest -> ",5,55,175,12, %SS_LEFT CONTROL ADD LABEL, hDlg, %IDL_DWORD, "",180,55,140,12, %SS_LEFT CONTROL ADD LABEL, hDlg, -1, "dwTest = %TVI_ROOT : lTest = dwTest : BITS in lTest -> ",5,70,175,12, %SS_LEFT CONTROL ADD LABEL, hDlg, %IDL_DWORDLONG, "",180,70,140,12, %SS_LEFT ' Labels for global case CONTROL ADD LABEL, hDlg, -1, "Results with Global Variables",5,105,310,12, %SS_LEFT CONTROL ADD LABEL, hDlg, -1, "lTest = %TVI_ROOT : BITS in lTest -> ",5,115,175,12, %SS_LEFT CONTROL ADD LABEL, hDlg, %IDL_LONG1, "",180,115,140,12, %SS_LEFT CONTROL ADD LABEL, hDlg, -1, "dwTest = %TVI_ROOT : BITS in dwTest -> ",5,130,175,12, %SS_LEFT CONTROL ADD LABEL, hDlg, %IDL_DWORD1, "",180,130,140,12, %SS_LEFT CONTROL ADD LABEL, hDlg, -1, "dwTest = %TVI_ROOT : lTest = dwTest : BITS in lTest -> ",5,145,175,12, %SS_LEFT CONTROL ADD LABEL, hDlg, %IDL_DWORDLONG1, "",180,145,140,12, %SS_LEFT CONTROL ADD BUTTON, hDlg, %IDOK, "Next", 115, 165, 40, 14, %BS_DEFAULT CONTROL ADD BUTTON, hDlg, %IDCANCEL, "Cancel", 165, 165, 40, 14 ' ** Display the dialog DIALOG SHOW MODAL hDlg, CALL AssignDlgProc END FUNCTION
Leave a comment: