I have been trying to figure this out for days. I have a program that calls different functions depending on whats selected.
When I use MSGBOX, the selected function changes!!!
My program is very big, so I made this example to illustrate the problem.
I have tried different values for the control and i even moved the selection to a function outside of the callback function. No difference.
Just compile and hit the Run button to see the selection changed from 7 to 2 by using MSGBOX.
#COMPILE EXE "test.exe" ' Compile file as Specified Name
#INCLUDE "WIN32API.INC" ' Win API definitions
GLOBAL hDlg AS LONG, ConvMethod AS LONG
'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤'
FUNCTION ChooseConversion() AS LONG
CONTROL DISABLE hDlg, 100
MSGBOX STR$(ConvMethod) ' value of ConvMethod is changed here ????
MSGBOX STR$(ConvMethod)
IF ConvMethod = 1 THEN MSGBOX STR$(ConvMethod)+" called"
IF ConvMethod = 2 THEN MSGBOX STR$(ConvMethod)+" called"
IF ConvMethod = 3 THEN MSGBOX STR$(ConvMethod)+" called"
IF ConvMethod = 4 THEN MSGBOX STR$(ConvMethod)+" called"
IF ConvMethod = 5 THEN MSGBOX STR$(ConvMethod)+" called"
IF ConvMethod = 6 THEN MSGBOX STR$(ConvMethod)+" called"
IF ConvMethod = 7 THEN MSGBOX STR$(ConvMethod)+" called"
CONTROL ENABLE hDlg, 100
END FUNCTION
'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤'
CALLBACK FUNCTION MainCB() AS LONG
SELECT CASE CBMSG
CASE %WM_INITDIALOG
ConvMethod = 7 ' Starting Value
CONTROL SET CHECK hDlg, 107, 1 ' Starting position
END SELECT
SELECT CASE %WM_COMMAND
SELECT CASE CBCTL
CASE 100
CALL ChooseConversion
CASE 101 : ConvMethod = 1
CASE 102 : ConvMethod = 2
CASE 103 : ConvMethod = 3
CASE 104 : ConvMethod = 4
CASE 105 : ConvMethod = 5
CASE 106 : ConvMethod = 6
CASE 107 : ConvMethod = 7
CASE 124
DIALOG END hDlg
END SELECT
END SELECT
END FUNCTION
'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤'
FUNCTION PBMAIN
DIALOG NEW 0, "Bug Demo", 100, 60, 110, 140, 0 TO hDlg
CONTROL ADD BUTTON, hDlg, 100, "Run", 04, 20, 102, 14, 0
CONTROL ADD OPTION, hDlg, 101, "1", 10, 36, 30, 12, %WS_GROUP
CONTROL ADD OPTION, hDlg, 102, "2", 10, 48, 30, 12, 0
CONTROL ADD OPTION, hDlg, 103, "2", 10, 60, 30, 12, 0
CONTROL ADD OPTION, hDlg, 104, "4", 10, 72, 30, 12, 0
CONTROL ADD OPTION, hDlg, 105, "5", 10, 84, 30, 12, 0
CONTROL ADD OPTION, hDlg, 106, "6", 10, 96, 30, 12, 0
CONTROL ADD OPTION, hDlg, 107, "7", 10, 108, 30, 12, 0
CONTROL ADD BUTTON, hDlg, 124, "&Quit", 04, 124, 102, 14, 1
DIALOG SHOW MODAL hDlg CALL MainCB
END FUNCTION
'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤'
------------------
Kind Regards
Mike
When I use MSGBOX, the selected function changes!!!
My program is very big, so I made this example to illustrate the problem.
I have tried different values for the control and i even moved the selection to a function outside of the callback function. No difference.
Just compile and hit the Run button to see the selection changed from 7 to 2 by using MSGBOX.
#COMPILE EXE "test.exe" ' Compile file as Specified Name
#INCLUDE "WIN32API.INC" ' Win API definitions
GLOBAL hDlg AS LONG, ConvMethod AS LONG
'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤'
FUNCTION ChooseConversion() AS LONG
CONTROL DISABLE hDlg, 100
MSGBOX STR$(ConvMethod) ' value of ConvMethod is changed here ????
MSGBOX STR$(ConvMethod)
IF ConvMethod = 1 THEN MSGBOX STR$(ConvMethod)+" called"
IF ConvMethod = 2 THEN MSGBOX STR$(ConvMethod)+" called"
IF ConvMethod = 3 THEN MSGBOX STR$(ConvMethod)+" called"
IF ConvMethod = 4 THEN MSGBOX STR$(ConvMethod)+" called"
IF ConvMethod = 5 THEN MSGBOX STR$(ConvMethod)+" called"
IF ConvMethod = 6 THEN MSGBOX STR$(ConvMethod)+" called"
IF ConvMethod = 7 THEN MSGBOX STR$(ConvMethod)+" called"
CONTROL ENABLE hDlg, 100
END FUNCTION
'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤'
CALLBACK FUNCTION MainCB() AS LONG
SELECT CASE CBMSG
CASE %WM_INITDIALOG
ConvMethod = 7 ' Starting Value
CONTROL SET CHECK hDlg, 107, 1 ' Starting position
END SELECT
SELECT CASE %WM_COMMAND
SELECT CASE CBCTL
CASE 100
CALL ChooseConversion
CASE 101 : ConvMethod = 1
CASE 102 : ConvMethod = 2
CASE 103 : ConvMethod = 3
CASE 104 : ConvMethod = 4
CASE 105 : ConvMethod = 5
CASE 106 : ConvMethod = 6
CASE 107 : ConvMethod = 7
CASE 124
DIALOG END hDlg
END SELECT
END SELECT
END FUNCTION
'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤'
FUNCTION PBMAIN
DIALOG NEW 0, "Bug Demo", 100, 60, 110, 140, 0 TO hDlg
CONTROL ADD BUTTON, hDlg, 100, "Run", 04, 20, 102, 14, 0
CONTROL ADD OPTION, hDlg, 101, "1", 10, 36, 30, 12, %WS_GROUP
CONTROL ADD OPTION, hDlg, 102, "2", 10, 48, 30, 12, 0
CONTROL ADD OPTION, hDlg, 103, "2", 10, 60, 30, 12, 0
CONTROL ADD OPTION, hDlg, 104, "4", 10, 72, 30, 12, 0
CONTROL ADD OPTION, hDlg, 105, "5", 10, 84, 30, 12, 0
CONTROL ADD OPTION, hDlg, 106, "6", 10, 96, 30, 12, 0
CONTROL ADD OPTION, hDlg, 107, "7", 10, 108, 30, 12, 0
CONTROL ADD BUTTON, hDlg, 124, "&Quit", 04, 124, 102, 14, 1
DIALOG SHOW MODAL hDlg CALL MainCB
END FUNCTION
'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤'
------------------
Kind Regards
Mike
Comment