成都网站建设设计

将想法与焦点和您一起共享

vb.net消息处理函数 windows消息处理函数

vb.net 如何传递事件到函数,并且函数 执行那个事件

上委托啊,单或者多播任选。

枣庄网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、自适应网站建设等网站项目制作,到程序开发,运营维护。创新互联于2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。

"线程来操作 结束后 响应事件"

直接用线程回调就行了

vb.net2008拦截关机或注销消息

在SystemEvents类中 可以 用户试图注销或关闭系统时发生。 (当用户试图注销或关闭系统时发生。当用户试图注销或关闭系统时发生。) 这个 事件处理函数中 可以找到如下方法

Private Shared WM_QUERYENDSESSION As Integer = H11

Private Shared systemShutdown As Boolean = False

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)

If m.Msg = WM_QUERYENDSESSION Then

'MessageBox.Show("queryendsession: this is a logoff, shutdown, or reboot")

systemShutdown = True

End If

' If this is WM_QUERYENDSESSION, the closing event should be raised in the base WndProc.

MyBase.WndProc(m)

End Sub 'WndProc

Private Sub Form1_Closing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing

If (systemShutdown) Then

' Reset the variable because the user might cancel the shutdown.

systemShutdown = False

If (System.Windows.Forms.DialogResult.Yes = _

MessageBox.Show("My application", "Do you want to save your work before logging off?", MessageBoxButtons.YesNo)) Then

e.Cancel = True

Else

e.Cancel = False

End If

End If

End Sub

vb.net怎么遍历所有控件,使Click都执行相同的过程

c# 用程序转的,也不知道对不对。你看看有没有帮助 ,这是遍历所有控件,还有一个办法就是重载form的消息处理函数应该也是可以的。

STAThread _

Public Shared Sub Main(args As String())

Dim button = New Button()

button.Text = "我是按钮"

button.Dock = DockStyle.Fill

Dim form = New Form()

form.Controls.Add(button)

CapturehMouseClickEvent(form)

form.ShowDialog()

End Sub

Private Shared Sub CapturehMouseClickEvent(control As Control)

AddHandler control.Click, AddressOf ControlOnClick

For Each subControl As Control In control.Controls

CapturehMouseClickEvent(subControl)

Next

End Sub

Private Shared Sub ControlOnClick(sender As Object, eventArgs As EventArgs)

Debug.WriteLine("控制被单击")

End Sub

如何正确理解VB.NET函数调用

1. Shared Function System.Runtime.

InteropServices.DLLimport("user32.dll")

2. MessageBoxA(ByVal hwnd As Integer,

ByVal text As String, ByVal

lpcaption As String, ByVal

wtype As Integer) As Integer

3. End Function

首先integer被作为32位数据替代了long(long是64位)

System是Net语言中的一个族,System.Runtime.InteropServices是system中的一个类。System.Runtime.InteropServices.DLLimpor是其中的一个方法。调用DLL的API

接口,这个的意思就是vb6的lib"user32", share是共享的意思,例如:

1. Public Class classA

2. Shared Function System.Runtime.

InteropServices.DLLimport("user32.dll")

MessageBoxA(ByVal h As Integer,

ByVal m As String, ByVal c As

String, ByVal type As Integer) As Integer

3. End Function

4. End Class

你可以这样调用 classA.MessageboxA 但是如果没有这个share 在class后打点就没有MessageboxA的成员出现了 ,现在你就象以前一样的使用他吧。

其实上面这个VB.NET函数调用方法并不正确,我们仍旧要使用API声明,只是换了一各形式

如果你认为这就是VB.NET就错了,看看这个:

system.WinForms.MessageBox.Show("对话内容写在这里", "标题写在这里", messagebox.OK BitOr messagebox.IconAsterisk)

这就是面向对象,你已经完成了所有的任务。不需要任何的API声明。不需要写多余的代码。

1. messagebox.IconAsterisk=惊叹号图标

2. messagebox.IconError=错误图标

3. messagebox.IconExclamation=警告图标

4. messagebox.IconHand=错误图标

5. messagebox.IconInformation=提示图标

所经点NET就是打点到达,在族后面打点,在类后面打点,在对象后面打点。第二个问题就是类与类之间相互的关系,Net在网上处理人与人的关系,在程序语言中处理类与类的关系。倒底是加不加share,倒底是类后面打点,还是Dim成一个对象(把他当一个变量吧)再说,是等于class,还是New class.是dim xxx as class=new class 还是dim xxx as new class

就是这样VB.NET函数调用将更简单,不须要研究一些很难的东西。

vb.net 如何让两个窗体同时具有焦点

一个时刻只有一个窗体能获得焦点。关键是窗体收到

WM_KILLFOCUS

消息时的重绘。如果你只是想让窗体看起来并没有什么不同,就这样吧。我用

VB6,所以写的都是

API,VB.NET

的库不是很熟,所以……将就一下吧。

调用

SetWindowLong,使窗体的消息处理链接到新的窗口函数

NewWndProc,然后在

NewWndProc

里检测到

WM_KILLFOCUS

时就将其移出消息队列即可。完毕之后调用原来的窗口函数。

VB怎么实现滚动条对鼠标中轴的响应啊?

VB可以使用子类化处理鼠标滚轮消息。

新建工程

在窗体中添加滚动条VScroll1

'窗体代码

Private Sub Form_Load()

'取得控件的句柄

hwndVS = VScroll1.hwnd

'保存smMap控件的默认窗口消息处理函数地址

OldWindowProc = GetWindowLong(VScroll1.hwnd, GWL_WNDPROC)

'将smMap控件的消息处理函数指定为自定义函数NewWindowProc

Call SetWindowLong(VScroll1.hwnd, GWL_WNDPROC, AddressOf NewWindowProc)

End Sub

添加一模块:

Option Explicit

Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Public Const GWL_WNDPROC = -4

Public Const WM_MOUSEWHEEL = H20A

Public OldWindowProc As Long '用来保存系统默认的窗口消息处理函数的地址

Public hwndVS As Long '用来保存控件的句柄

'自定义的消息处理函数

Public Function NewWindowProc(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

On Error Resume Next

If msg = WM_MOUSEWHEEL Then

'则对鼠标滚轮事件进行处理

If wParam = -7864320 Then '向下滚动

Form1.VScroll1.Value = Form1.VScroll1.Value + 1

ElseIf wParam = 7864320 Then '向上滚动

Form1.VScroll1.Value = Form1.VScroll1.Value - 1

End If

Else

'调用默认窗口消息处理函数

NewWindowProc = CallWindowProc(OldWindowProc, hwnd, msg, wParam, lParam)

End If

End Function


网站栏目:vb.net消息处理函数 windows消息处理函数
本文链接:http://chengdu.cdxwcx.cn/article/docdgih.html