How do you add controls to a frame?
Can't get them to move as a group.
Where in the docs is this?
Can't get them to move as a group.
Where in the docs is this?
' *************************************************************** ' This code can be used Royalty Free and Freely Distributed ! ' *************************************************************** #COMPILE EXE #REGISTER NONE #DIM ALL ' This is helpful to prevent errors in coding #INCLUDE "win32api.inc" ' Must come first before other include files ! ' ************************************************************* ' Constants and Declares (#1) ' ************************************************************* DECLARE SUB LIB_InitColors() DECLARE SUB LIB_DeleteBrushes() %FORM1_FRAME1 = 100 %FORM1_LABEL1 = 105 %FORM1_BUTTON1 = 110 %FORM1_BUTTON2 = 115 ' -------------------------------------------------- DECLARE SUB ShowDialog_Form1(BYVAL hParent&) DECLARE CALLBACK FUNCTION Form1_DLGPROC ' -------------------------------------------------- ' ------------------------------------------------ DECLARE CALLBACK FUNCTION CBF_FORM1_BUTTON1() DECLARE CALLBACK FUNCTION CBF_FORM1_BUTTON2() ' ************************************************************* ' Application Globals Variables (#2) ' ************************************************************* GLOBAL App_Brush&() GLOBAL App_Color&() GLOBAL hForm1& ' Dialog handle ' ************************************************************* ' Application Entrance ' ************************************************************* FUNCTION PBMAIN LOCAL Count& LIB_InitColors ShowDialog_Form1 0 DO DIALOG DOEVENTS TO Count& LOOP UNTIL Count&=0 LIB_DeleteBrushes END FUNCTION ' ************************************************************* ' Application Dialogs (#3) ' ************************************************************* GLOBAL OriginalFrameWinProc AS DWORD ' FUNCTION FrameSubclassProc(BYVAL hWnd&, BYVAL Msg&, BYVAL wParam&, BYVAL lParam&) AS LONG SELECT CASE Msg& CASE %WM_COMMAND, %WM_NOTIFY, %WM_CTLCOLORBTN, %WM_CTLCOLOREDIT, %WM_CTLCOLORSTATIC, %WM_CTLCOLORSCROLLBAR, %WM_CTLCOLORLISTBOX, %WM_PARENTNOTIFY ' forward messages to parent dialog so DDT can handle it FUNCTION=SendMessage(GetParent(hWnd&), Msg&, wParam&, lParam&) EXIT FUNCTION CASE %WM_DESTROY SetWindowLong hWnd&, %GWL_WNDPROC, OriginalFrameWinProc CASE ELSE END SELECT FUNCTION=CallWindowProc(OriginalFrameWinProc, hWnd&, Msg&, wParam&, lParam&) END FUNCTION FUNCTION MakeFrameContainer(BYVAL hDlg&, BYVAL ID&) AS LONG LOCAL hCtrl& CONTROL HANDLE hDlg&, ID& TO hCtrl& OriginalFrameWinProc=SetWindowLong(hCtrl&, %GWL_WNDPROC, CODEPTR(FrameSubclassProc)) FUNCTION=hCtrl& END FUNCTION SUB SetNewParent(BYVAL hDlg&, BYVAL ID&, BYVAL ParentID&) LOCAL hCtrl&, hNewParent& CONTROL HANDLE hDlg&, ID& TO hCtrl& CONTROL HANDLE hDlg&, ParentID& TO hNewParent& SetParent hCtrl&, hNewParent& END SUB SUB ShowDialog_Form1(BYVAL hParent&) LOCAL Style&, ExStyle&, hFrame& LOCAL N&, CT& ' Variables used for Reading Data in Arrays for Listbox and Combobox ' hParent& = 0 if no parent Dialog Style& = %WS_POPUP OR %DS_MODALFRAME OR %WS_CAPTION OR %WS_MINIMIZEBOX OR %WS_SYSMENU OR %DS_CENTER ExStyle& = 0 DIALOG NEW hParent&, "Your Dialog", 0, 0, 309, 246, Style&, ExStyle& TO hForm1& CONTROL ADD FRAME, hForm1&, %FORM1_FRAME1, "Frame 1", 11, 17, 232, 148, _ %WS_CHILD OR %WS_VISIBLE OR %BS_GROUPBOX, _ %WS_EX_TRANSPARENT OR %WS_EX_CONTROLPARENT hFrame& = MakeFrameContainer(hForm1&,%FORM1_FRAME1) ' must create controls on dialog or they won't be right sizeor position ' DDT doesn't use dialog units when the parent of CONTROL ADD is not a dialog CONTROL ADD LABEL, hForm1&, %FORM1_LABEL1, "Frame Clips Label ->", 147, 121, 117, 25, _ %WS_CHILD OR %WS_VISIBLE OR %SS_CENTER OR %WS_BORDER CONTROL ADD "Button", hForm1&, %FORM1_BUTTON1, "Button 1", 27, 39, 56, 25, _ %WS_CHILD OR %WS_VISIBLE OR %BS_PUSHBUTTON OR %WS_TABSTOP CALL CBF_FORM1_BUTTON1 CONTROL ADD "Button", hForm1&, %FORM1_BUTTON2, "Button 2", 27, 74, 56, 22, _ %WS_CHILD OR %WS_VISIBLE OR %BS_PUSHBUTTON OR %WS_TABSTOP CALL CBF_FORM1_BUTTON2 ' must use SetParent to put the controls on the frame SetNewParent hForm1&,%FORM1_LABEL1,%FORM1_FRAME1 SetNewParent hForm1&,%FORM1_BUTTON1,%FORM1_FRAME1 SetNewParent hForm1&,%FORM1_BUTTON2,%FORM1_FRAME1 DIALOG SHOW MODELESS hForm1& , CALL Form1_DLGPROC END SUB ' ************************************************************* ' Dialog Callback Procedure ' for Form Form1 ' uses Global Handle - hForm1& ' ************************************************************* CALLBACK FUNCTION Form1_DLGPROC SELECT CASE CBMSG CASE %WM_HSCROLL CASE %WM_VSCROLL CASE %WM_CLOSE ' ----------------------------------------------- CASE %WM_CTLCOLORMSGBOX , %WM_CTLCOLORBTN, %WM_CTLCOLOREDIT,_ %WM_CTLCOLORSTATIC, %WM_CTLCOLORSCROLLBAR, %WM_CTLCOLORLISTBOX ' Control colors SELECT CASE GetDlgCtrlID(CBLPARAM) CASE %FORM1_LABEL1 SetTextColor CBWPARAM, App_Color&( 0) SetBkColor CBWPARAM, App_Color&( 17) FUNCTION=App_Brush&( 17) CASE ELSE FUNCTION=0 END SELECT CASE %WM_COMMAND ' Process Messages to Controls that have no Callback Function ' and Process Messages to Menu Items SELECT CASE CBCTL CASE ELSE END SELECT CASE ELSE END SELECT END FUNCTION ' ******************************************************************* ' * Library Code * ' ******************************************************************** SUB LIB_InitColors() DATA 0, 8388608, 32768, 8421376, 196, 8388736, 16512, 12895428 DATA 8421504, 16711680, 65280, 16776960, 255, 16711935, 65535, 16777215 DATA 10790052, 16752768, 10551200, 16777120, 10526975, 16752895, 10551295, 13948116 DATA 11842740, 16768188, 14483420, 16777180, 14474495, 16768255, 14483455, 15000804 LOCAL T&, RGBVal& REDIM App_Brush&(0 TO 31) REDIM App_Color&(0 TO 31) FOR T&=0 TO 31 RGBVal&=VAL(READ$(T&+1)) App_Brush&(T&)=CreateSolidBrush(RGBVal&) App_Color&(T&)=RGBVal& NEXT T& END SUB ' ------------------------------------------------------------- SUB LIB_DeleteBrushes() LOCAL T& FOR T&=0 TO 31 DeleteObject App_Brush&(T&) NEXT T& END SUB ' ------------------------------------------------------------- ' ************************************************************* ' Application Callback Functions (or Subs) for Controls (#4) ' ************************************************************* ' ------------------------------------------------ CALLBACK FUNCTION CBF_FORM1_BUTTON1 IF CBCTLMSG=%BN_CLICKED THEN MSGBOX "Button 1 Clicked" END IF END FUNCTION ' ------------------------------------------------ ' ------------------------------------------------ CALLBACK FUNCTION CBF_FORM1_BUTTON2 IF CBCTLMSG=%BN_CLICKED THEN MSGBOX "Button 2 Clicked" END IF END FUNCTION ' ------------------------------------------------ ' ************************************************************* ' Other Common Procedures and Functions ' *************************************************************
' *************************************************************** ' This code can be used Royalty Free and Freely Distributed ! ' *************************************************************** #COMPILE EXE #REGISTER NONE #DIM ALL ' This is helpful to prevent errors in coding #INCLUDE "win32api.inc" ' Must come first before other include files ! ' ************************************************************* ' Constants and Declares (#1) ' ************************************************************* DECLARE SUB LIB_InitColors() DECLARE SUB LIB_DeleteBrushes() %FORM1_FRAME1 = 100 %FORM1_LABEL1 = 105 %FORM1_BUTTON1 = 110 %FORM1_BUTTON2 = 115 ' -------------------------------------------------- DECLARE SUB ShowDialog_Form1(BYVAL hParent&) DECLARE CALLBACK FUNCTION Form1_DLGPROC ' -------------------------------------------------- ' ------------------------------------------------ DECLARE SUB CBF_FORM1_BUTTON1(BYVAL NCode&) DECLARE SUB CBF_FORM1_BUTTON2(BYVAL NCode&) ' ************************************************************* ' Application Globals Variables (#2) ' ************************************************************* GLOBAL App_Brush&() GLOBAL App_Color&() GLOBAL hForm1& ' Dialog handle ' ************************************************************* ' Application Entrance ' ************************************************************* FUNCTION PBMAIN LOCAL Count& LIB_InitColors ShowDialog_Form1 0 DO DIALOG DOEVENTS TO Count& LOOP UNTIL Count&=0 LIB_DeleteBrushes END FUNCTION ' ************************************************************* ' Application Dialogs (#3) ' ************************************************************* GLOBAL OriginalFrameWinProc AS DWORD ' FUNCTION FrameSubclassProc(BYVAL hWnd&, BYVAL Msg&, BYVAL wParam&, BYVAL lParam&) AS LONG SELECT CASE Msg& CASE %WM_COMMAND, %WM_NOTIFY, %WM_CTLCOLORBTN, %WM_CTLCOLOREDIT, %WM_CTLCOLORSTATIC, %WM_CTLCOLORSCROLLBAR, %WM_CTLCOLORLISTBOX, %WM_PARENTNOTIFY ' forward messages to parent dialog so DDT can handle it FUNCTION=SendMessage(GetParent(hWnd&), Msg&, wParam&, lParam&) EXIT FUNCTION CASE %WM_DESTROY SetWindowLong hWnd&, %GWL_WNDPROC, OriginalFrameWinProc CASE ELSE END SELECT FUNCTION=CallWindowProc(OriginalFrameWinProc, hWnd&, Msg&, wParam&, lParam&) END FUNCTION FUNCTION MakeFrameContainer(BYVAL hDlg&, BYVAL ID&) AS LONG LOCAL hCtrl& CONTROL HANDLE hDlg&, ID& TO hCtrl& OriginalFrameWinProc=SetWindowLong(hCtrl&, %GWL_WNDPROC, CODEPTR(FrameSubclassProc)) FUNCTION=hCtrl& END FUNCTION SUB SetNewParent(BYVAL hDlg&, BYVAL ID&, BYVAL ParentID&) LOCAL hCtrl&, hNewParent& CONTROL HANDLE hDlg&, ID& TO hCtrl& CONTROL HANDLE hDlg&, ParentID& TO hNewParent& SetParent hCtrl&, hNewParent& END SUB SUB ShowDialog_Form1(BYVAL hParent&) LOCAL Style&, ExStyle&, hFrame& LOCAL N&, CT& ' Variables used for Reading Data in Arrays for Listbox and Combobox ' hParent& = 0 if no parent Dialog Style& = %WS_POPUP OR %DS_MODALFRAME OR %WS_CAPTION OR %WS_MINIMIZEBOX OR %WS_SYSMENU OR %DS_CENTER ExStyle& = 0 DIALOG NEW hParent&, "Your Dialog", 0, 0, 309, 246, Style&, ExStyle& TO hForm1& CONTROL ADD FRAME, hForm1&, %FORM1_FRAME1, "Frame 1", 11, 17, 232, 148, _ %WS_CHILD OR %WS_VISIBLE OR %BS_GROUPBOX, _ %WS_EX_TRANSPARENT OR %WS_EX_CONTROLPARENT hFrame& = MakeFrameContainer(hForm1&,%FORM1_FRAME1) ' must create controls on dialog or they won't be right sizeor position ' DDT doesn't use dialog units when the parent of CONTROL ADD is not a dialog CONTROL ADD LABEL, hForm1&, %FORM1_LABEL1, "Frame Clips Label ->", 147, 121, 117, 25, _ %WS_CHILD OR %WS_VISIBLE OR %SS_CENTER OR %WS_BORDER CONTROL ADD "Button", hForm1&, %FORM1_BUTTON1, "Button 1", 27, 39, 56, 25, _ %WS_CHILD OR %WS_VISIBLE OR %BS_PUSHBUTTON OR %WS_TABSTOP CONTROL ADD "Button", hForm1&, %FORM1_BUTTON2, "Button 2", 27, 74, 56, 22, _ %WS_CHILD OR %WS_VISIBLE OR %BS_PUSHBUTTON OR %WS_TABSTOP ' must use SetParent to put the controls on the frame SetNewParent hForm1&,%FORM1_LABEL1,%FORM1_FRAME1 SetNewParent hForm1&,%FORM1_BUTTON1,%FORM1_FRAME1 SetNewParent hForm1&,%FORM1_BUTTON2,%FORM1_FRAME1 DIALOG SHOW MODELESS hForm1& , CALL Form1_DLGPROC END SUB ' ************************************************************* ' Dialog Callback Procedure ' for Form Form1 ' uses Global Handle - hForm1& ' ************************************************************* CALLBACK FUNCTION Form1_DLGPROC SELECT CASE CBMSG CASE %WM_HSCROLL CASE %WM_VSCROLL CASE %WM_CLOSE ' ----------------------------------------------- CASE %WM_CTLCOLORMSGBOX , %WM_CTLCOLORBTN, %WM_CTLCOLOREDIT,_ %WM_CTLCOLORSTATIC, %WM_CTLCOLORSCROLLBAR, %WM_CTLCOLORLISTBOX ' Control colors SELECT CASE GetDlgCtrlID(CBLPARAM) CASE %FORM1_LABEL1 SetTextColor CBWPARAM, App_Color&( 0) SetBkColor CBWPARAM, App_Color&( 17) FUNCTION=App_Brush&( 17) CASE ELSE FUNCTION=0 END SELECT CASE %WM_COMMAND ' Process Messages to Controls that have no Callback Function ' and Process Messages to Menu Items SELECT CASE CBCTL CASE %FORM1_BUTTON1 CBF_FORM1_BUTTON1 HIWRD(CBWPARAM) CASE %FORM1_BUTTON2 CBF_FORM1_BUTTON2 HIWRD(CBWPARAM) CASE ELSE END SELECT CASE ELSE END SELECT END FUNCTION ' ******************************************************************* ' * Library Code * ' ******************************************************************** SUB LIB_InitColors() DATA 0, 8388608, 32768, 8421376, 196, 8388736, 16512, 12895428 DATA 8421504, 16711680, 65280, 16776960, 255, 16711935, 65535, 16777215 DATA 10790052, 16752768, 10551200, 16777120, 10526975, 16752895, 10551295, 13948116 DATA 11842740, 16768188, 14483420, 16777180, 14474495, 16768255, 14483455, 15000804 LOCAL T&, RGBVal& REDIM App_Brush&(0 TO 31) REDIM App_Color&(0 TO 31) FOR T&=0 TO 31 RGBVal&=VAL(READ$(T&+1)) App_Brush&(T&)=CreateSolidBrush(RGBVal&) App_Color&(T&)=RGBVal& NEXT T& END SUB ' ------------------------------------------------------------- SUB LIB_DeleteBrushes() LOCAL T& FOR T&=0 TO 31 DeleteObject App_Brush&(T&) NEXT T& END SUB ' ------------------------------------------------------------- ' ************************************************************* ' Application Callback Functions (or Subs) for Controls (#4) ' ************************************************************* ' ------------------------------------------------ SUB CBF_FORM1_BUTTON1(BYVAL NCode&) IF NCode&=%BN_CLICKED THEN MSGBOX "Button 1 Clicked" END IF END SUB ' ------------------------------------------------ ' ------------------------------------------------ SUB CBF_FORM1_BUTTON2(BYVAL NCode&) IF NCode&=%BN_CLICKED THEN MSGBOX "Button 2 Clicked" END IF END SUB ' ------------------------------------------------ ' ************************************************************* ' Other Common Procedures and Functions ' *************************************************************
We process personal data about users of our site, through the use of cookies and other technologies, to deliver our services, and to analyze site activity. For additional details, refer to our Privacy Policy.
By clicking "I AGREE" below, you agree to our Privacy Policy and our personal data processing and cookie practices as described therein. You also acknowledge that this forum may be hosted outside your country and you consent to the collection, storage, and processing of your data in the country where this forum is hosted.
Comment