Originally posted by Michael Mattias
View Post
Code:
#PBFORMS CREATED V1.51 '------------------------------------------------------------------------------ ' The first line in this file is a PB/Forms metastatement. ' It should ALWAYS be the first line of the file. Other ' PB/Forms metastatements are placed at the beginning and ' end of "Named Blocks" of code that should be edited ' with PBForms only. Do not manually edit or delete these ' metastatements or PB/Forms will not be able to reread ' the file correctly. See the PB/Forms documentation for ' more information. ' Named blocks begin like this: #PBFORMS BEGIN ... ' Named blocks end like this: #PBFORMS END ... ' Other PB/Forms metastatements such as: ' #PBFORMS DECLARATIONS ' are used by PB/Forms to insert additional code. ' Feel free to make changes anywhere else in the file. '------------------------------------------------------------------------------ #COMPILE EXE #DIM ALL '------------------------------------------------------------------------------ ' ** Includes ** '------------------------------------------------------------------------------ #PBFORMS BEGIN INCLUDES %USEMACROS = 1 #IF NOT %DEF(%WINAPI) #INCLUDE "WIN32API.INC" #ENDIF #IF NOT %DEF(%COMMCTRL_INC) #INCLUDE "COMMCTRL.INC" #ENDIF #INCLUDE "PBForms.INC" #PBFORMS END INCLUDES '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ ' ** Constants ** '------------------------------------------------------------------------------ #PBFORMS BEGIN CONSTANTS %IDC_POSITIONX = 1001 %IDC_POSITIONY = 1003 %IDD_MAINWINDOW = 102 %IDD_TESTTABBING = 101 %IDT_POSITIONX = 1004 %IDT_POSITIONY = 1005 #PBFORMS END CONSTANTS '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ ' ** Declarations ** '------------------------------------------------------------------------------ DECLARE CALLBACK FUNCTION ShowChildDialogProc() DECLARE FUNCTION ShowChildDialog(BYVAL hParent AS DWORD) AS LONG DECLARE CALLBACK FUNCTION ShowMainWindowProc() DECLARE FUNCTION ShowMainWindow(BYVAL hDlg AS DWORD) AS LONG #PBFORMS DECLARATIONS '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ ' ** Main Application Entry Point ** '------------------------------------------------------------------------------ FUNCTION PBMAIN() PBFormsInitComCtls (%ICC_WIN95_CLASSES OR %ICC_DATE_CLASSES OR _ %ICC_INTERNET_CLASSES) ShowMainWindow %HWND_DESKTOP END FUNCTION '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ ' ** CallBacks ** '------------------------------------------------------------------------------ CALLBACK FUNCTION ShowChildDialogProc() SELECT CASE AS LONG CBMSG CASE %WM_INITDIALOG ' Initialization handler CONTROL SET TEXT CB.HNDL, %IDT_POSITIONX, "10" CONTROL SET TEXT CB.HNDL, %IDT_POSITIONY, "-5" CASE %WM_NCACTIVATE STATIC hWndSaveFocus AS DWORD IF ISFALSE CBWPARAM THEN ' Save control focus hWndSaveFocus = GetFocus() ELSEIF hWndSaveFocus THEN ' Restore control focus SetFocus(hWndSaveFocus) hWndSaveFocus = 0 END IF CASE %WM_COMMAND ' Process control notifications SELECT CASE AS LONG CBCTL END SELECT END SELECT END FUNCTION '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ ' ** Dialogs ** '------------------------------------------------------------------------------ FUNCTION ShowChildDialog(BYVAL hParent AS DWORD) AS LONG LOCAL lRslt AS LONG #PBFORMS BEGIN DIALOG %IDD_TESTTABBING->-> LOCAL hDlg AS DWORD DIALOG NEW PIXELS, hParent, "Test Tabbing", 0, 0, 256, 182, _ %WS_CHILD OR %WS_CLIPCHILDREN OR %WS_VISIBLE _ OR %DS_NOFAILCREATE OR %DS_SETFONT, _ %WS_EX_STATICEDGE OR %WS_EX_LEFT OR %WS_EX_LTRREADING, TO hDlg CONTROL ADD "msctls_updown32", hDlg, %IDC_POSITIONX, "PositionX", 78, 52, _ 14, 20, %WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %UDS_SETBUDDYINT CONTROL ADD "msctls_updown32", hDlg, %IDC_POSITIONY, "PositionY", 78, 78, _ 14, 20, %WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %UDS_SETBUDDYINT CONTROL ADD TEXTBOX, hDlg, %IDT_POSITIONX, "PositionX", 24, 52, 54, 20 CONTROL ADD TEXTBOX, hDlg, %IDT_POSITIONY, "PositionY", 24, 78, 54, 20 #PBFORMS END DIALOG LOCAL hTextBox, hUpDown AS DWORD CONTROL HANDLE hDlg, %IDC_POSITIONX TO hUpDown CONTROL HANDLE hDlg, %IDT_POSITIONX TO hTextBox CONTROL SEND hDlg, %IDC_POSITIONX, %UDM_SETBUDDY, hTextBox, 0 CONTROL SEND hDlg, %IDC_POSITIONX, %UDM_SETRANGE32, -255, 255 CONTROL HANDLE hDlg, %IDC_POSITIONY TO hUpDown CONTROL HANDLE hDlg, %IDT_POSITIONY TO hTextBox CONTROL SEND hDlg, %IDC_POSITIONY, %UDM_SETBUDDY, hTextBox, 0 CONTROL SEND hDlg, %IDC_POSITIONY, %UDM_SETRANGE32, -255, 255 #PBFORMS BEGIN CLEANUP %IDD_TESTTABBING #PBFORMS END CLEANUP FUNCTION = hDlg END FUNCTION '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ CALLBACK FUNCTION ShowMainWindowProc() STATIC hChild AS DWORD SELECT CASE AS LONG CBMSG CASE %WM_INITDIALOG ' Initialization handler hChild = ShowChildDialog(CB.HNDL) DIALOG SHOW MODELESS hChild, CALL ShowChildDialogProc CASE %WM_SIZE LOCAL FormX, FormY AS LONG DIALOG GET CLIENT CB.HNDL TO FormX, FormY CONTROL SET LOC CB.HNDL, %IDT_POSITIONX, 0, 0 CONTROL SET LOC CB.HNDL, %IDT_POSITIONY, 100, 0 DIALOG SET LOC hchild, 0, 25 CASE %WM_NCACTIVATE STATIC hWndSaveFocus AS DWORD IF ISFALSE CBWPARAM THEN ' Save control focus hWndSaveFocus = GetFocus() ELSEIF hWndSaveFocus THEN ' Restore control focus SetFocus(hWndSaveFocus) hWndSaveFocus = 0 END IF CASE %WM_DESTROY PostQuitMessage 0 CASE %WM_COMMAND ' Process control notifications SELECT CASE AS LONG CBCTL END SELECT END SELECT END FUNCTION '------------------------------------------------------------------------------ '------------------------------------------------------------------------------ FUNCTION ShowMainWindow(BYVAL hParent AS DWORD) AS LONG LOCAL lRslt AS LONG #PBFORMS BEGIN DIALOG %IDD_MAINWINDOW->-> LOCAL hDlg AS DWORD DIALOG NEW PIXELS, hParent, "Main Window", %CW_USEDEFAULT, %CW_USEDEFAULT, 300, 350, %WS_POPUP OR _ %WS_BORDER OR %WS_THICKFRAME OR %WS_CAPTION OR %WS_SYSMENU OR _ %WS_MINIMIZEBOX OR %WS_MAXIMIZEBOX OR %WS_CLIPSIBLINGS OR _ %WS_CLIPCHILDREN 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 CONTROL ADD TEXTBOX, hDlg, %IDT_POSITIONX, "PositionX", 24, 52, 54, 20 CONTROL ADD TEXTBOX, hDlg, %IDT_POSITIONY, "PositionY", 24, 78, 54, 20 #PBFORMS END DIALOG
Code:
DIALOG SHOW MODELESS hDlg, CALL ShowMainWindowProc TO lRslt LOCAL Msg AS TAGMSG WHILE GetMessage(Msg, BYVAL %NULL, 0, 0) > 0 TranslateMessage Msg DispatchMessage Msg WEND #PBFORMS BEGIN CLEANUP %IDD_MAINWINDOW #PBFORMS END CLEANUP FUNCTION = lRslt END FUNCTION '------------------------------------------------------------------------------

Leave a comment: