VB6 code migration to C# - Window on top

G

Guest

Hello all,

Does anyone have any C# code to replace this working VB6 code ... when i
move it to VB.NET is does not work as illustrated below. Ineed to keep the
form or web form window on top until a button is clicked?

Thanks in advance... :)



Public Class Form1
Inherits System.Windows.Forms.Form
' VB6 CODE
Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal
hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long,
ByVal cy As Long, ByVal wFlags As Long) As Long
Const conHwndTopmost = -1
Const conSwpNoActivate = &H10
Const conSwpShowWindow = &H40

#Region " Windows Form Designer generated code "

Public Sub New()
MyBase.New()

'This call is required by the Windows Form Designer.
InitializeComponent()

'Add any initialization after the InitializeComponent() call

End Sub

'Form overrides dispose to clean up the component list.
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

'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.
Friend WithEvents Button1 As System.Windows.Forms.Button
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.Button1 = New System.Windows.Forms.Button
Me.SuspendLayout()
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(56, 40)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(128, 23)
Me.Button1.TabIndex = 0
Me.Button1.Text = "end focus"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(656, 405)
Me.Controls.Add(Me.Button1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)

End Sub

#End Region

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'DIM FOR VB.NET
Dim hwnd As Long
'VB6 WORKING CODE
SetWindowPos(hwnd, conHwndTopmost, 100, 100,
400, 141, conSwpNoActivate Or conSwpShowWindow)
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
'window close
End
End Sub
End Class
 
D

Dmitriy Lapshin [C# / .NET MVP]

Hello,
'DIM FOR VB.NET
Dim hwnd As Long
'VB6 WORKING CODE
SetWindowPos(hwnd, conHwndTopmost, 100, 100,
400, 141, conSwpNoActivate Or conSwpShowWindow)

1. hwnd in VB6 is not just an unitialized variable, it's a form's property
returning the form's window handle. You should use this.Handle in C# instead
of just declaring an hwnd variable.
2. You should re-declare SetWindowPos as follows:

[DllImport]
public static System.Int32 SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter,
System.Int32 x, System.Int32 y, System.Int32 cx, System.Int32 cy,
System.UInt32 flags);
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top