Start from a main routine: Difference between revisions

(Added Seed7 example)
Line 408:
 
* Click the OK button.
 
=={{header|Visual Basic .NET}}==
 
VB.NET console apps always start in Sub Main, but Windows Forms apps use the application framework by default, meaning the compiler generates a Sub Main that shows a selected startup form. To parse command-line parameters or cancel the application startup, either the appropriate methods in the MyApplication class can be overridden, or the application framework can be disabled, in which case it is allowed to set the startup object to be a method.
 
===MyApplication===
 
Comments copied from the metadata of System.Windows.Forms.dll.
 
OnInitialize can cancel startup by returning false, and the handler for Startup can cancel startup by setting e.Cancel to True.
 
<lang vbnet>Imports System.Collections.ObjectModel
Imports Microsoft.VisualBasic.ApplicationServices
 
Namespace My
' The following events are available for MyApplication:
' Startup: Raised when the application starts, before the startup form is created.
' Shutdown: Raised after all application forms are closed. This event is not raised if the application terminates abnormally.
' UnhandledException: Raised if the application encounters an unhandled exception.
' StartupNextInstance: Raised when launching a single-instance application and the application is already active.
' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.
 
Partial Friend Class MyApplication
'''<summary>Sets the visual styles, text display styles, and current principal for the main application thread
'''(if the application uses Windows authentication), and initializes the splash screen, if defined.</summary>
'''<param name="commandLineArgs">A <see cref="ReadOnlyCollection(Of T)" /> of <see langword="String" />,
'''containing the command-line arguments as strings for the current application.</param>
'''<returns>A <see cref="T:System.Boolean" /> indicating if application startup should continue.</returns>
Protected Overrides Function OnInitialize(commandLineArgs As ReadOnlyCollection(Of String)) As Boolean
Console.WriteLine("oninitialize; args: " & String.Join(", ", commandLineArgs))
Return MyBase.OnInitialize(commandLineArgs)
End Function
 
' WindowsFormsApplicationBase.Startup occurs "when the application starts".
Private Sub MyApplication_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup
Console.WriteLine("startup; args: " & String.Join(", ", e.CommandLine))
End Sub
 
'''<summary>Provides the starting point for when the main application is ready to start running, after the
'''initialization is done.</summary>
Protected Overrides Sub OnRun()
Console.WriteLine("onrun")
MyBase.OnRun()
End Sub
End Class
End Namespace</lang>
 
{{out|input=foo /bar baz "visual basic"}}
<pre>oninitialize; args: foo, /bar, baz, visual basic
startup; args: foo, /bar, baz, visual basic
onrun</pre>
 
===Sub Main===
 
'''In Visual Studio:'''
 
In project properties, create a Sub Main of the appropriate signature, uncheck 'Enable application framework', and set 'Startup object' to 'Sub Main'.
 
'''By editing vbproj:'''
 
Change
<pre><MyType>WindowsForms</MyType></pre>
to
<pre><MyType>WindowsFormsWithCustomSubMain</MyType></pre>
 
and
<pre><StartupObject>[DEFAULT NAMESPACE OF APPLICATION].My.MyApplication</StartupObject></pre>
to
<pre><StartupObject>Sub Main</StartupObject></pre>
 
Main can choose to not call Application.Run, in which case no form is created.
 
<lang vbnet>
Module Main
Sub Main(args As String())
Console.WriteLine("main; args:" & String.Join(", ", args))
Application.Run(New Form1())
End Sub
End Module</lang>
 
{{out|input=foo /bar baz "visual basic"}}
<pre>main; args:foo, /bar, baz, visual basic</pre>
 
=={{header|zkl}}==
Anonymous user