WINDOW cp WINRECT rcTemp,rcTemp2 CONST IDTOOLBAR = 98 CONST IDIPADDRESS = 9 CONST IDDATEPICKER = 8 CONST IDPROGRESSBAR = 7 CONST IDTRACKBAR = 6 CONST IDCOMBOBOX = 5 CONST IDREBAR = 4 CONST IDCALENDAR = 3 CONST IDTABCONTROL = 2 REM define the toolbar array REM which consists of the CONTROL ID's or 0 for a separator DEF tbArray[10]:INT tbArray = 22,23,24,0,25,26,27,0,28,29 CONST CCS_NODIVIDER = 0x00000040 OPENWINDOW cp,0,0,640,480,@MINBOX|@MAXBOX|@SIZE|@NOAUTODRAW,0,"Control Pak Test",&main ENABLETABS cp,TRUE 'a tab CONTROL TabControl cp,0,0,640,480,@BORDER|@TABSTOP|@TCS_TOOLTIPS|@TCS_HOTTRACK,0,IDTABCONTROL tcInsertTab cp,IDTABCONTROL,0,"Calendar" tcInsertTab cp,IDTABCONTROL,1,"Trackbar" tcInsertTab cp,IDTABCONTROL,2,"Progress Bar" tcInsertTab cp,IDTABCONTROL,3,"Date/Time picker" tcInsertTab cp,IDTABCONTROL,4,"IP Address" SETFONT cp,"Arial",12,400,0,IDTABCONTROL 'tooltips for the tabs tcSetTip cp,IDTABCONTROL,0,tcGetTabText(cp,IDTABCONTROL,0) tcSetTip cp,IDTABCONTROL,1,tcGetTabText(cp,IDTABCONTROL,1) tcSetTip cp,IDTABCONTROL,2,tcGetTabText(cp,IDTABCONTROL,2) tcSetTip cp,IDTABCONTROL,3,tcGetTabText(cp,IDTABCONTROL,3) tcSetTip cp,IDTABCONTROL,4,tcGetTabText(cp,IDTABCONTROL,4) 'a calandar CONTROL CalendarControl cp,0,0,0,0,@BORDER|@TABSTOP,0,IDCALENDAR ccGetMinimumRect cp,IDCALENDAR,rcTemp SETSIZE cp,40,80,rcTemp.right,rcTemp.bottom,IDCALENDAR ccSetColor cp,IDCALENDAR,MCSC_MONTHBK,RGB(202,202,202) 'a trackbar CONTROL TrackBarControl cp,40,80,236,40,@TBS_AUTOTICKS|@TBS_FIXEDLENGTH|@TABSTOP|@BORDER,0,IDTRACKBAR SetTrackBarRange cp,IDTRACKBAR,-100,100 SetTrackBarTickFreq cp,IDTRACKBAR,10 SetTrackBarPageSize cp,IDTRACKBAR,20 SetTrackBarThumbLength cp,IDTRACKBAR,20 SHOWWINDOW cp,@SWHIDE,IDTRACKBAR SETCONTROLCOLOR cp,IDTRACKBAR, RGB(255,255,0),RGB(0,0,255) 'a progressbar CONTROL ProgressControl cp,40,80,236,20,@BORDER|@PBS_SMOOTH,0,IDPROGRESSBAR SetProgressRange cp,IDPROGRESSBAR,0,500 SetProgressStep cp,IDPROGRESSBAR,50 SHOWWINDOW cp,@SWHIDE,IDPROGRESSBAR 'a date/time picker DateTimePicker cp,"Pick a date",40,80,140,30,@BORDER|@TABSTOP|@DTS_TIMEFORMAT|@DTS_SHOWNONE,0,IDDATEPICKER SHOWWINDOW cp,@SWHIDE,IDDATEPICKER 'an IP address CONTROL IPControl cp,40,80,206,20,@TABSTOP,0,IDIPADDRESS IPSetAddress cp,IDIPADDRESS,127,0,0,1 SHOWWINDOW cp,@SWHIDE,IDIPADDRESS 'a Rebar CONTROL RebarControl cp,@RBS_VARHEIGHT,0,IDREBAR rbAddBand cp,IDREBAR,0,@RBBS_CHILDEDGE,200,50,25 rbAddBand cp,IDREBAR,1,@RBBS_CHILDEDGE,250,50,40 rbSetBandText cp,IDREBAR,0,"Combo Box" rbSetBandText cp,IDREBAR,1,"Toolbar" 'a combo box for the rebar CONTROL ComboBoxEx cp,0,0,100,100,@CTCOMBODROPDOWN|@VSCROLL,0,IDCOMBOBOX cbeAddString cp,IDCOMBOBOX,"String1" cbeAddString cp,IDCOMBOBOX,"String2" cbeAddString cp,IDCOMBOBOX,"String3" rbSetBandChild cp,IDREBAR,0,IDCOMBOBOX 'a toolbar for the rebar contol REM this toolbar is loaded from a bitmap file int hBitmap = LOADIMAGE(GETSTARTPATH() + "toolbar.bmp",@IMGBITMAP | @IMGMAPCOLORS) IF LOADTOOLBAR(cp,hBitmap,IDTOOLBAR,tbArray,10,@TBTOP|@TBFROMHANDLE|@TBTRANSPARENT|@TBTOOLTIPS|@TBNORESIZE|@TBNOALIGN|CCS_NODIVIDER) CONTROLCMD cp,IDTOOLBAR,@TBENABLEBUTTON,23,0 REM set the text labels for the buttons CONTROLCMD cp,IDTOOLBAR,@TBSETLABELS,"New|Open|Save|Cut|Copy|Paste|Print|Help||" REM set the tooltips CONTROLCMD cp,IDTOOLBAR,@TBSETTIP,22,"Create New File" CONTROLCMD cp,IDTOOLBAR,@TBSETTIP,23,"Opens New File" CONTROLCMD cp,IDTOOLBAR,@TBSETTIP,24,"Saves current file" CONTROLCMD cp,IDTOOLBAR,@TBSETTIP,25,"Cuts selection" CONTROLCMD cp,IDTOOLBAR,@TBSETTIP,26,"Copy to clipboard" CONTROLCMD cp,IDTOOLBAR,@TBSETTIP,27,"Paste from clipboard" CONTROLCMD cp,IDTOOLBAR,@TBSETTIP,28,"Prints current document" CONTROLCMD cp,IDTOOLBAR,@TBSETTIP,29,"Opens the help file" ENDIF rbSetBandChild cp,IDREBAR,1,IDTOOLBAR recalcLayout() 'to animate the progressbar STARTTIMER cp,500 WAITUNTIL cp = NULL END SUB main int tab SELECT @MESSAGE CASE @IDCREATE CENTERWINDOW cp CASE @IDCLOSEWINDOW CLOSEWINDOW cp CASE @IDSIZECHANGED 'send the message to the rebar CONTROL SENDMESSAGE cp,@IDSIZECHANGED,@WPARAM,@LPARAM,IDREBAR 'resize the tab CONTROL recalcLayout() CASE @IDCONTROL SELECT @CONTROLID CASE IDTABCONTROL:'tab CONTROL IF @NOTIFYCODE = @TCN_SELCHANGE tab = tcGetSelectedTab(cp,IDTABCONTROL) SELECT tab case 0:'show the calendar SHOWWINDOW cp,@SWRESTORE,IDCALENDAR SHOWWINDOW cp,@SWHIDE,IDTRACKBAR SHOWWINDOW cp,@SWHIDE,IDPROGRESSBAR SHOWWINDOW cp,@SWHIDE,IDDATEPICKER SHOWWINDOW cp,@SWHIDE,IDIPADDRESS case 1:'show the trackbar SHOWWINDOW cp,@SWRESTORE,IDTRACKBAR SHOWWINDOW cp,@SWHIDE,IDCALENDAR SHOWWINDOW cp,@SWHIDE,IDPROGRESSBAR SHOWWINDOW cp,@SWHIDE,IDDATEPICKER SHOWWINDOW cp,@SWHIDE,IDIPADDRESS case 2:'show the progress bar SHOWWINDOW cp,@SWRESTORE,IDPROGRESSBAR SHOWWINDOW cp,@SWHIDE,IDCALENDAR SHOWWINDOW cp,@SWHIDE,IDTRACKBAR SHOWWINDOW cp,@SWHIDE,IDDATEPICKER SHOWWINDOW cp,@SWHIDE,IDIPADDRESS case 3: 'show the date/time picker SHOWWINDOW cp,@SWRESTORE,IDDATEPICKER SHOWWINDOW cp,@SWHIDE,IDCALENDAR SHOWWINDOW cp,@SWHIDE,IDTRACKBAR SHOWWINDOW cp,@SWHIDE,IDPROGRESSBAR SHOWWINDOW cp,@SWHIDE,IDIPADDRESS case 4: 'show the IP address CONTROL SHOWWINDOW cp,@SWRESTORE,IDIPADDRESS SHOWWINDOW cp,@SWHIDE,IDDATEPICKER SHOWWINDOW cp,@SWHIDE,IDCALENDAR SHOWWINDOW cp,@SWHIDE,IDTRACKBAR SHOWWINDOW cp,@SWHIDE,IDPROGRESSBAR ENDSELECT recalcLayout() ENDIF CASE IDREBAR:'rebar IF @NOTIFYCODE = @RBN_HEIGHTCHANGE THEN recalcLayout() CASE 29:'the help button IF @NOTIFYCODE = 0 MESSAGEBOX cp,"Control Pak Demo","About" ENDIF CASE IDCOMBOBOX 'the combobox is a child of the rebar CONTROL 'so assign its hwnd to a WINDOW varible for convenience WINDOW rb rb.hWnd = GETCONTROLHANDLE(cp,IDREBAR) IF @NOTIFYCODE = @CBNSELCHANGE MESSAGEBOX rb,cbeGetString(rb,IDCOMBOBOX,cbeGetSelected(rb,IDCOMBOBOX)),"Selected" ENDIF CASE IDDATEPICKER IF @NOTIFYCODE = @DTN_DATETIMECHANGE IF *@LPARAM.dwFlags <> GDT_NONE 'access the date/time set in the CONTROL int hour = *@LPARAM.st.wHour int minute = *@LPARAM.st.wMinute int second = *@LPARAM.st.wSecond int day = *@LPARAM.st.wDay int month = *@LPARAM.st.wMonth int year = *@LPARAM.st.wYear ENDIF ENDIF ENDSELECT CASE @IDTIMER ProgressStepIt cp,IDPROGRESSBAR IF GetProgressPosition(cp,IDPROGRESSBAR) > 500 THEN SetProgressPosition(cp,IDPROGRESSBAR,0) ENDSELECT RETURN 0 ENDSUB DECLARE IMPORT,BringWindowToTop(hwnd as UINT) DECLARE IMPORT,ScreenToClient(hwnd as UINT,pt as POINT) SUB recalcLayout int c int tab GETCLIENTSIZE cp,rcTemp.left,rcTemp.top,rcTemp.right,rcTemp.bottom GETSIZE cp,rcTemp2.left,rcTemp2.top,rcTemp2.right,rcTemp2.bottom,IDREBAR SETSIZE cp,0,rcTemp2.bottom,rcTemp.right,rcTemp.bottom-rcTemp2.bottom,IDTABCONTROL 'bring the shown CONTROL to the top tab = tcGetSelectedTab(cp,IDTABCONTROL) SELECT tab case 0 c = IDCALENDAR case 1 c = IDTRACKBAR case 2 c = IDPROGRESSBAR case 3 c = IDDATEPICKER case 4 c = IDIPADDRESS ENDSELECT BringWindowToTop(GETCONTROLHANDLE(cp,c)) 'align the CONTROL so it matches the tab CONTROL GETSIZE cp,rcTemp.left,rcTemp.top,rcTemp.right,rcTemp.bottom,IDTABCONTROL GETSIZE cp,rcTemp2.left,rcTemp2.top,rcTemp2.right,rcTemp2.bottom,c ScreenToClient(cp.hWnd,rcTemp2) ScreenToClient(cp.hWnd,rcTemp) SETSIZE cp,rcTemp2.left,rcTemp.top+40,rcTemp2.right,rcTemp2.bottom,c 'SETFOCUS cp,c RETURN ENDSUB