' WINFBE FORM
' WINFBE VERSION 2.1.7
' LOCKCONTROLS=False
' SNAPLINES=True
' WINFBE FORM_START
' WINFBE CONTROL_START Form
'   PROPERTIES_START
'     PROP_NAME=Name
'     PROP_VALUE=Form1
'     PROP_NAME=Left
'     PROP_VALUE=10
'     PROP_NAME=Top
'     PROP_VALUE=10
'     PROP_NAME=Width
'     PROP_VALUE=526
'     PROP_NAME=Height
'     PROP_VALUE=408
'     PROP_NAME=ChildForm
'     PROP_VALUE=False
'     PROP_NAME=Text
'     PROP_VALUE=Form1
'     PROP_NAME=WindowState
'     PROP_VALUE=FormWindowState.Normal
'     PROP_NAME=StartPosition
'     PROP_VALUE=FormStartPosition.Manual
'     PROP_NAME=BorderStyle
'     PROP_VALUE=FormBorderStyle.Sizable
'     PROP_NAME=MinimizeBox
'     PROP_VALUE=True
'     PROP_NAME=MaximizeBox
'     PROP_VALUE=True
'     PROP_NAME=ControlBox
'     PROP_VALUE=True
'     PROP_NAME=Enabled
'     PROP_VALUE=True
'     PROP_NAME=Visible
'     PROP_VALUE=True
'     PROP_NAME=BackColor
'     PROP_VALUE=SYSTEM|Control
'     PROP_NAME=AcceptButton
'     PROP_VALUE=
'     PROP_NAME=AllowDrop
'     PROP_VALUE=False
'     PROP_NAME=KeyPreview
'     PROP_VALUE=False
'     PROP_NAME=CancelButton
'     PROP_VALUE=
'     PROP_NAME=Icon
'     PROP_VALUE=
'     PROP_NAME=Locked
'     PROP_VALUE=False
'     PROP_NAME=MaximumHeight
'     PROP_VALUE=0
'     PROP_NAME=MaximumWidth
'     PROP_VALUE=0
'     PROP_NAME=MinimumHeight
'     PROP_VALUE=0
'     PROP_NAME=MinimumWidth
'     PROP_VALUE=0
'     PROP_NAME=Tag
'     PROP_VALUE=
'   PROPERTIES_END
'   EVENTS_START
'   EVENTS_END
' WINFBE CONTROL_END
' WINFBE CONTROL_START Button
'   PROPERTIES_START
'     PROP_NAME=Name
'     PROP_VALUE=btn
'     PROP_NAME=Left
'     PROP_VALUE=11
'     PROP_NAME=Top
'     PROP_VALUE=13
'     PROP_NAME=Width
'     PROP_VALUE=78
'     PROP_NAME=Height
'     PROP_VALUE=17
'     PROP_NAME=AllowDrop
'     PROP_VALUE=False
'     PROP_NAME=BackColor
'     PROP_VALUE=SYSTEM|Control
'     PROP_NAME=BackColorDown
'     PROP_VALUE=SYSTEM|Control
'     PROP_NAME=BackColorHot
'     PROP_VALUE=SYSTEM|Control
'     PROP_NAME=Font
'     PROP_VALUE=Segoe UI,9,400,0,0,0,1
'     PROP_NAME=TextForeColor
'     PROP_VALUE=SYSTEM|ControlText
'     PROP_NAME=TextBackColor
'     PROP_VALUE=SYSTEM|Control
'     PROP_NAME=TextForeColorDown
'     PROP_VALUE=SYSTEM|ControlText
'     PROP_NAME=TextBackColorDown
'     PROP_VALUE=SYSTEM|Control
'     PROP_NAME=Image
'     PROP_VALUE=
'     PROP_NAME=ImageWidth
'     PROP_VALUE=16
'     PROP_NAME=ImageHeight
'     PROP_VALUE=16
'     PROP_NAME=ImageMargin
'     PROP_VALUE=4
'     PROP_NAME=ImageHighDPI
'     PROP_VALUE=True
'     PROP_NAME=Text
'     PROP_VALUE=Save
'     PROP_NAME=TextAlign
'     PROP_VALUE=ButtonAlignment.MiddleCenter
'     PROP_NAME=TextMargin
'     PROP_VALUE=4
'     PROP_NAME=UseMnemonic
'     PROP_VALUE=True
'     PROP_NAME=ThemeSupport
'     PROP_VALUE=True
'     PROP_NAME=ToggleMode
'     PROP_VALUE=False
'     PROP_NAME=Enabled
'     PROP_VALUE=True
'     PROP_NAME=TabIndex
'     PROP_VALUE=1
'     PROP_NAME=TabStop
'     PROP_VALUE=True
'     PROP_NAME=Locked
'     PROP_VALUE=False
'     PROP_NAME=Tag
'     PROP_VALUE=
'     PROP_NAME=ToolTip
'     PROP_VALUE=
'     PROP_NAME=ToolTipBalloon
'     PROP_VALUE=False
'     PROP_NAME=Visible
'     PROP_VALUE=True
'   PROPERTIES_END
'   EVENTS_START
'     EVENT_NAME=Click
'   EVENTS_END
' WINFBE CONTROL_END
' WINFBE CONTROL_START TextBox
'   PROPERTIES_START
'     PROP_NAME=Name
'     PROP_VALUE=tfn
'     PROP_NAME=Left
'     PROP_VALUE=110
'     PROP_NAME=Top
'     PROP_VALUE=13
'     PROP_NAME=Width
'     PROP_VALUE=381
'     PROP_NAME=Height
'     PROP_VALUE=19
'     PROP_NAME=AcceptsReturn
'     PROP_VALUE=False
'     PROP_NAME=AcceptsTab
'     PROP_VALUE=False
'     PROP_NAME=AllowDrop
'     PROP_VALUE=False
'     PROP_NAME=BackColor
'     PROP_VALUE=SYSTEM|Window
'     PROP_NAME=BorderStyle
'     PROP_VALUE=ControlBorderStyle.Fixed3D
'     PROP_NAME=CharacterCasing
'     PROP_VALUE=CharacterCase.Normal
'     PROP_NAME=CueBannerText
'     PROP_VALUE=
'     PROP_NAME=Enabled
'     PROP_VALUE=True
'     PROP_NAME=Font
'     PROP_VALUE=Segoe UI,9,400,0,0,0,1
'     PROP_NAME=ForeColor
'     PROP_VALUE=SYSTEM|WindowText
'     PROP_NAME=HideSelection
'     PROP_VALUE=True
'     PROP_NAME=Locked
'     PROP_VALUE=False
'     PROP_NAME=Multiline
'     PROP_VALUE=False
'     PROP_NAME=PasswordChar
'     PROP_VALUE=
'     PROP_NAME=ReadOnly
'     PROP_VALUE=False
'     PROP_NAME=TextScrollBars
'     PROP_VALUE=ScrollBars.None
'     PROP_NAME=TabIndex
'     PROP_VALUE=2
'     PROP_NAME=TabStop
'     PROP_VALUE=True
'     PROP_NAME=Tag
'     PROP_VALUE=
'     PROP_NAME=ToolTip
'     PROP_VALUE=
'     PROP_NAME=ToolTipBalloon
'     PROP_VALUE=False
'     PROP_NAME=Text
'     PROP_VALUE=
'     PROP_NAME=TextAlign
'     PROP_VALUE=TextAlignment.Left
'     PROP_NAME=Visible
'     PROP_VALUE=True
'     PROP_NAME=WordWrap
'     PROP_VALUE=False
'   PROPERTIES_END
'   EVENTS_START
'   EVENTS_END
' WINFBE CONTROL_END
' WINFBE FORM_END
' WINFBE_CODEGEN_START
#if 0
Declare Function Form1_btn_Click( ByRef sender As wfxButton, ByRef e As EventArgs ) As LRESULT

type Form1Type extends wfxForm
    private:
        temp as byte
    public:
        declare static function FormInitializeComponent( byval pForm as Form1Type ptr ) as LRESULT
        declare constructor
        ' Controls
        btn As wfxButton
        tfn As wfxTextBox
end type


function Form1Type.FormInitializeComponent( byval pForm as Form1Type ptr ) as LRESULT
    dim as long nClientOffset

    pForm->Name = "Form1"
    pForm->Text = "Form1"
    pForm->SetBounds(10,10,526,408)
    pForm->btn.Parent = pForm
    pForm->btn.Name = "btn"
    pForm->btn.Text = "Save"
    pForm->btn.SetBounds(11,13-nClientOffset,78,17)
    pForm->btn.OnClick = @Form1_btn_Click
    pForm->tfn.Parent = pForm
    pForm->tfn.Name = "tfn"
    pForm->tfn.SetBounds(110,13-nClientOffset,381,19)
    pForm->Controls.Add(ControlType.Button, @(pForm->btn))
    pForm->Controls.Add(ControlType.TextBox, @(pForm->tfn))
    Application.Forms.Add(ControlType.Form, pForm)
    function = 0
end function

constructor Form1Type
    InitializeComponent = cast( any ptr, @FormInitializeComponent )
    this.FormInitializeComponent( @this )
end constructor

dim shared Form1 as Form1Type
#endif
' WINFBE_CODEGEN_END
' You should always include a resource file that references a valid manifest.xml
' file otherwise your application will not properly display Windows themed controls.
' Sample resource.rc and manifest.xml files can be found in the WinFBE \Settings folder.
' The following WinFBE directive includes the resource in your application. Simply
' uncomment the line.
' If you are using WinFBE's project management features then delete the following line
' because a resource file will be generated automatically.
'     '#RESOURCE "resource.rc"


''
''  Remove the following Application.Run code if it used elsewhere in your application.
Application.Run(Form1)

Public Sub WriteZeroByteFile()
Dim sampleRate as Integer
Dim bitSize as Integer
Dim numChannels as Integer
Dim numSeconds as Integer
Dim fileName as String
Dim fileSize as Integer
Dim dataPos as Integer
Dim headerLength as Integer
Dim totalSamples as Integer

' Set up our parameters
sampleRate = 44100        ' CD-Quality Sound.
bitSize = 16              ' Bit Size is 16 (CD-Quality).
numChannels = 2           ' Stereo mode (2-channel).
numSeconds = 1            ' We're going to make a 1 second sample.
fileSize = 0              ' Just set it to zero for now.
fileName = "A:\~~~WinFBE_2pt17\PRJs\~~WAVE_FMT_GEN\temp.wav"   ' Pick a temporary file name.

Open fileName For Binary Access Write As #1

' Write the header
Put #1, 1,  "RIFF"        ' RIFF marker
Put #1, 5,  CInt(0)       ' file-size (equals file-size - 8)
Put #1, 9,  "WAVE"        ' Mark it as type "WAVE"
Put #1, 13, "fmt "        ' Mark the format section.
Put #1, 17, CLng(16)      ' Length of format data.  Always 16
Put #1, 21, CInt(1)       ' Wave type PCM
Put #1, 23, CInt(2)       ' 2 channels
Put #1, 25, CLng(44100)   ' 44.1 kHz Sample Rate (CD-Quality)
Put #1, 29, CLng(88200)   ' (Sample Rate * Bit Size * Channels) / 8
Put #1, 33, CInt(2)       ' (Bit Size * Channels) / 8
Put #1, 35, CInt(16)      ' Bits per sample (=Bit Size * Samples)
Put #1, 37, "data"        ' "data" marker
Put #1, 41, CInt(0)       ' data-size (equals file-size - 44).

' headerLength is the length of the header.  It is used for offsetting
' the data position.
headerLength = 44

' Determine the total number of samples 
totalSamples = sampleRate * numSeconds

' Populate with 0 bit data.
' This isn't a good reference for creating PCM data.  Since we are
' just dumping 0 bit data, we're dumping it in 32 bit chunks.
For dataPos = 1 to (totalSamples * 4) step 4
  ' We're doing 16-bit, so we need to write 2 bytes per channel.
  ' Write both channels using a 32 bit integer.
  ' Again, this isn't a good reference.  Ignore this data writing
  ' process.  It's useless for anything but 0 bit data.
  Put #1, dataPos + headerLength, CInt(0)  
Next

' Finalize the file.  Write the file size to the header.
fileSize = LOF(1)               ' Get the actual file size.
Put #1, 5, CLng(fileSize - 8)   ' Set first file size marker.
Put #1, 41, CLng(fileSize - 44) ' Set data size marker.
Close #1 ' Close the file.
End Sub

''
''
Function Form1_btn_Click( ByRef sender As wfxButton, ByRef e As EventArgs ) As LRESULT
    WriteZeroByteFile
    Function = 0
End Function

