vb.net的调用约定的简单介绍

求大神修改 vb.net SetWaitableTimer(mlTimer, ft, 0, 0, 0, 0) 导致堆栈不对称 怎么修改?

Imports System.Runtime.InteropServices

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册雅安服务器托管、营销软件、网站建设、雁峰网站维护、网站推广。

Module APIs

StructLayout(LayoutKind.Sequential)

Public Structure FILETIME

Public dwLowDateTime As UInteger

Public dwHighDateTime As UInteger

Public ReadOnly Property Value() As ULong

Get

Return CType(dwHighDateTime  32, ULong) + dwLowDateTime

End Get

End Property

End Structure

Public Delegate Sub TimerCompleteDelegate()

DllImport("kernel32.dll")

Public Function CreateWaitableTimer(lpTimerAttributes As IntPtr, bManualReset As Boolean, lpTimerName As String) As IntPtr

End Function

DllImport("kernel32.dll")

Public Function SetWaitableTimer(hTimer As IntPtr, ByRef ft As Long, lPeriod As Int32, pfnCompletionRoutine As TimerCompleteDelegate, pArgToCompletionRoutine As IntPtr, fResume As Boolean) As Boolean

End Function

Public Function SetWaitableTimer(hTimer As IntPtr, ByRef ft As Long, lPeriod As Int32) As Boolean

Return SetWaitableTimer(hTimer, ft, lPeriod, Nothing, IntPtr.Zero, True)

End Function

End Module

SetWaitableTimer的声明错了

vb.net无法引用C++编写的dll怎么办?

如果DLL不是你写的,且你要调用的函数不是__stdcall声明,VB直接调用是会报错的

如果DLL是你写的,注意调用约定问题,并看以下代码

***************************************************

以下是DLL代码

.cpp里这么写

1extern "C"__declspec(dllexport) void __stdcall HelloWorld()

2{3 MessageBox(NULL,"HelloWorld","HelloWorld",NULL);4}

.def里这么写

LIBRARY "XXXX"

EXPORTS

; 此处以下添加

HelloWorld@1

*************************************************

vb里这么写

1 Public Declare Sub HelloWorld Lib "XXXX.dll" ()

然后调用就可以了,上面是VB的代码,或许VB.net的也差不多

VB.net过程的调用

Sub过程实现:

Sub FactsSub(ByVal intN As Integer, ByRef result As Long)

Dim i As Integer

Dim lngResult As Long

lngResult = 1

For i = 1 To intN

lngResult *= i

Next

result = lngResult

End Sub

Private Sub btnSub_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSub.Click

Dim i As Integer

Dim sum As Long = 0

Dim result As Long

For i = 1 To 10

FactsSub(i, result)

sum += result

Next

MsgBox("过程实现 1! + 2! + 3! + … + 10! = " sum)

End Sub

Function函数实现:

Function FactsFunction(ByVal intN As Integer) As Long

Dim i As Integer

Dim lngResult As Long

lngResult = 1

For i = 1 To intN

lngResult *= i

Next

Return lngResult

End Function

Private Sub btnFunction_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFunction.Click

Dim i As Integer

Dim sum As Long = 0

For i = 1 To 10

sum += FactsFunction(i)

Next

MsgBox("函数实现 1! + 2! + 3! + … + 10! = " sum)

End Sub

VB.net关于类之间函数的调用问题。

如上面所说,你可能还不太了解类、函数等的作用。

类可以用来封装一系列操作,或者是一类对象的特性。像上面的描述,有可能是滥用类了。

建议你这样,弄一个专门的运算类,里面有四个运算的函数,比如:

Class 运算

Shared Function 加(ByVal 加数1 As Decimal, ByVal 加数2 As Decimal) As Decimal

'举个例子

Return 加数1 + 加数2 '百度打不出英文加号,你自己改一下

Exit Function

End Function

Shared Function 减(ByVal 被减数 As Decimal, ByVal 减数 As Decimal) As Decimal

'举个例子

Return 被减数 - 减数

Exit Function

End Function

End Class

上面我写了两个例子,你可以照抄然后自己写乘除的,总之不要滥用类就行。

PS:Shared函数的使用不需要类被实例化,可以直接这样使用:

Msgbox(运算.加(1,2).ToString)

你会发现“运算”是蓝色的

VB.net如何调用C++ DLL,有重谢

如果DLL不是你写的,且你要调用的函数不是__stdcall声明,VB直接调用是会报错的

如果DLL是你写的,注意调用约定问题,并看以下代码

***************************************************

以下是DLL代码

.cpp里这么写

extern "C"__declspec(dllexport) void __stdcall HelloWorld()

{

MessageBox(NULL,"HelloWorld","HelloWorld",NULL);

}

.def里这么写

LIBRARY      "XXXX"

EXPORTS

; 此处以下添加

HelloWorld@1

*************************************************

vb里这么写

Public Declare Sub HelloWorld Lib "XXXX.dll" ()

然后调用就可以了,上面是VB的代码,或许VB.net的也差不多

VB.net中怎么调用控件的事件

软糖来回答罗。

“调用事件”有歧义,你的意思是不是下面两种:

调用事件处理方法

直接调用对象名.方法名

'例如有这样一个按钮点击事件处理程序

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

秒表.Start()

End Sub

'调用它直接用

Button1_Click(me, new EventArgs())

引发事件

Button1.Click.Invoke(me, new EventArgs())

另外 RaiseEvent 也可以引发事件,但不能使用 RaiseEvent 来引发派生窗体的控件事件,只有自己定义的类的事件才能用它引发。

如满意,请采纳,谢谢。


分享文章:vb.net的调用约定的简单介绍
文章URL:http://scyanting.com/article/hhpscg.html