A little bit of a brain cramp, ...can the trackbar be flipped to work from bottom 0 to top 255 ? Demo below works from top 0 to bottom 255.
Thx.
Regards,
Jules
Thx.
Regards,
Jules
Code:
#COMPILE EXE #DIM ALL '---Includes... #INCLUDE "WIN32API.INC" #INCLUDE "COMMCTRL.INC" #INCLUDE "PBForms.INC" '---Constants... %IDD_Form1 = 101 'main form %IDC_VTrackbar1 = 1601 %IDC_Label3 = 1602 %IDC_VTrackbar2 = 1603 %IDC_Label4 = 1604 %IDC_Frame2 = 1801 %IDC_Frame3 = 1802 %DAC_MAX = 255 %DAC_MIN = 0 '---Delcares... DECLARE CALLBACK FUNCTION ShowForm1Proc() DECLARE FUNCTION ShowForm1(BYVAL hParent AS DWORD) AS LONG '------------------------------------------------------------------------------ ' '------------------------------------------------------------------------------ SUB UpdateAnalogOutputStatus(BYVAL hDlg AS DWORD, BYVAL dac1 AS BYTE, BYVAL dac2 AS BYTE) '-update the position of the trackbars ' not necessary like scrollbars, but caller can set it manually with this call. CONTROL SEND hDlg,%IDC_VTrackbar1,%TBM_SETPOS,%TRUE, dac1 CONTROL SEND hDlg,%IDC_VTrackbar2,%TBM_SETPOS,%TRUE, dac2 '-update the values CONTROL SET TEXT hDlg,%IDC_Label3, STR$(dac1) CONTROL SET TEXT hDlg,%IDC_Label4, STR$(dac2) END SUB '------------------------------------------------------------------------------ ' '------------------------------------------------------------------------------ FUNCTION PBMAIN() PBFormsInitComCtls( %ICC_WIN95_CLASSES OR %ICC_DATE_CLASSES OR %ICC_INTERNET_CLASSES ) 'Macro CALL ShowForm1(%HWND_DESKTOP) END FUNCTION '------------------------------------------------------------------------------ ' '------------------------------------------------------------------------------ CALLBACK FUNCTION ShowForm1Proc() LOCAL lrt AS LONG LOCAL cstatus AS STRING STATIC cardAddress AS LONG LOCAL tPos1 AS LONG, tPos2 AS LONG '--- SELECT CASE AS LONG CBMSG '--- CASE %WM_INITDIALOG '-initialize trackbars... CONTROL SEND CBHNDL,%IDC_VTrackbar1,%TBM_SETRANGE,%TRUE,MAKDWD(0,255) 'set range CONTROL SEND CBHNDL,%IDC_VTrackbar1,%TBM_SETTICFREQ,8,0 'set tic frequency CONTROL SEND CBHNDL,%IDC_VTrackbar1,%TBM_SETPAGESIZE,0,10 'set page size CONTROL SEND CBHNDL,%IDC_VTrackbar2,%TBM_SETRANGE,%TRUE,MAKDWD(0,255) 'set range CONTROL SEND CBHNDL,%IDC_VTrackbar2,%TBM_SETTICFREQ,8,0 'set tick frequency CONTROL SEND CBHNDL,%IDC_VTrackbar2,%TBM_SETPAGESIZE,0,10 'set page size CALL UpdateAnalogOutputStatus(CBHNDL,%DAC_MIN,%DAC_MIN) 'set thumb pos to min '--- 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 '--- CASE %WM_VSCROLL '-handle both trackbars... SELECT CASE LOWRD(CBWPARAM) CASE %TB_THUMBTRACK, _ '-Mouse %TB_LINEDOWN, _ '-Keyboard %TB_LINEUP, _ '-Keyboard %TB_PAGEDOWN, _ '-Keyboard %TB_PAGEUP, _ '-Keyboard %TB_TOP, _ '-Keyboard %TB_BOTTOM '-Keyboard CONTROL SEND CBHNDL,%IDC_VTrackbar1,%TBM_GETPOS,0,0 TO tPos1 CONTROL SEND CBHNDL,%IDC_VTrackbar2,%TBM_GETPOS,0,0 TO tPos2 tPos1 = LOWRD(tPos1) : tPos2 = LOWRD(tPos2) CALL UpdateAnalogOutputStatus(CBHNDL,tPos1,tPos2) END SELECT '--- CASE %WM_DESTROY '--- CASE %WM_CLOSE END SELECT END FUNCTION '------------------------------------------------------------------------------ ' '------------------------------------------------------------------------------ FUNCTION ShowForm1(BYVAL hParent AS DWORD) AS LONG LOCAL lRslt AS LONG LOCAL hDlg AS DWORD LOCAL hFont1 AS DWORD DIALOG NEW hParent, "trackbar behavior, temp...", 131, 82, 406, 211, %WS_POPUP OR _ %WS_VISIBLE OR %WS_CLIPSIBLINGS OR %WS_BORDER OR %WS_DLGFRAME OR %DS_3DLOOK OR %DS_NOFAILCREATE _ OR %DS_SETFONT OR %WS_SYSMENU OR %WS_THICKFRAME, %WS_EX_LEFT OR %WS_EX_LTRREADING _ OR %WS_EX_RIGHTSCROLLBAR OR %WS_EX_CONTROLPARENT OR %WS_EX_APPWINDOW, TO hDlg CONTROL ADD FRAME, hDlg, %IDC_Frame2, "DA1", 91, 2, 31, 198 CONTROL ADD LABEL, hDlg, %IDC_Label3, " 0",96,188,20,8,%WS_CHILD _ OR %WS_VISIBLE OR %SS_CENTER, %WS_EX_LEFT OR %WS_EX_LTRREADING CONTROL ADD "msctls_trackbar32", hDlg, %IDC_VTrackbar1,"",94,15,25,170,%WS_CHILD _ OR %WS_VISIBLE OR %WS_TABSTOP OR %TBS_VERT OR %TBS_LEFT OR %TBS_AUTOTICKS CONTROL ADD FRAME, hDlg, %IDC_Frame3, "DA2", 126, 2, 31, 198 CONTROL ADD LABEL, hDlg, %IDC_Label4, " 0", 132, 188, 20,8,%WS_CHILD _ OR %WS_VISIBLE OR %SS_CENTER, %WS_EX_LEFT OR %WS_EX_LTRREADING CONTROL ADD "msctls_trackbar32", hDlg, %IDC_VTrackbar2,"",129,15,25,170,%WS_CHILD _ OR %WS_VISIBLE OR %WS_TABSTOP OR %TBS_VERT OR %TBS_LEFT OR %TBS_AUTOTICKS hFont1 = PBFormsMakeFont("MS Sans Serif",8,700,%FALSE,%FALSE,%FALSE,%ANSI_CHARSET) CONTROL SEND hDlg, %IDC_Label3, %WM_SETFONT, hFont1, 0 CONTROL SEND hDlg, %IDC_Label4, %WM_SETFONT, hFont1, 0 DIALOG SHOW MODAL hDlg, CALL ShowForm1Proc TO lRslt CALL DeleteObject(hFont1) FUNCTION = lRslt END FUNCTION
Comment