OnLoadExternalResourceByRelativePath

Syntax

public delegate void OnLoadExternalResourceByRelativePathEventHandler(
  object sender,
  String RelativePath,
  Stream ContentStream,
  ref bool Handled);
 
public event OnLoadExternalResourceByRelativePathEventHandler OnLoadExternalResourceByRelativePath;

Description

Triggered when a movie tries to load an external resource (such as an image or XML file) using a relative path.

See also OnLoadExternalResourceByRelativePath.

C# Example

private void OnLoadExternalResourceByRelativePath(object sender, String strRelativePath, System.IO.Stream Stream, ref bool Handled)
{
    System.IO.Stream FromStream = null;
 
    if (strRelativePath == "images/embedded_image1.jpg")
        FromStream = this.GetType().Assembly.GetManifestResourceStream("Sample6_ExternalResourcesEmbedding.Resources.embedded_images.embedded_image1.jpg");
    if (strRelativePath == "images/embedded_image2.jpg")
        FromStream = this.GetType().Assembly.GetManifestResourceStream("Sample6_ExternalResourcesEmbedding.Resources.embedded_images.embedded_image2.jpg");
    if (strRelativePath == "images/embedded_image3.jpg")
        FromStream = this.GetType().Assembly.GetManifestResourceStream("Sample6_ExternalResourcesEmbedding.Resources.embedded_images.embedded_image3.jpg");
    if (strRelativePath == "images/embedded_image4.jpg")
        FromStream = this.GetType().Assembly.GetManifestResourceStream("Sample6_ExternalResourcesEmbedding.Resources.embedded_images.embedded_image4.jpg");
    if (strRelativePath == "images/embedded_image5.jpg")
        FromStream = this.GetType().Assembly.GetManifestResourceStream("Sample6_ExternalResourcesEmbedding.Resources.embedded_images.embedded_image5.jpg");
    if (strRelativePath == "images/external_image.jpg")
    {
        if (OpenJPEGFileDialog.ShowDialog() == DialogResult.OK)
            FromStream = OpenJPEGFileDialog.OpenFile();
    }
 
    if (FromStream != null)
    {
        const int size = 64 * 1024;
        byte[] buffer = new byte[size];
        int ReadBytes;
 
        while ((ReadBytes = FromStream.Read(buffer, 0, size)) > 0)
        {
            try
            {
                Stream.Write(buffer, 0, size);
            }
            catch (System.IO.IOException)
            {
                // Loading is interrupted
                break;
            }
        }
 
        Stream.Close();
 
        Handled = true;
    }
}

VB.Net Example

Private Sub f_in_box__control1_OnLoadExternalResourceByRelativePath(ByVal sender As Object, ByVal URL As String, ByVal Stream As System.IO.Stream, ByRef Handled As Boolean) Handles f_in_box__control1.OnLoadExternalResourceByRelativePath
 
    Dim FromStream As System.IO.Stream = Nothing
 
    If URL = "images/embedded_image1.jpg" Then
        FromStream = Me.GetType().Assembly.GetManifestResourceStream("Sample6_ExternalResourcesEmbedding.embedded_image1.jpg")
    End If
 
    If URL = "images/embedded_image2.jpg" Then
        FromStream = Me.GetType().Assembly.GetManifestResourceStream("Sample6_ExternalResourcesEmbedding.embedded_image2.jpg")
    End If
 
    If URL = "images/embedded_image3.jpg" Then
        FromStream = Me.GetType().Assembly.GetManifestResourceStream("Sample6_ExternalResourcesEmbedding.embedded_image3.jpg")
    End If
 
    If URL = "images/embedded_image4.jpg" Then
        FromStream = Me.GetType().Assembly.GetManifestResourceStream("Sample6_ExternalResourcesEmbedding.embedded_image4.jpg")
    End If
 
    If URL = "images/embedded_image5.jpg" Then
        FromStream = Me.GetType().Assembly.GetManifestResourceStream("Sample6_ExternalResourcesEmbedding.embedded_image5.jpg")
    End If
 
    If URL = "images/external_image.jpg" Then
        If OpenJPEGFileDialog.ShowDialog() = DialogResult.OK Then
            FromStream = OpenJPEGFileDialog.OpenFile()
        End If
    End If
 
    If Not FromStream Is Nothing Then
 
        ' Also you can write content in a separate thread
 
        Const Size = 64 * 1024
        Dim buffer(Size) As Byte
        Dim ReadBytes As Integer
 
        While True
 
            ReadBytes = FromStream.Read(buffer, 0, Size)
 
            If ReadBytes = 0 Then Exit While
 
            Try
                Stream.Write(buffer, 0, ReadBytes)
            Catch e As System.IO.IOException
                ' Loading is interrupted
                Exit While
            End Try
 
        End While
 
        Stream.Close()
 
        Handled = True
 
    End If
 
End Sub