autodefine "off" $include "windowssdk.inc" $use "pbsctrl.lib" DECLARE IMPORT,InitPBSoftCtrls(),INT InitPBSoftCtrls() CONST BN_CLICKED=0 CONST TVM_SETBKCOLOR=(0x1100+29) CONST WM_DEVICECHANGE=0x219 CONST WM_SETFONT=0x30 CONST WM_SETREDRAW=0xB CONST STATUS=100 'Statusbar CONST BFF=101 'BrowseForFolder CONST FLB=102 'FileListBox CONST TBD=103 '3D Button 1 CONST TBD2=104 '3D Button 2 CONST WM_USER=0x400 CONST BFF_CLEAR=WM_USER+10000 'Remove all items from Treeview CONST BFF_REFRESH=WM_USER+10001 'Forces a repaint CONST BFF_PATH=WM_USER+10002 'New path, lParam is pszString CONST BFF_PATHBYPIDL=WM_USER+10003 'New path, wParam = %CSIDL_.. CONST BFF_JUMPTOPATH=WM_USER+10004 'Set to path. Selects the item with corresponding path, lParam is pszString CONST BFF_GETPATH=WM_USER+10005 'Returns path placed in provided buffer. wparam = size of empty buffer, lparam = pointer to buffer CONST BFF_GETPATHLEN=WM_USER+10006 'Use this to prepare a buffer CONST BFF_EXPANDFIRSTITEM=WM_USER+10007 'Opens/closes the first treeview item, wParam is switch CONST BFF_READY=1 CONST BFF_SELCHANGE=2 CONST FLB_BACKCOLOR=WM_USER+1000 'wParam is new RGB() CONST FLB_GETBACKCOLOR=WM_USER+1001 'Get backcolor CONST FLB_FORECOLOR=WM_USER+1002 'wParam is new RGB() CONST FLB_GETFORECOLOR=WM_USER+1003 'Get forecolor set CONST FLB_PATH=WM_USER+1004 'wParam is size of buffer set in lParam, 0 for szstring, lParam is buffer containing new path CONST FLB_GETPATH=WM_USER+1005 'wParam is size of buffer to fill, 0 for returning len required, lParam is buffer to fill CONST FLB_GETITEM=WM_USER+1006 'wParam is size of buffer to fill, 0 for returning len required, lParam is buffer to fill CONST FLB_SHOWICONS=WM_USER+1007 'wParam is Boolean CONST FLB_CLEAR=WM_USER+1008 'Empties control CONST FLB_REFRESH=WM_USER+1009 'Refills the control CONST TDB_BACKCOLOR=WM_USER+1000 'wParam is new RGB() CONST TDB_GETBACKCOLOR=WM_USER+1001 'Get backcolor set CONST TDB_FORECOLOR=WM_USER+1002 'wParam is new RGB() CONST TDB_GETFORECOLOR=WM_USER+1003 'Get forecolor set CONST TDB_FONT3D=WM_USER+1004 'wParam = font3dtype, See CONST TDB_FONT3D_... CONST TDB_GETFONT3D=WM_USER+1005 'Get font3dtype set CONST TDB_ICON=WM_USER+1006 'wParam = hIcon, lParam = icontype, See CONST TDB_ICON_... CONST TDB_GETICON=WM_USER+1007 'Returns hIcon set CONST TDB_ALIGNTEXT=WM_USER+1008 'wParam = alignment, See CONST TDB_ALIGN_... CONST TDB_GETALIGNTEXT=WM_USER+1009 'Get alignment set CONST TDB_OFFSETTEXT=WM_USER+1010 'wParam = horizontal offset, lParam = vertical offset CONST TDB_GETOFFSETTEXT=WM_USER+1011 'wParam = long ptr, lParam = long ptr ( VarPtr( a& ) ) CONST TDB_ALIGNICON=WM_USER+1012 'wParam = alignment, See CONST TDB_ALIGN_... CONST TDB_GETALIGNICON=WM_USER+1013 'Get alignment set CONST TDB_OFFSETICON=WM_USER+1014 'wParam = horizontal offset, lParam = vertical offset CONST TDB_GETOFFSETICON=WM_USER+1015 'wParam = long ptr, lParam = long ptr ( VarPtr( a& ) ) CONST TDB_ANGLE=WM_USER+1016 'wParam = angle, note that you should use a TT font, Example 450 = 45 degrees CONST TDB_GETANGLE=WM_USER+1017 'Returns angle 'Alignment constants for bitmap and/or caption CONST TDB_ALIGN_LEFTJUSTIFYTOP=0 CONST TDB_ALIGN_LEFTJUSTIFYMIDDLE=1 CONST TDB_ALIGN_LEFTJUSTIFYBOTTOM=2 CONST TDB_ALIGN_RIGHTJUSTIFYTOP=3 CONST TDB_ALIGN_RIGHTJUSTIFYMIDDLE=4 CONST TDB_ALIGN_RIGHTJUSTIFYBOTTOM=5 CONST TDB_ALIGN_CENTERTOP=6 CONST TDB_ALIGN_CENTERMIDDLE=7 CONST TDB_ALIGN_CENTERBOTTOM=8 'Font3D setting CONST TDB_FONT3D_NORMAL=0 CONST TDB_FONT3D_RAISEDSHADELIGHT=1 '1 - RAISED W/LIGHT SHADING CONST TDB_FONT3D_RAISEDSHADEHEAVY=2 '2 - RAISED W/HEAVY SHADING CONST TDB_FONT3D_INSETSHADELIGHT=3 '3 - INSET W/LIGHT SHADING CONST TDB_FONT3D_INSETSHADEHEAVY=4 '4 - INSET W/HEAVY SHADING UINT hInst,l,t,w,h INT bffLen,flbLen ISTRING Paths[260]=GETSTARTPATH,fileName[260] WINDOW win OPENWindow win,0,0,1024,768,@SIZE|@MINBOX|@MAXBOX|@CAPTION|@SYSMENU|@BORDER,0,"PBSCTRL.DLL Test",&main setWINDOWCOLOR win,GetSysColor(15) hInst=GetModuleHandle(win.hWnd) WaitUntil iswindowclosed(win) CloseWindow win End Sub main(),INT Select @MESSAGE Case @IDCREATE CenterWindow win 'Statusbar CONTROL win,@STATUS,"PBSoftCtrl",0,0,0,0,0,STATUS 'BrowseForFolder CreateWindowEx(0x200,"BrowseForFolder","",0x56810027,10,10,240,210,win.hWnd,BFF,hInst,0) sendmessage win,TVM_SETBKCOLOR,0,0xE8B97C,BFF 'FileListBox CreateWindowEx(0x200,"FileListBox","",0x56A10103,10,228,240,474,win.hWnd,FLB,hInst,0) SENDMESSAGE win,FLB_BACKCOLOR,0xE8B97C,0,FLB SENDMESSAGE win,FLB_SHOWICONS,1,0,FLB '3D Button 1 CreateWindowEx(0x0,"ThreedButton","Three D Button 1",0x56014000,500,100,50,150,win.hWnd,TBD,hInst,0) UINT hFont=CreateFontA(14,0,0,0,0,0,0,0,1,0,0,0,2,"Verdana") SendMessage(win,WM_SETFONT,hFont,0,TBD) sendmessage win,TDB_BACKCOLOR,0xFF6600,0,TBD sendmessage win,TDB_FORECOLOR,0xFFFFFF,0,TBD sendmessage win,TDB_FONT3D,2,0,TBD sendmessage win,TDB_ANGLE,900,0,TBD sendmessage win,TDB_ALIGNTEXT,2,0,TBD '3D Button 2 CreateWindowEx(0x0,"ThreedButton","Three D Button 2",0x56014000,500,300,150,150,win.hWnd,TBD2,hInst,0) SendMessage win,WM_SETFONT,hFont,0,TBD2 sendmessage win,TDB_BACKCOLOR,0x909090,0,TBD2 sendmessage win,TDB_FORECOLOR,0xFF0000,0,TBD2 sendmessage win,TDB_FONT3D,2,0,TBD2 sendmessage win,TDB_ANGLE,450,0,TBD2 sendmessage win,TDB_ALIGNTEXT,8,0,TBD2 'Get starting path and files bffLen=SENDMESSAGE(win,BFF_GETPATHLEN,0,0,BFF) SENDMESSAGE win,BFF_JUMPTOPATH,bffLen,Paths,BFF IF bffLen>0 Paths=STRING$(bffLen,0) bffLen=SENDMESSAGE(win,BFF_GETPATH,bffLen,Paths,BFF) setfocus win,BFF Paths=LEFT$(Paths,bffLen) SENDMESSAGE win,FLB_PATH,bffLen,Paths,FLB ENDIF SendDlgItemMessage(win.hWnd,FLB,WM_SETREDRAW,0,0) SENDMESSAGE win,FLB_REFRESH,bffLen,Paths,FLB SendDlgItemMessage(win.hWnd,FLB,WM_SETREDRAW,1,0) RedrawWindow(GetCONTROLHANDLE(win,FLB),NULL,NULL,RDW_INVALIDATE) Case @IDCLOSEWINDOW CLOSEWINDOW win CASE WM_DEVICECHANGE SENDMESSAGE win,BFF_REFRESH,0,0,BFF CASE @IDSIZE CONTROLCMD win,STATUS,@SWRESIZE GETCLIENTSIZE win,l,t,w,h SETSIZE win,10,228,240,h-256,FLB CASE @IDCONTROL SELECT @CONTROLID CASE BFF 'BrowseForFolder SELECT @NOTIFYCODE CASE BFF_SELCHANGE bffLen=SENDMESSAGE(win,BFF_GETPATHLEN,0,0,BFF) IF bffLen>0 Paths=STRING$(bffLen,0) bffLen=SENDMESSAGE(win,BFF_GETPATH,bffLen,Paths,BFF) Paths=LEFT$(Paths,bffLen) SENDMESSAGE win,FLB_PATH,bffLen,Paths,FLB ENDIF 'Redraw FileListBox SendDlgItemMessage(win.hWnd,FLB,WM_SETREDRAW,0,0) SENDMESSAGE win,FLB_REFRESH,bffLen,Paths,FLB SendDlgItemMessage(win.hWnd,FLB,WM_SETREDRAW,1,0) RedrawWindow(GetCONTROLHANDLE(win,FLB),NULL,NULL,RDW_INVALIDATE) ENDSELECT CASE FLB 'FileListBox SELECT @NOTIFYCODE CASE @LBNSELCHANGE flbLen=SENDMESSAGE(win,FLB_GETITEM,0,0,FLB) IF flbLen>0 fileName=STRING$(flbLen,0) flbLen=SENDMESSAGE(win,FLB_GETITEM,flbLen,fileName,FLB) fileName=LEFT$(fileName,flbLen) SETCONTROLTEXT win,STATUS,"Selected file: "+fileName ENDIF ENDSELECT CASE TBD 'Three D Box 1 SELECT @NOTIFYCODE CASE BN_CLICKED MESSAGEBOX win,"You pressed 3D Button 1","Button press",@MB_OK|@MB_ICONINFORMATION ENDSELECT CASE TBD2 'Three D Box 2 SELECT @NOTIFYCODE CASE BN_CLICKED MESSAGEBOX win,"You pressed 3D Button 2","Button press",@MB_OK|@MB_ICONINFORMATION ENDSELECT ENDSELECT ENDSELECT RETURN 0 ENDSUB