This is reference to the following post:
Sample with a main dialog and two additional dialogs. Notice under PBMain that each dialog ends w/%HWND_DESKTOP. The below code copied unmodified from the IDE.
#PBFORMS CREATED V1.51
#COMPILE EXE
#DIM ALL
#PBFORMS BEGIN INCLUDES
#IF NOT %DEF(%WINAPI)
#INCLUDE "WIN32API.INC"
#ENDIF
#PBFORMS END INCLUDES
#PBFORMS BEGIN CONSTANTS
%IDD_DIALOG1 = 101
%IDD_DIALOG2 = 102
%IDD_DIALOG3 = 103
#PBFORMS END CONSTANTS
DECLARE CALLBACK FUNCTION ShowDIALOG1Proc()
DECLARE CALLBACK FUNCTION ShowDIALOG2Proc()
DECLARE CALLBACK FUNCTION ShowDIALOG3Proc()
DECLARE FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
DECLARE FUNCTION ShowDIALOG2(BYVAL hParent AS DWORD) AS LONG
DECLARE FUNCTION ShowDIALOG3(BYVAL hParent AS DWORD) AS LONG
#PBFORMS DECLARATIONS
FUNCTION PBMAIN()
ShowDIALOG1 %HWND_DESKTOP
ShowDIALOG2 %HWND_DESKTOP
ShowDIALOG3 %HWND_DESKTOP
END FUNCTION
CALLBACK FUNCTION ShowDIALOG1Proc()
SELECT CASE AS LONG CBMSG
CASE %WM_INITDIALOG
CASE %WM_NCACTIVATE
STATIC hWndSaveFocus AS DWORD
IF ISFALSE CBWPARAM THEN
hWndSaveFocus = GetFocus()
ELSEIF hWndSaveFocus THEN
SetFocus(hWndSaveFocus)
hWndSaveFocus = 0
END IF
CASE %WM_COMMAND
SELECT CASE AS LONG CBCTL
END SELECT
END SELECT
END FUNCTION
CALLBACK FUNCTION ShowDIALOG2Proc()
SELECT CASE AS LONG CBMSG
CASE %WM_INITDIALOG
CASE %WM_NCACTIVATE
STATIC hWndSaveFocus AS DWORD
IF ISFALSE CBWPARAM THEN
hWndSaveFocus = GetFocus()
ELSEIF hWndSaveFocus THEN
SetFocus(hWndSaveFocus)
hWndSaveFocus = 0
END IF
CASE %WM_COMMAND
SELECT CASE AS LONG CBCTL
END SELECT
END SELECT
END FUNCTION
CALLBACK FUNCTION ShowDIALOG3Proc()
SELECT CASE AS LONG CBMSG
CASE %WM_INITDIALOG
CASE %WM_NCACTIVATE
STATIC hWndSaveFocus AS DWORD
IF ISFALSE CBWPARAM THEN
hWndSaveFocus = GetFocus()
ELSEIF hWndSaveFocus THEN
SetFocus(hWndSaveFocus)
hWndSaveFocus = 0
END IF
CASE %WM_COMMAND
SELECT CASE AS LONG CBCTL
END SELECT
END SELECT
END FUNCTION
FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
LOCAL lRslt AS LONG
#PBFORMS BEGIN DIALOG %IDD_DIALOG1->->
LOCAL hDlg AS DWORD
DIALOG NEW hParent, "Parent Dialog", 70, 70, 267, 164, %WS_POPUP OR %WS_BORDER OR %WS_DLGFRAME OR _
%WS_SYSMENU OR %WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_MODALFRAME OR %DS_3DLOOK OR _
%DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_CONTROLPARENT OR %WS_EX_LEFT OR %WS_EX_LTRREADING OR _
%WS_EX_RIGHTSCROLLBAR, TO hDlg
#PBFORMS END DIALOG
DIALOG SHOW MODAL hDlg, CALL ShowDIALOG1Proc TO lRslt
#PBFORMS BEGIN CLEANUP %IDD_DIALOG1
#PBFORMS END CLEANUP
FUNCTION = lRslt
END FUNCTION
FUNCTION ShowDIALOG2(BYVAL hParent AS DWORD) AS LONG
LOCAL lRslt AS LONG
#PBFORMS BEGIN DIALOG %IDD_DIALOG2->->
LOCAL hDlg AS DWORD
DIALOG NEW hParent, "Dialog2", 70, 70, 201, 121, %WS_POPUP OR %WS_BORDER OR %WS_DLGFRAME OR _
%WS_CAPTION OR %WS_SYSMENU OR %WS_MINIMIZEBOX OR %WS_CLIPSIBLINGS OR %WS_VISIBLE OR _
%DS_MODALFRAME OR %DS_3DLOOK OR %DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_WINDOWEDGE OR _
%WS_EX_CONTROLPARENT OR %WS_EX_CONTEXTHELP OR %WS_EX_LEFT OR %WS_EX_LTRREADING OR _
%WS_EX_RIGHTSCROLLBAR, TO hDlg
#PBFORMS END DIALOG
DIALOG SHOW MODAL hDlg, CALL ShowDIALOG2Proc TO lRslt
#PBFORMS BEGIN CLEANUP %IDD_DIALOG2
#PBFORMS END CLEANUP
FUNCTION = lRslt
END FUNCTION
FUNCTION ShowDIALOG3(BYVAL hParent AS DWORD) AS LONG
LOCAL lRslt AS LONG
#PBFORMS BEGIN DIALOG %IDD_DIALOG3->->
LOCAL hDlg AS DWORD
DIALOG NEW hParent, "Dialog3", 70, 70, 201, 121, %WS_POPUP OR %WS_BORDER OR %WS_DLGFRAME OR _
%WS_SYSMENU OR %WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_MODALFRAME OR %DS_3DLOOK OR _
%DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_CONTROLPARENT OR %WS_EX_LEFT OR %WS_EX_LTRREADING OR _
%WS_EX_RIGHTSCROLLBAR, TO hDlg
#PBFORMS END DIALOG
DIALOG SHOW MODAL hDlg, CALL ShowDIALOG3Proc TO lRslt
#PBFORMS BEGIN CLEANUP %IDD_DIALOG3
#PBFORMS END CLEANUP
FUNCTION = lRslt
END FUNCTION
Sample with a main dialog and two additional dialogs. Notice under PBMain that each dialog ends w/%HWND_DESKTOP. The below code copied unmodified from the IDE.
#PBFORMS CREATED V1.51
#COMPILE EXE
#DIM ALL
#PBFORMS BEGIN INCLUDES
#IF NOT %DEF(%WINAPI)
#INCLUDE "WIN32API.INC"
#ENDIF
#PBFORMS END INCLUDES
#PBFORMS BEGIN CONSTANTS
%IDD_DIALOG1 = 101
%IDD_DIALOG2 = 102
%IDD_DIALOG3 = 103
#PBFORMS END CONSTANTS
DECLARE CALLBACK FUNCTION ShowDIALOG1Proc()
DECLARE CALLBACK FUNCTION ShowDIALOG2Proc()
DECLARE CALLBACK FUNCTION ShowDIALOG3Proc()
DECLARE FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
DECLARE FUNCTION ShowDIALOG2(BYVAL hParent AS DWORD) AS LONG
DECLARE FUNCTION ShowDIALOG3(BYVAL hParent AS DWORD) AS LONG
#PBFORMS DECLARATIONS
FUNCTION PBMAIN()
ShowDIALOG1 %HWND_DESKTOP
ShowDIALOG2 %HWND_DESKTOP
ShowDIALOG3 %HWND_DESKTOP
END FUNCTION
CALLBACK FUNCTION ShowDIALOG1Proc()
SELECT CASE AS LONG CBMSG
CASE %WM_INITDIALOG
CASE %WM_NCACTIVATE
STATIC hWndSaveFocus AS DWORD
IF ISFALSE CBWPARAM THEN
hWndSaveFocus = GetFocus()
ELSEIF hWndSaveFocus THEN
SetFocus(hWndSaveFocus)
hWndSaveFocus = 0
END IF
CASE %WM_COMMAND
SELECT CASE AS LONG CBCTL
END SELECT
END SELECT
END FUNCTION
CALLBACK FUNCTION ShowDIALOG2Proc()
SELECT CASE AS LONG CBMSG
CASE %WM_INITDIALOG
CASE %WM_NCACTIVATE
STATIC hWndSaveFocus AS DWORD
IF ISFALSE CBWPARAM THEN
hWndSaveFocus = GetFocus()
ELSEIF hWndSaveFocus THEN
SetFocus(hWndSaveFocus)
hWndSaveFocus = 0
END IF
CASE %WM_COMMAND
SELECT CASE AS LONG CBCTL
END SELECT
END SELECT
END FUNCTION
CALLBACK FUNCTION ShowDIALOG3Proc()
SELECT CASE AS LONG CBMSG
CASE %WM_INITDIALOG
CASE %WM_NCACTIVATE
STATIC hWndSaveFocus AS DWORD
IF ISFALSE CBWPARAM THEN
hWndSaveFocus = GetFocus()
ELSEIF hWndSaveFocus THEN
SetFocus(hWndSaveFocus)
hWndSaveFocus = 0
END IF
CASE %WM_COMMAND
SELECT CASE AS LONG CBCTL
END SELECT
END SELECT
END FUNCTION
FUNCTION ShowDIALOG1(BYVAL hParent AS DWORD) AS LONG
LOCAL lRslt AS LONG
#PBFORMS BEGIN DIALOG %IDD_DIALOG1->->
LOCAL hDlg AS DWORD
DIALOG NEW hParent, "Parent Dialog", 70, 70, 267, 164, %WS_POPUP OR %WS_BORDER OR %WS_DLGFRAME OR _
%WS_SYSMENU OR %WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_MODALFRAME OR %DS_3DLOOK OR _
%DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_CONTROLPARENT OR %WS_EX_LEFT OR %WS_EX_LTRREADING OR _
%WS_EX_RIGHTSCROLLBAR, TO hDlg
#PBFORMS END DIALOG
DIALOG SHOW MODAL hDlg, CALL ShowDIALOG1Proc TO lRslt
#PBFORMS BEGIN CLEANUP %IDD_DIALOG1
#PBFORMS END CLEANUP
FUNCTION = lRslt
END FUNCTION
FUNCTION ShowDIALOG2(BYVAL hParent AS DWORD) AS LONG
LOCAL lRslt AS LONG
#PBFORMS BEGIN DIALOG %IDD_DIALOG2->->
LOCAL hDlg AS DWORD
DIALOG NEW hParent, "Dialog2", 70, 70, 201, 121, %WS_POPUP OR %WS_BORDER OR %WS_DLGFRAME OR _
%WS_CAPTION OR %WS_SYSMENU OR %WS_MINIMIZEBOX OR %WS_CLIPSIBLINGS OR %WS_VISIBLE OR _
%DS_MODALFRAME OR %DS_3DLOOK OR %DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_WINDOWEDGE OR _
%WS_EX_CONTROLPARENT OR %WS_EX_CONTEXTHELP OR %WS_EX_LEFT OR %WS_EX_LTRREADING OR _
%WS_EX_RIGHTSCROLLBAR, TO hDlg
#PBFORMS END DIALOG
DIALOG SHOW MODAL hDlg, CALL ShowDIALOG2Proc TO lRslt
#PBFORMS BEGIN CLEANUP %IDD_DIALOG2
#PBFORMS END CLEANUP
FUNCTION = lRslt
END FUNCTION
FUNCTION ShowDIALOG3(BYVAL hParent AS DWORD) AS LONG
LOCAL lRslt AS LONG
#PBFORMS BEGIN DIALOG %IDD_DIALOG3->->
LOCAL hDlg AS DWORD
DIALOG NEW hParent, "Dialog3", 70, 70, 201, 121, %WS_POPUP OR %WS_BORDER OR %WS_DLGFRAME OR _
%WS_SYSMENU OR %WS_CLIPSIBLINGS OR %WS_VISIBLE OR %DS_MODALFRAME OR %DS_3DLOOK OR _
%DS_NOFAILCREATE OR %DS_SETFONT, %WS_EX_CONTROLPARENT OR %WS_EX_LEFT OR %WS_EX_LTRREADING OR _
%WS_EX_RIGHTSCROLLBAR, TO hDlg
#PBFORMS END DIALOG
DIALOG SHOW MODAL hDlg, CALL ShowDIALOG3Proc TO lRslt
#PBFORMS BEGIN CLEANUP %IDD_DIALOG3
#PBFORMS END CLEANUP
FUNCTION = lRslt
END FUNCTION
Comment