Send remarks to
'
Code:
' PBWIN 9.00 - WinApi 05/2008 - XP Pro SP3 'http://www.powerbasic.com/support/pbforums/showthread.php?p=296028#post296028 ' #Dim All #Compile Exe #Include "WIN32API.INC" ' Global hdlg As Dword Global Sounds$(), Btn_Id&() Global Dlg_Hght&, Dlg_Wdth& ' Macro Common_Locals 'Macro easier than retyping and maintains coding consistency Local ctr&, ln&, ln1&, i&, s$ Local hght&, wd&, Longest&, l$ Local Row&, col& End Macro ' CallBack Function Dialog_Processor Common_Locals Select Case CbMsg 'This is TO determine the message TYPE ' Case %WM_INITDIALOG'<- Initialiaton when the program loads ' Case %WM_SYSCOMMAND 'Traps Any Alt key but only F4 closes ' Case %WM_COMMAND 'This processes command messages Select Case CbCtl 'which control is sending msg Case Btn_Id(1) To Btn_Id(UBound(Btn_Id)) Select Case CbCtlMsg 'msg sent Case %bn_Clicked 'Bingo ctr = CbCtl - 1000 'yields array number If ctr => LBound(Sounds$()) And _ 'check for bounds error JIC ctr =< UBound(Sounds$()) Then s$ = Sounds$(ctr) & ".wav" 'for convenience SndPlaySound s$ & Chr$(0), ByVal 0 ClipBoard Set Text s$ To ctr 'put name in clipboard End If End Select End Select End Select End Function ' Sub Buttons_Setup common_Locals ' Call Sound_Data 'get sounds & Button ids 'determine Button Width For ctr = LBound(Sounds$()) To UBound(Sounds$()) ln = Len(Sounds$(ctr)) 'how long is it If ln > Longest Then Longest = ln Next ctr ' Longest = Longest * 6 'pixels per character ' hght = 20 'btn height Col = 8 'space on left Row = 5 'space at top For ctr = LBound(Sounds$()) To UBound(Sounds$()) Control Add Button, hdlg, Btn_Id(ctr), Sounds$(ctr), Col, Row, Longest, hght Row = Row + hght + 3 If Row > Dlg_Hght - 20 Then 'at bottom of dialog Row = 5 'start at top again Col = col + Longest + 10 'Move over Rover End If Next ctr End Sub ' Function PBMain common_Locals 'not needed here but JIC ' Dlg_Hght = 12 * 28 Dlg_Wdth = 525 Dialog New Pixels, hdlg, "The Sweet Sounds of XP", , , Dlg_Wdth, Dlg_Hght, %WS_SYSMENU To hdlg ' Buttons_Setup 'build buttons ' Dialog Show Modal hDlg Call Dialog_Processor End Function ' Sub Sound_Data Common_Locals ctr = DataCount 'count data items Dim Sounds$(1 To ctr), Btn_Id(1 To ctr)'assign arrays For ctr = 1 To DataCount 'now fill arrays S$ = Read$(ctr) 'get sound Sounds$(ctr) = Left$(s$, Len(s$) - 4) 'strip off ".wav" Btn_Id(ctr) = 1000 + ctr 'assign a button id Next ctr ' Data chimes.wav Data chord.wav Data ding.wav Data flourish.mid Data Notify.wav Data onestop.mid Data recycle.wav Data ringin.wav Data ringout.wav Data start.wav Data tada.wav Data town.mid Data Windows Feed Discovered.wav Data Windows Information Bar.wav Data Windows Navigation Start.wav Data Windows Pop-up Blocked.wav Data Windows XP Balloon.wav Data Windows XP Battery Critical.wav Data Windows XP Battery Low.wav Data Windows XP Critical Stop.wav Data Windows XP Default.wav Data Windows XP Ding.wav Data Windows XP Error.wav Data Windows XP Exclamation.wav Data Windows XP Hardware Fail.wav Data Windows XP Hardware Insert.wav Data Windows XP Hardware Remove.wav Data Windows XP Information Bar.wav Data Windows XP Logoff Sound.wav Data Windows XP Logon Sound.wav Data Windows XP Menu Command.wav Data Windows XP Minimize.wav Data Windows XP Notify.wav Data Windows XP Pop-up Blocked.wav Data Windows XP Print complete.wav Data Windows XP Recycle.wav Data Windows XP Restore.wav Data Windows XP Ringin.wav Data Windows XP Ringout.wav Data Windows XP Shutdown.wav Data Windows XP Start.wav Data Windows XP Startup.wav End Sub '