在上一回我们已经实现VB调用VC函数并传递一个long、窗口句柄、字符串指针、结构体指针的参数,并取得了函数的返回值。 这一回我们将实践一下如何传递多个参数。
打开上一回的两个工程(LinkWithVC, vcobj). 切换到VB在form上添加一个按钮 name: cmdTestStruct2, 标题 Test Struct 2。再在ModVC中添加如下代码
Public Function TestArg(lppt1 As POINTAPI, lppt2 As POINTAPI) As Long
Rem
End Function
阅读全文……
VC VB 的混合编译(三) [ 2005-04-11 | VB相关 | 本站原创 ]
VC_VB的混合编译(二)实践进阶片 [ 2005-04-07 | VB相关 | 本站原创 ]
在上一回我们已经实现VC,VB代码的混合编译,并成功的在VB代码中调用了VC代码中的一个无参数的函数,并取得了函数的返回值. 这一回我们将实践一下如何调用带参数的函数.
打开上一会的两个工程(LinkWithVC, vcobj). 切换到VB在form上添加一个按钮 name: cmdTestLong, 标题 TestLong. 在form上添加一个文本框txtInput 内容填 8. 再在ModVC中添加如下代码:
Public Function TestLong(ByVal lng As Long) As Long
TestLong = -1
End Function
阅读全文……
打开上一会的两个工程(LinkWithVC, vcobj). 切换到VB在form上添加一个按钮 name: cmdTestLong, 标题 TestLong. 在form上添加一个文本框txtInput 内容填 8. 再在ModVC中添加如下代码:
Public Function TestLong(ByVal lng As Long) As Long
TestLong = -1
End Function
阅读全文……
VC_VB的混合编译(一) 原理片 [ 2005-04-07 | VB相关 | 本站原创 ]
原理:
Visual Basic 从5.0起就可以象C++那样将程序编译成本地码.VB将程序中的每个form, bas, cls, vbp 编译为obj文件,然后再调用连接程序将它们连接成EXE, 这个过程是自动的,连接完成后它会自动删除中介生成的OBJ文件. 要实现我们的目的就需要在连接程序连接输出EXE之前对OBJ文件进行处理,将C++编译的OBJ文件换进去.
准备:
我们需要自己些一个连接程序,当然这个程序不是要实现连接的功能,只需要实现 预先处理 OBJ 文件, 获取VB传递给连接程序的参数, 对参数进行 必要的修改, 然后 调用原连接程序 完成连接工作. 我们将vb目录下的Link.exe 改名为 vblink.exe, 再将我们写的link.exe 放到这个目录中. 这个Fake Link 程序我已经完成了, 在压缩包包中可以找到.
先讲讲这个Fake Link 程序是怎么工作的:
阅读全文……
Visual Basic 从5.0起就可以象C++那样将程序编译成本地码.VB将程序中的每个form, bas, cls, vbp 编译为obj文件,然后再调用连接程序将它们连接成EXE, 这个过程是自动的,连接完成后它会自动删除中介生成的OBJ文件. 要实现我们的目的就需要在连接程序连接输出EXE之前对OBJ文件进行处理,将C++编译的OBJ文件换进去.
准备:
我们需要自己些一个连接程序,当然这个程序不是要实现连接的功能,只需要实现 预先处理 OBJ 文件, 获取VB传递给连接程序的参数, 对参数进行 必要的修改, 然后 调用原连接程序 完成连接工作. 我们将vb目录下的Link.exe 改名为 vblink.exe, 再将我们写的link.exe 放到这个目录中. 这个Fake Link 程序我已经完成了, 在压缩包包中可以找到.
先讲讲这个Fake Link 程序是怎么工作的:
阅读全文……
用VB写MOUSE穿透的窗体 [ 2005-04-06 | VB相关 | 本站原创 ]
MOUSE穿透,就是写一个半透明的窗体,点击窗体的时候它下面的程序产生事件。
---------------------------------------------------------------
[code]
Const LWA_COLORKEY = &H1
阅读全文……
---------------------------------------------------------------
[code]
Const LWA_COLORKEY = &H1
阅读全文……
让vb自动改变控件的大小 [ 2004-08-06 | VB相关 | Original ]
当窗体大小改变时,如何动态的改变控件的大小是许多VB程序员头痛
的事。有的人设置窗体Resizable但却不改变控件的大小;有的人则根据
控件的绝对位置与窗口大小相加减的办法来重新定位控件与改变大小,这
种办法比较繁琐,且不可重用;当然也有人则限定窗口干脆不让改变。有
没有一种简便易行的办法?答案是肯定的,下面给出一个一劳永逸的办法,...More...
阅读全文……
的事。有的人设置窗体Resizable但却不改变控件的大小;有的人则根据
控件的绝对位置与窗口大小相加减的办法来重新定位控件与改变大小,这
种办法比较繁琐,且不可重用;当然也有人则限定窗口干脆不让改变。有
没有一种简便易行的办法?答案是肯定的,下面给出一个一劳永逸的办法,...More...
阅读全文……
利用VB捕捉并保存屏幕图像 [ 2004-08-06 | VB相关 | Original ]
大家知道在VB下利用API函数Bitblt可以将屏幕或者窗口上的图像拷贝到VB中
的PictureBox对象中,但是如果简单地利用PictureBox的SavePicture函数来保存
图像,会发现什么也保存不了。这篇文章就是介绍如何捕获并利用Windows下的OLE ...More...
阅读全文……
的PictureBox对象中,但是如果简单地利用PictureBox的SavePicture函数来保存
图像,会发现什么也保存不了。这篇文章就是介绍如何捕获并利用Windows下的OLE ...More...
阅读全文……
隐藏任务栏 [ 2004-08-06 | VB相关 | Original ]
下面的代码就可以轻松搞定。
Private Const SWP_HIDEWINDOW = &H80
Private Const SWP_SHOWWINDOW = &H40
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Function SetWindowPos Lib "user32" Alias "SetWindowPos" (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 ...More...
阅读全文……
Private Const SWP_HIDEWINDOW = &H80
Private Const SWP_SHOWWINDOW = &H40
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Function SetWindowPos Lib "user32" Alias "SetWindowPos" (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 ...More...
阅读全文……
使本程序不出现在Windows的结束任务对话框中 (win9x) [ 2004-08-06 | VB相关 | Original ]
VB中创建可以输出函数的DLL [ 2004-08-06 | VB相关 | Original ]
VB中创建的DLL只是COM组件,无法作为输出函数的DLL。今天从袁波哪里搞到一种可以创建
输出函数的DLL的方法。
VB编译文件实际上采取了两次编译的方法,首先是调用c2.exe产生OBJ文件,然后调用Lin
k.exe连接。如果在link的时候添加EXPORT选项,实际上是可以输出函数的。但是,在VB的
工程选项中将这些屏蔽了。而且过分的是:VB在Build完成后会将OBJ文件删除,这样就无...More...
阅读全文……
输出函数的DLL的方法。
VB编译文件实际上采取了两次编译的方法,首先是调用c2.exe产生OBJ文件,然后调用Lin
k.exe连接。如果在link的时候添加EXPORT选项,实际上是可以输出函数的。但是,在VB的
工程选项中将这些屏蔽了。而且过分的是:VB在Build完成后会将OBJ文件删除,这样就无...More...
阅读全文……