Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Помогите разбить код на основной проект и длл Добавлено: 01.12.06 17:20  

Автор вопроса:  Skywalker | Web-сайт: iSkywalker.ru | ICQ: 300-70-6пятьЪ 
вот код:


Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D
Public Class Form1
    Private device As Device = Nothing
    Public Function InitializeGraphics() As Boolean
        Try
            Dim presentParams As New PresentParameters
            presentParams.Windowed = True
            presentParams.SwapEffect = SwapEffect.Discard
            device = New Device(0, DeviceType.Hardware, Me, _
                CreateFlags.SoftwareVertexProcessing, presentParams)
            Return True
        Catch e As DirectXException
            Return False
        End Try
    End Function
    Shared Sub Main()
        Dim frm As New Form1()
        If Not frm.InitializeGraphics() Then
            MessageBox.Show("Direct3D не инициализируется.")
            Return
        End If
        frm.Show()
        While frm.Created
            frm.Render()
            Application.DoEvents()
        End While
    End Sub
    Private Sub Render()
        If device Is Nothing Then
            Return
        End If
        device.Clear(ClearFlags.Target, System.Drawing.Color.Blue, 1.0F, 0)
        device.BeginScene()
        device.EndScene()
        device.Present()
    End Sub
End Class



как разделить его на длл и основной проект, чтоб в проекте например написать


dim eng as new engine


Ну а дальше я не знаю или нужно создавать форму в проекте и посылать ее аргументом в длл или чтоб она прям в длл создавалась... В общем основная проблема, что я не пойму как разделить это на длл и основной проект. Помогите.

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #1 Добавлено: 01.12.06 19:54
''' <summary>
''' VS 2005
''' Direct3D TEST
''' </summary>
''' <remarks>
''' DO NOT RUN FROM IDE!!!
''' ADD REFERENCE:
''' - Microsoft.DirectX
''' - Microsoft.DirectX.Direct3D
''' </remarks>
Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, _
                           ByVal e As System.EventArgs) Handles Me.Load
        '// Имитируем игровое поле
        Me.Text = ";Direct3D Test"
        Me.WindowState = FormWindowState.Maximized
        Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None

    End Sub

    Private Sub Form1_Shown(ByVal sender As Object, _
                            ByVal e As System.EventArgs) Handles Me.Shown

        Dim engine As New Engine(Me)

        If Not engine.IsInitialized Then
            MessageBox.Show(";Direct3D is not Initialized", _
                            Me.Text, _
                            MessageBoxButtons.OK, _
                            MessageBoxIcon.Error)
            Me.Close()
            Return
        End If

        Do
            engine.Render()
            Application.DoEvents()
        Loop While Me.Created

    End Sub

    Private Sub Form1_DoubleClick(ByVal sender As Object, _
                                  ByVal e As System.EventArgs) Handles Me.DoubleClick
        '// Закрытие по двойному клику
        Me.Close()
    End Sub

End Class


Imports System.Windows.Forms
Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D

Public Class Engine

    Private WithEvents _context As Form

    Public Sub New(ByVal context As Form)

        Dim presentParams As New PresentParameters
        presentParams.Windowed = True
        presentParams.SwapEffect = SwapEffect.Discard

        Try
            _device = New Device(0, DeviceType.Hardware, context, _
                CreateFlags.SoftwareVertexProcessing, presentParams)
            _isInitialized = True
        Catch e As DirectXException
            _isInitialized = False
        End Try

    End Sub

    Private _isInitialized As Boolean
    Public ReadOnly Property IsInitialized() As Boolean
        Get
            Return _isInitialized
        End Get
    End Property

    Private _device As Device
    Public ReadOnly Property Device() As Device
        Get
            Return _device
        End Get
    End Property

    Public Sub Render()

        If _isInitialized And _
           _device IsNot Nothing Then

            With _device
                .Clear(ClearFlags.Target, _
                       System.Drawing.Color.Blue, _
                       1.0F, 0)
                .BeginScene()
                .EndScene()
                .Present()
            End With

        End If

    End Sub

    Private Sub _context_FormClosing(ByVal sender As Object, _
                                     ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                     Handles _context.FormClosing

        If _device IsNot Nothing Then _device.Dispose()

    End Sub
End Class

Ответить

Номер ответа: 2
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #2 Добавлено: 01.12.06 22:01
P.S. В конструкторе класса еще допиши ... а то я забыл.. ((
_context = context

Ответить

Номер ответа: 3
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #3
Добавлено: 02.12.06 18:04
благодарю)

Ответить

Номер ответа: 4
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #4
Добавлено: 02.12.06 22:42
а не подскажешь случайно где найти материал по директиксу для вб нет. а то я чет мало нашел. сдк рад бы скачать да у меня модем 28.8)))

Ответить

Номер ответа: 5
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 02.12.06 23:22
вот тут я тебе не помощник.. сорри, я с ним вообще дела не имел... ((

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам