DX8 SetNotificationPositions, Error 32811
- From: hzgt9b <celoftis@xxxxxxxxx>
- Date: Mon, 13 Aug 2007 13:17:35 -0700
Using DX8,
I am developing a VS2005, VB.NET program to record audio from with the
mic or phone line in.
As a starting point, I found a tutorial and examples on DirectSound
written is VB6. When I try to convert that program to VB.NET I get run
time errors on the following code (frmDX_Record.vb, Initialize sub):
Buff.SetNotificationPositions(EventsNotify.Length,
EventsNotify)
The error is:
Error: 32811
Desription: Element not found. (Exception from HRESULT:
0x8002802B (TYPE_E_ELEMENTNOTFOUND))
Source: Interop.DxVBLibA"
I don't see where the code is wrong but I'm new to DirectX development
-- anyone have an idea what I am doing wrong?
Any input or pointers to DirectX info or examples would appreciated.
Thanks
celoftis
Full code below (watch for line wraps)...
---------------------------------------------------------------------------------------------------
frmDX_Record.vb:
---------------------------------------------------------------------------------------------------
Option Strict Off
Option Explicit On
Friend Class frmDX_Record
Inherits System.Windows.Forms.Form
Implements DxVBLibA.DirectXEvent8
' Made by Michael Ciurescu
'
' DirectSound Tutorial:
' http://www.vbforums.com/showthread.php?t=388562
' Direct Sound objects
Private DX As New DxVBLibA.DirectX8
Private SEnum As DxVBLibA.DirectSoundEnum8
Private DISCap As DxVBLibA.DirectSoundCapture8
' buffer, and buffer description
Private Buff As DxVBLibA.DirectSoundCaptureBuffer8
Private BuffDesc As DxVBLibA.DSCBUFFERDESC
' For the events
Private EventsNotify() As DxVBLibA.DSBPOSITIONNOTIFY
Private MidEvent, EndEvent, StartEvent As Integer
' to know the buffer size
Private BuffLen, HalfBuffLen As Integer
Public Event GotWaveData(ByRef Buffer As System.Array, ByRef
BitsPerSample As Short, ByRef Channels As Short)
Private Sub DirectXEvent8_DXCallback(ByVal eventid As Integer)
Implements DxVBLibA.DirectXEvent8.DXCallback
Dim WaveBuffer() As Byte
' make sure that Buff object is actually initialized to a
buffer instance
If Not (Buff Is Nothing) Then
ReDim WaveBuffer(HalfBuffLen - 1)
Select Case eventid
Case StartEvent
' we got the event that the write cursor is at the
beginning of the buffer
' therefore read from the middle of the buffer to
the end
Buff.ReadBuffer(HalfBuffLen, HalfBuffLen,
WaveBuffer(0), DxVBLibA.CONST_DSCBLOCKFLAGS.DSCBLOCK_DEFAULT)
Case MidEvent
' we got an event that the write cursor is at the
middle of the buffer
' threfore read from the beginning of the buffer
to the middle
Buff.ReadBuffer(0, HalfBuffLen, WaveBuffer(0),
DxVBLibA.CONST_DSCBLOCKFLAGS.DSCBLOCK_DEFAULT)
Case EndEvent
' not used right now
End Select
If eventid = StartEvent Or eventid = MidEvent Then
RaiseEvent GotWaveData(WaveBuffer,
(BuffDesc.fxFormat.nBitsPerSample), (BuffDesc.fxFormat.nChannels))
End If
End If
End Sub
Public Function Initialize(Optional ByVal SamplesPerSec As Integer =
44100, Optional ByVal BitsPerSample As Short = 16, Optional ByVal
Channels As Short = 2, Optional ByVal HalfBufferLen As Integer = 0,
Optional ByVal GUID As String = "") As String
' if there is any error go to ReturnError
On Error GoTo ReturnError
SEnum = DX.GetDSCaptureEnum ' get the device enumeration object
' if GUID is empty, then assign the first sound device
If Len(GUID) = 0 Then GUID = SEnum.GetGuid(1)
' choose the sound device, and create the Direct Sound object
DISCap = DX.DirectSoundCaptureCreate(GUID)
' set the format to use for recording
With BuffDesc.fxFormat
.nFormatTag = DxVBLibA.CONST_DSOUND.WAVE_FORMAT_PCM
.nChannels = Channels
.nBitsPerSample = BitsPerSample
.lSamplesPerSec = SamplesPerSec
.nBlockAlign = (.nBitsPerSample * .nChannels) \ 8
.lAvgBytesPerSec = .lSamplesPerSec * .nBlockAlign
If HalfBufferLen <= 0 Then
' make half of the buffer to be 100 ms
HalfBuffLen = .lAvgBytesPerSec / 10
Else
' using a "custom" size buffer
HalfBuffLen = HalfBufferLen
End If
' make sure the buffer is aligned
HalfBuffLen = HalfBuffLen - (HalfBuffLen Mod .nBlockAlign)
End With
' calculate the total size of the buffer
BuffLen = HalfBuffLen * 2
BuffDesc.lBufferBytes = BuffLen
BuffDesc.lFlags = DxVBLibA.CONST_DSCBCAPSFLAGS.DSCBCAPS_DEFAULT
' create the buffer object
Buff = DISCap.CreateCaptureBuffer(BuffDesc)
' Create 3 event notifications
ReDim EventsNotify(2)
' create event to signal that DirectSound write cursor
' is at the beginning of the buffer
StartEvent = DX.CreateEvent(Me)
EventsNotify(0).hEventNotify = StartEvent
EventsNotify(0).lOffset = 1
' create event to signal that DirectSound write cursor
' is at half of the buffer
MidEvent = DX.CreateEvent(Me)
EventsNotify(1).hEventNotify = MidEvent
EventsNotify(1).lOffset = HalfBuffLen
' create the event to signal the sound has stopped
EndEvent = DX.CreateEvent(Me)
EventsNotify(2).hEventNotify = EndEvent
EventsNotify(2).lOffset =
DxVBLibA.CONST_DSOUND.DSBPN_OFFSETSTOP
' Assign the notification points to the buffer
'Error on next line. I see the upgrade warnings above, but it appears
that passing Me as the argument to CreateEvent is correct...
Buff.SetNotificationPositions(EventsNotify.Length,
EventsNotify)
Initialize = ""
Exit Function
ReturnError:
' return error number, description and source
Initialize = "Error: " & Err.Number & vbNewLine & "Desription: " &
Err.Description & vbNewLine & "Source: " & Err.Source
Err.Clear()
UninitializeSound()
Exit Function
End Function
Public Sub UninitializeSound()
On Error Resume Next
If UBound(EventsNotify) > 0 Then
If Err.Number = 0 Then
' distroy all events
DX.DestroyEvent(EventsNotify(0).hEventNotify)
DX.DestroyEvent(EventsNotify(1).hEventNotify)
DX.DestroyEvent(EventsNotify(2).hEventNotify)
Erase EventsNotify
End If
End If
'UPGRADE_NOTE: Object Buff may not be destroyed until it is
garbage collected. Click for more: 'ms-help://MS.VSCC.v80/dv_commoner/
local/redirect.htm?keyword="6E35BFF6-CD74-4B09-9689-3E1A43DF8969"'
Buff = Nothing
'UPGRADE_NOTE: Object DISCap may not be destroyed until it is
garbage collected. Click for more: 'ms-help://MS.VSCC.v80/dv_commoner/
local/redirect.htm?keyword="6E35BFF6-CD74-4B09-9689-3E1A43DF8969"'
DISCap = Nothing
'UPGRADE_NOTE: Object SEnum may not be destroyed until it is garbage
collected. Click for more: 'ms-help://MS.VSCC.v80/dv_commoner/local/
redirect.htm?keyword="6E35BFF6-CD74-4B09-9689-3E1A43DF8969"'
SEnum = Nothing
End Sub
Public Function SoundPlay() As Boolean
On Error GoTo ReturnError
If Not Buff Is Nothing Then
Buff.Start(DxVBLibA.CONST_DSCBSTARTFLAGS.DSCBSTART_LOOPING)
SoundPlay = True
Exit Function
ReturnError:
SoundPlay = False
Err.Clear()
End Function
Public Function SoundStop() As Boolean
On Error GoTo ReturnError
If Not Buff Is Nothing Then Buff.Stop()
SoundStop = True
Exit Function
ReturnError:
SoundStop = False
Err.Clear()
End Function
Private Sub frmDX_Record_FormClosing(ByVal eventSender As
System.Object, ByVal eventArgs As
System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Dim Cancel As Boolean = eventArgs.Cancel
Dim UnloadMode As System.Windows.Forms.CloseReason =
eventArgs.CloseReason
UninitializeSound()
eventArgs.Cancel = Cancel
End Sub
End Class
---------------------------------------------------------------------------------------------------
frmDX_Record.Designer.vb:
---------------------------------------------------------------------------------------------------
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class frmDX_Record
#Region "Windows Form Designer generated code "
<System.Diagnostics.DebuggerNonUserCode()> Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
End Sub
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> Protected Overloads
Overrides Sub Dispose(ByVal Disposing As Boolean)
If Disposing Then
If Not components Is Nothing Then
components.Dispose()
End If
End If
MyBase.Dispose(Disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
Public ToolTip1 As System.Windows.Forms.ToolTip
'NOTE: The following procedure is required by the Windows Form
Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
Me.components = New System.ComponentModel.Container
Me.ToolTip1 = New System.Windows.Forms.ToolTip(Me.components)
Me.SuspendLayout()
'
'frmDX_Record
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 14.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.SystemColors.Control
Me.ClientSize = New System.Drawing.Size(207, 127)
Me.Cursor = System.Windows.Forms.Cursors.Default
Me.Font = New System.Drawing.Font("Arial", 8.0!,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point,
CType(0, Byte))
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
Me.Name = "frmDX_Record"
Me.RightToLeft = System.Windows.Forms.RightToLeft.No
Me.ShowInTaskbar = False
Me.Text = "Form2"
Me.ResumeLayout(False)
End Sub
#End Region
End Class
---------------------------------------------------------------------------------------------------
frmMain.vb:
---------------------------------------------------------------------------------------------------
Option Strict Off
Option Explicit On
Friend Class frmMain
Inherits System.Windows.Forms.Form
' Made by Michael Ciurescu
'
' DirectSound Tutorial:
' http://www.vbforums.com/showthread.php?t=388562
Private Declare Sub CopyMemory Lib "kernel32" Alias
"RtlMoveMemory" (ByRef pDest As IntPtr, ByRef pSrc As IntPtr, ByVal
ByteLen As Integer)
Private Structure FileHeader
Dim lRiff As Integer
Dim lFileSize As Integer
Dim lWave As Integer
Dim lFormat As Integer
Dim lFormatLength As Integer
End Structure
Private Structure WaveFormat
Dim wFormatTag As Short
Dim nChannels As Short
Dim nSamplesPerSec As Integer
Dim nAvgBytesPerSec As Integer
Dim nBlockAlign As Short
Dim wBitsPerSample As Short
End Structure
Private Structure ChunkHeader
Dim lType As Integer
Dim lLen As Integer
End Structure
Private WithEvents DirectSoundRecord As frmDX_Record
Private FileNum As Short
Private Sub DirectSoundRecord_GotWaveData(ByRef Buffer As
System.Array, ByRef BitsPerSample As Short, ByRef Channels As Short)
Handles DirectSoundRecord.GotWaveData
' make sure that there is a file opened
If FileNum <> 0 Then
' write the wave data to the file
FilePut(FileNum, Buffer)
'If BitsPerSample = 8 Then
' DisplayWaveData8(Buffer, picWave, Channels = 2)
'ElseIf BitsPerSample = 16 Then
' DisplayWaveData16_8(Buffer, picWave, Channels = 2)
'End If
End If
End Sub
Private Sub cmdStartRec_Click(ByVal eventSender As System.Object,
ByVal eventArgs As System.EventArgs) Handles cmdStartRec.Click
Dim ErrReturn As String
Dim WaveFmt As WaveFormat
' fill in the Wave Format
With WaveFmt
.wFormatTag = 1 ' PCM
.nChannels = 2
.nSamplesPerSec = 44100
.wBitsPerSample = 16
.nBlockAlign = .wBitsPerSample * .nChannels / 8
.nAvgBytesPerSec = .nBlockAlign * .nSamplesPerSec
End With
' Create the wave tile
FileNum = FreeFile
FileOpen(FileNum, "C:\Recording Test.WAV", OpenMode.Binary,
OpenAccess.Write, OpenShare.LockWrite)
WaveWriteHeader(FileNum, WaveFmt) ' write the wave headers
With DirectSoundRecord
' initialize DirectSound with exactly the same sound format as you
expect to write in the file
ErrReturn = .Initialize(WaveFmt.nSamplesPerSec,
WaveFmt.wBitsPerSample, WaveFmt.nChannels)
If Len(ErrReturn) = 0 Then
' if there was no error
' start recording
.SoundPlay()
cmdStopRec.Enabled = True
cmdStartRec.Enabled = False
Else
MsgBox(ErrReturn, MsgBoxStyle.Exclamation, "DirectSound Error")
End If
End With
End Sub
Private Sub cmdStopRec_Click(ByVal eventSender As System.Object,
ByVal eventArgs As System.EventArgs) Handles cmdStopRec.Click
With DirectSoundRecord
' stop recording
.SoundStop()
' un-initialize DirectSound
.UninitializeSound()
End With
' complete the header values (file length, and chunk length)
WaveWriteHeaderEnd(FileNum)
' close the file
FileClose(FileNum)
FileNum = 0
cmdStopRec.Enabled = False
cmdStartRec.Enabled = True
End Sub
Private Sub frmMain_Load(ByVal eventSender As System.Object, ByVal
eventArgs As System.EventArgs) Handles MyBase.Load
DirectSoundRecord = New frmDX_Record
End Sub
Private Sub frmMain_FormClosing(ByVal eventSender As System.Object,
ByVal eventArgs As System.Windows.Forms.FormClosingEventArgs) Handles
Me.FormClosing
Dim Cancel As Boolean = eventArgs.Cancel
Dim UnloadMode As System.Windows.Forms.CloseReason =
eventArgs.CloseReason
DirectSoundRecord.SoundStop()
DirectSoundRecord.Close()
DirectSoundRecord.Dispose()
DirectSoundRecord = Nothing
eventArgs.Cancel = Cancel
End Sub
Private Sub WaveWriteHeader(ByVal OutFileNum As Short, ByRef WaveFmt
As WaveFormat)
Dim header As FileHeader
Dim chunk As ChunkHeader
With header
.lRiff = &H46464952 ' "RIFF"
.lFileSize = 0
.lWave = &H45564157 ' "WAVE"
.lFormat = &H20746D66 ' "fmt "
.lFormatLength = Len(WaveFmt)
End With
chunk.lType = &H61746164 ' "data"
chunk.lLen = 0
FilePut(OutFileNum, header, 1)
FilePut(OutFileNum, WaveFmt)
FilePut(OutFileNum, chunk)
End Sub
Private Sub WaveWriteHeaderEnd(ByVal OutFileNum As Short)
Dim header As FileHeader
Dim HdrFormat As WaveFormat
Dim chunk As ChunkHeader
Dim Lng As Integer
Lng = LOF(OutFileNum)
FilePut(OutFileNum, Lng, 5) ' write the FileHeader.lFileSize
value
Lng = LOF(OutFileNum) - (Len(header) + Len(HdrFormat) + Len(chunk))
FilePut(OutFileNum, Lng, Len(header) + Len(HdrFormat) + 5) '
write the ChunkHeader.lLen value
End Sub
Private Sub DisplayWaveData8(ByRef DataBuff() As Byte, ByRef Pic As
System.Windows.Forms.PictureBox, ByRef Stereo As Boolean)
Dim Stp, Q As Single
Dim HBuffer As Integer
Dim RX, LX, LY, RY As Single
Dim LVal, RVal As Single
Dim K As Integer
If Not Stereo Then
HBuffer = UBound(DataBuff)
Stp = HBuffer / (VB6.PixelsToTwipsX(Pic.Width) / 15)
'Pic.Scale (0, 127) - (HBuffer, -127)
Pic.Scale(New System.Drawing.SizeF(HBuffer, 2 * 127))
'Pic.PSet(0, 0)
Dim g As Graphics = Pic.CreateGraphics
g.FillEllipse(Brushes.Black, New
System.Drawing.RectangleF(0, 0, 1, 1))
'Pic.Cls()
g.Clear(Color.Black)
For Q = 0 To HBuffer - 2 Step Stp
'Pic.Line -(Fix(Q), DataBuff(Fix(Q)) - 127)
g.DrawLine(Pens.Black, Q, DataBuff(Q) - 127, Q,
DataBuff(Q) - 127)
Next Q
Else
HBuffer = UBound(DataBuff) \ 2
Stp = HBuffer / (VB6.PixelsToTwipsX(Pic.Width) / 15)
'Pic.Scale (0, 256) - (HBuffer, -256)
Pic.Scale(New System.Drawing.SizeF(HBuffer, 2 * 256))
'Pic.PSet(0, 0)
Dim g As Graphics = Pic.CreateGraphics
g.FillEllipse(Brushes.Black, New
System.Drawing.RectangleF(0, 0, 1, 1))
'Pic.Cls()
g.Clear(Color.Black)
LX = 0
LY = -127
RX = 0
RY = 127
For Q = 0 To HBuffer - 2 Step Stp
K = Q
K = K - (K Mod 2)
LVal = DataBuff(K + 1) - 255
RVal = DataBuff(K)
'Pic.Line (LX, LY) - (K, LVal)
g.DrawLine(Pens.Black, LX, LY, K, LVal)
'Pic.Line (RX, RY) - (K, RVal)
g.DrawLine(Pens.Black, RX, RY, K, RVal)
LX = K
LY = LVal
RX = K
RY = RVal
Next Q
End If
End Sub
' the sound is 16 bit, but it comes in Bytes, not Integer
Private Sub DisplayWaveData16_8(ByRef DataBuff() As Byte, ByRef Pic
As System.Windows.Forms.PictureBox, ByRef Stereo As Boolean)
Dim Buff() As Short
ReDim Buff(UBound(DataBuff) \ 2 - 1)
CopyMemory(Buff(0), DataBuff(0), UBound(DataBuff) + 1)
DisplayWaveData16(Buff, Pic, Stereo)
End Sub
Private Sub DisplayWaveData16(ByRef DataBuff() As Short, ByRef Pic As
System.Windows.Forms.PictureBox, ByRef Stereo As Boolean)
Dim Stp, Q As Single
Dim HBuffer As Integer
Dim RX, LX, LY, RY As Single
Dim LVal, RVal As Single
Dim K As Integer
If Not Stereo Then
HBuffer = UBound(DataBuff)
Stp = HBuffer / (VB6.PixelsToTwipsX(Pic.Width) / 15)
'Pic.Scale (0, 0.5) - (HBuffer, -0.5)
Pic.Scale(New System.Drawing.SizeF(HBuffer, 1))
'Pic.PSet(0, 0)
Dim g As Graphics = Pic.CreateGraphics
g.FillEllipse(Brushes.Black, New
System.Drawing.RectangleF(0, 0, 1, 1))
'Pic.Cls()
g.Clear(Color.Black)
For Q = 0 To HBuffer - 2 Step Stp
'Pic.Line -(Fix(Q), DataBuff(Fix(Q)) / 65536#)
g.DrawLine(Pens.Black, Q, CType((DataBuff(Q) /
65536.0#), Single), Q, CType((DataBuff(Q) / 65536.0#), Single))
Next Q
Else
HBuffer = UBound(DataBuff) \ 2
Stp = HBuffer / (VB6.PixelsToTwipsX(Pic.Width) / 15)
'Pic.Scale (0, 1) - (HBuffer, -1)
Pic.Scale(New System.Drawing.SizeF(HBuffer, 1))
'Pic.PSet (0, 0)
Dim g As Graphics = Pic.CreateGraphics
g.FillEllipse(Brushes.Black, New
System.Drawing.RectangleF(0, 0, 1, 1))
'Pic.Cls()
g.Clear(Color.Black)
LX = 0
LY = -0.5
RX = 0
RY = 0.5
For Q = 0 To HBuffer - 2 Step Stp
K = Q
K = K - (K Mod 2)
LVal = DataBuff(K + 1) / 65536.0# - 0.5
RVal = DataBuff(K) / 65536.0# + 0.5
'Pic.Line (LX, LY) - (K, LVal)
g.DrawLine(Pens.Black, LX, LY, K, LVal)
'Pic.Line (RX, RY) - (K, RVal)
g.DrawLine(Pens.Black, RX, RY, K, RVal)
LX = K
LY = LVal
RX = K
RY = RVal
Next Q
End If
End Sub
End Class
---------------------------------------------------------------------------------------------------
frmMain.Designer.vb:
---------------------------------------------------------------------------------------------------
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class frmMain
#Region "Windows Form Designer generated code "
<System.Diagnostics.DebuggerNonUserCode()> Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
End Sub
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> Protected Overloads
Overrides Sub Dispose(ByVal Disposing As Boolean)
If Disposing Then
If Not components Is Nothing Then
components.Dispose()
End If
End If
MyBase.Dispose(Disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
Public ToolTip1 As System.Windows.Forms.ToolTip
Public WithEvents picWave As System.Windows.Forms.PictureBox
Public WithEvents cmdStopRec As System.Windows.Forms.Button
Public WithEvents cmdStartRec As System.Windows.Forms.Button
'NOTE: The following procedure is required by the Windows Form
Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
Dim resources As System.Resources.ResourceManager = New
System.Resources.ResourceManager(GetType(frmMain))
Me.components = New System.ComponentModel.Container()
Me.ToolTip1 = New System.Windows.Forms.ToolTip(components)
Me.picWave = New System.Windows.Forms.PictureBox
Me.cmdStopRec = New System.Windows.Forms.Button
Me.cmdStartRec = New System.Windows.Forms.Button
Me.SuspendLayout()
Me.ToolTip1.Active = True
Me.FormBorderStyle =
System.Windows.Forms.FormBorderStyle.FixedSingle
Me.Text = "Voice data..."
Me.ClientSize = New System.Drawing.Size(264, 148)
Me.Location = New System.Drawing.Point(3, 22)
Me.MaximizeBox = False
Me.StartPosition =
System.Windows.Forms.FormStartPosition.CenterScreen
Me.Font = New System.Drawing.Font("Arial", 8!,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point,
CType(0, Byte))
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.SystemColors.Control
Me.ControlBox = True
Me.Enabled = True
Me.KeyPreview = False
Me.MinimizeBox = True
Me.Cursor = System.Windows.Forms.Cursors.Default
Me.RightToLeft = System.Windows.Forms.RightToLeft.No
Me.ShowInTaskbar = True
Me.HelpButton = False
Me.WindowState = System.Windows.Forms.FormWindowState.Normal
Me.Name = "frmMain"
Me.picWave.BackColor = System.Drawing.Color.Black
Me.picWave.ForeColor = System.Drawing.Color.White
Me.picWave.Size = New System.Drawing.Size(178, 64)
Me.picWave.Location = New System.Drawing.Point(42, 18)
Me.picWave.TabIndex = 2
Me.picWave.Font = New System.Drawing.Font("Arial", 8!,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point,
CType(0, Byte))
Me.picWave.Dock = System.Windows.Forms.DockStyle.None
Me.picWave.CausesValidation = True
Me.picWave.Enabled = True
Me.picWave.Cursor = System.Windows.Forms.Cursors.Default
Me.picWave.RightToLeft = System.Windows.Forms.RightToLeft.No
Me.picWave.TabStop = True
Me.picWave.Visible = True
Me.picWave.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Normal
Me.picWave.BorderStyle =
System.Windows.Forms.BorderStyle.FixedSingle
Me.picWave.Name = "picWave"
Me.cmdStopRec.TextAlign =
System.Drawing.ContentAlignment.MiddleCenter
Me.cmdStopRec.Text = "Stop Recording"
Me.cmdStopRec.Enabled = False
Me.cmdStopRec.Size = New System.Drawing.Size(106, 31)
Me.cmdStopRec.Location = New System.Drawing.Point(141, 99)
Me.cmdStopRec.TabIndex = 1
Me.cmdStopRec.Font = New System.Drawing.Font("Arial", 8!,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point,
CType(0, Byte))
Me.cmdStopRec.BackColor = System.Drawing.SystemColors.Control
Me.cmdStopRec.CausesValidation = True
Me.cmdStopRec.ForeColor = System.Drawing.SystemColors.ControlText
Me.cmdStopRec.Cursor = System.Windows.Forms.Cursors.Default
Me.cmdStopRec.RightToLeft = System.Windows.Forms.RightToLeft.No
Me.cmdStopRec.TabStop = True
Me.cmdStopRec.Name = "cmdStopRec"
Me.cmdStartRec.TextAlign =
System.Drawing.ContentAlignment.MiddleCenter
Me.cmdStartRec.Text = "Start Recording"
Me.cmdStartRec.Size = New System.Drawing.Size(106, 31)
Me.cmdStartRec.Location = New System.Drawing.Point(24, 99)
Me.cmdStartRec.TabIndex = 0
Me.cmdStartRec.Font = New System.Drawing.Font("Arial", 8!,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point,
CType(0, Byte))
Me.cmdStartRec.BackColor = System.Drawing.SystemColors.Control
Me.cmdStartRec.CausesValidation = True
Me.cmdStartRec.Enabled = True
Me.cmdStartRec.ForeColor = System.Drawing.SystemColors.ControlText
Me.cmdStartRec.Cursor = System.Windows.Forms.Cursors.Default
Me.cmdStartRec.RightToLeft = System.Windows.Forms.RightToLeft.No
Me.cmdStartRec.TabStop = True
Me.cmdStartRec.Name = "cmdStartRec"
Me.Controls.Add(picWave)
Me.Controls.Add(cmdStopRec)
Me.Controls.Add(cmdStartRec)
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
#End Region
End Class
.
- Follow-Ups:
- Re: DX8 SetNotificationPositions, Error 32811
- From: Ralph
- Re: DX8 SetNotificationPositions, Error 32811
- Prev by Date: Re: Access Command Button
- Next by Date: Re: DX8 SetNotificationPositions, Error 32811
- Previous by thread: Re: Access Command Button
- Next by thread: Re: DX8 SetNotificationPositions, Error 32811
- Index(es):
Loading