Program that won't close
#5
Code:
#DIM ALL                'end all if dialog1 ended
#INCLUDE "WIN32API.INC"
%NumDialogs = 4
GLOBAL ghdg() AS DWORD

FUNCTION PBMAIN () AS LONG
    LOCAL i AS LONG
    REDIM ghdg(1 TO %NumDialogs) AS DWORD
    FOR i = LBOUND(ghdg) TO UBOUND(ghdg)
        DIALOG NEW 0, "Dialog " + FORMAT$(i),_
          50 + ((i - 1) * 110), 50 + ((i - 1) * 55), 200, 100, %WS_SYSMENU OR %WS_CAPTION TO ghdg(i)
    NEXT i
    FOR i = LBOUND(ghdg) TO UBOUND(ghdg)
        DIALOG SHOW MODELESS ghdg(i), CALL MyCallback
    NEXT i
    DO
        DIALOG DOEVENTS
        FOR i = LBOUND(ghdg) TO UBOUND(ghdg)
            IF ghdg(i) THEN ITERATE DO
        NEXT i
        EXIT DO
    LOOP
    MSGBOX "All dialogs have ended"
END FUNCTION

CALLBACK FUNCTION MyCallback() AS LONG
    LOCAL i AS LONG
    SELECT CASE CB.MSG
        CASE %WM_SYSCOMMAND
            IF (CB.WPARAM AND &hFFF0) = %SC_CLOSE THEN

                IF CB.HNDL = ghdg(1) THEN                  'close all
                    FOR i = LBOUND(ghdg) TO UBOUND(ghdg)
                        IF ghdg(i) THEN
                            DIALOG END ghdg(i), 0
                            ghdg(i) = 0
                        END IF
                    NEXT i
                    FUNCTION = %TRUE
                ELSE                                       'close ghdg(i)
                    FOR i = LBOUND(ghdg) TO UBOUND(ghdg)
                        IF ghdg(i) = CB.HNDL THEN
                            ghdg(i) = 0
                            EXIT FOR
                        END IF
                    NEXT i
                    DIALOG END CB.HNDL, 0
                    FUNCTION = %TRUE
                END IF
            END IF
    END SELECT
END FUNCTION
Reply


Messages In This Thread
RE: Program that won't close - by Mike Doty - Yesterday, 15:48

Forum Jump:


Users browsing this thread: 1 Guest(s)